
  /* ============ 主题变量：:root = 暗色（与原配色完全一致），[data-theme="light"] = 亮色覆盖 ============ */
  :root {
    --bg-page: #141416;
    --sidebar-bg: #1a1a1e;
    --panel-bg: #1e1e22;
    --panel-bg-alt: #202024;      /* 合计行 */
    --subrow-bg: #19191d;         /* 展开明细行 */
    --card-bg: #1b1b1f;           /* 人员卡片 */
    --control-bg: #232328;        /* 侧栏按钮 / 弹窗 */
    --control-bg-hover: #2c2c33;
    --btn-bg: #2a2a30;
    --btn-bg-hover: #34343c;
    --pill-bg: #26262c;
    --hist-active-bg: #22222a;
    --input-bg: #141416;

    --text-primary: #eee;
    --text-strong: #fff;
    --text-secondary: #8a8a90;
    --text-muted: #66666e;
    --btn-text: #ddd;
    --mini-btn-text: #bbb;
    --th-text: #9a9aa0;
    --th-hover: #ccc;
    --raw-text: #aaa;
    --modal-h4: #ccc;

    --border: #333;
    --border-strong: #3a3a40;
    --border-subtle: #2c2c31;     /* 表格行分隔线 */
    --border-totals: #44444c;     /* 合计行上边框 / 历史项悬停边框 */

    --accent: #4a6fa5;
    --link: #7a9cc6;
    --money: #e8cf8a;
    --ok: #7bd88a;
    --pending: #e0a34a;
    --rm: #b56a6a;

    --primary-btn-bg: #2c4a75;
    --primary-btn-border: #3a5f92;
    --primary-btn-bg-hover: #345684;
    --primary-btn-text: #fff;
    --danger-btn-bg: #5a2c2c;
    --danger-btn-border: #7a3a3a;
    --danger-btn-text: #f0c8c8;
    --danger-btn-bg-hover: #6a3434;

    --warn-bg: rgba(224,163,74,.13);
    --warn-border: rgba(224,163,74,.45);
    --warn-text: #e8c47e;
    --no-price-bg: rgba(224,163,74,.10);
    --overlay-bg: rgba(0,0,0,.62);
    --chip-stripe: rgba(255,255,255,.55);
    --color-cell-border: rgba(255,255,255,.12);
    --color-cell-selected: #fff;
    /* 角色行底色为 JS 内联低透明度色块：悬停提亮（暗色）/ 压暗加深（亮色） */
    --char-row-hover-filter: brightness(1.15);
    --block-separator: rgba(128,128,128,.35);  /* 主人分块首行分隔线 */
  }
  [data-theme="light"] {
    --bg-page: #f4f5f7;
    --sidebar-bg: #ffffff;
    --panel-bg: #ffffff;
    --panel-bg-alt: #f0f1f3;
    --subrow-bg: #f7f8fa;
    --card-bg: #f7f8fa;
    --control-bg: #ffffff;
    --control-bg-hover: #f0f1f3;
    --btn-bg: #eff0f2;
    --btn-bg-hover: #e3e5e9;
    --pill-bg: #eff0f2;
    --hist-active-bg: #e8f0fb;
    --input-bg: #ffffff;

    --text-primary: #1c1e21;
    --text-strong: #1c1e21;
    --text-secondary: #5f6368;
    --text-muted: #9aa0a6;
    --btn-text: #1c1e21;
    --mini-btn-text: #3c4043;
    --th-text: #5f6368;
    --th-hover: #1c1e21;
    --raw-text: #5f6368;
    --modal-h4: #3c4043;

    --border: #d8dbe0;
    --border-strong: #d8dbe0;
    --border-subtle: #e6e8ec;
    --border-totals: #b9bdc4;

    --accent: #2f6fd0;
    --link: #2f6fd0;
    --money: #8a6d1f;
    --ok: #1e8e3e;
    --pending: #b06000;
    --rm: #c5221f;

    --primary-btn-bg: #2f6fd0;
    --primary-btn-border: #2f6fd0;
    --primary-btn-bg-hover: #2a63bd;
    --primary-btn-text: #ffffff;
    --danger-btn-bg: #fdecea;
    --danger-btn-border: #e6b8b2;
    --danger-btn-text: #a33b2e;
    --danger-btn-bg-hover: #f9dcd7;

    --warn-bg: rgba(224,163,74,.18);
    --warn-border: rgba(176,96,0,.45);
    --warn-text: #7a4d00;
    --no-price-bg: rgba(224,163,74,.15);
    --overlay-bg: rgba(0,0,0,.45);
    --chip-stripe: rgba(0,0,0,.35);
    --color-cell-border: rgba(0,0,0,.18);
    --color-cell-selected: #1c1e21;
    --char-row-hover-filter: brightness(0.94) saturate(1.35);
    --block-separator: rgba(60,64,67,.32);
    --ind-manufacture-color: #00656b;
    --ind-reaction-color: #842c9a;
    --ind-planet-color: #a12f67;
    --ind-stopped-color: #973a14;
    --ind-stock-color: #4b651b;
    --ind-surplus-color: #17633d;
    --ind-shortage-color: #805000;
  }

  * { box-sizing: border-box; }
  html { scrollbar-gutter: stable; }
  html, body { margin: 0; padding: 0; }
  body {
    background: var(--bg-page); color: var(--text-primary);
    font-family: "Microsoft YaHei", "PingFang SC", "Noto Sans CJK SC", system-ui, sans-serif;
    font-size: 14px;
    transition: background-color .18s ease, color .18s ease;
  }
  #app { display: flex; min-height: 100vh; }
  #workspace { flex: 1; min-width: 0; display: flex; flex-direction: column; }
  /* ---------- sidebar ---------- */
  #sidebar {
    width: 240px; flex-shrink: 0; background: var(--sidebar-bg);
    border-right: 1px solid var(--border); padding: 14px 10px;
    display: flex; flex-direction: column; gap: 10px;
    position: sticky; top: 0; align-self: flex-start;
    height: 100vh; height: 100dvh; max-height: 100vh; max-height: 100dvh;
    min-height: 0; overflow: hidden;
  }
  #sidebarBrand { display: flex; align-items: center; gap: 8px; min-height: 36px; padding: 0 4px 4px; }
  #sidebar h1 { flex: 0 0 auto; font-size: 17px; margin: 0; color: var(--text-strong); font-weight: 600; }
  #sidebarAccountMount { display: flex; align-items: center; min-width: 0; }
  .nav-card { background: var(--panel-bg); border: 1px solid var(--border); border-radius: 10px; padding: 8px; }
  .nav-card-title { color: var(--text-secondary); font-size: 11px; padding: 2px 6px 7px; }
  .primary-nav-btn, .secondary-nav-btn {
    width: 100%; display: flex; align-items: center; gap: 9px; text-align: left; cursor: pointer;
    border: 1px solid transparent; border-radius: 7px; background: transparent; color: var(--btn-text);
    padding: 9px 10px; margin: 1px 0; font: inherit;
  }
  .primary-nav-btn:hover, .secondary-nav-btn:hover { background: var(--control-bg-hover); }
    .primary-nav-btn.active, .secondary-nav-btn.active {
      color: var(--primary-btn-text); background: var(--primary-btn-bg); border-color: var(--primary-btn-border); font-weight: 600;
    }
    .secondary-nav-children {
      margin: 2px 0 6px 22px; padding: 3px 0 3px 9px; border-left: 1px solid var(--border);
    }
    .secondary-nav-child {
      width: 100%; display: block; box-sizing: border-box; padding: 7px 9px; border: 0; border-radius: 6px;
      background: transparent; color: var(--text-secondary); text-align: left; font: inherit; font-size: 12px; cursor: pointer;
    }
    .secondary-nav-child:hover { background: var(--control-bg-hover); color: var(--text-primary); }
    .secondary-nav-child:disabled { color: var(--text-muted); cursor: not-allowed; opacity: .62; }
  .nav-icon { width: 18px; height: 18px; flex: 0 0 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
  #secondaryNavCard { min-height: 0; flex: 1; display: flex; flex-direction: column; }
  #secondaryNav { min-height: 0; flex: 1; display: flex; flex-direction: column; }
  .side-search {
    width: 100%; box-sizing: border-box; margin: 5px 0 7px;
    background: var(--input-bg); color: var(--text-primary); border: 1px solid var(--border);
    border-radius: 6px; padding: 6px 10px; font: inherit;
  }
  .side-search:focus { outline: none; border-color: var(--accent); }
  .tree-secondary #secondaryNav { overflow: hidden; }
  .desktop-tree-nav { display: flex; flex-direction: column; flex: 1; min-height: 0; }
  .side-tree-content { min-height: 0; flex: 1; overflow: auto; }
  .side-tree-content #mktTree, .side-tree-content #lpStoreCol {
    width: 100%; max-height: none; height: 100%; box-sizing: border-box; border: 0; padding: 0; background: transparent; flex: none;
  }
  .mobile-drawer-toggle, .mobile-drawer-close { display: none; }
  .mkt-current-group { margin-right: auto; color: var(--text-strong); font-size: 15px; }
  .legacy-controls { display: none !important; }
  .inline-admin-surface { position: static; background: transparent; padding: 0; display: block; }
  .inline-admin-surface .modal { max-width: none; max-height: none; width: auto; overflow: visible; margin: 0; }
  .fleet-import-toolbar {
    display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 10px 12px; margin-bottom: 12px;
    border: 1px solid var(--border); border-radius: 9px; background: var(--panel-bg);
  }
  .fleet-history-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; }
  .workspace-recovery { border-color: var(--warn-border); background: var(--warn-bg); margin-bottom: 12px; }
  .workspace-recovery h2 { margin: 0 0 8px; font-size: 16px; color: var(--warn-text); }
  .workspace-recovery p { margin: 0 0 8px; line-height: 1.65; }
  .workspace-recovery-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
  .fleet-history-card { margin: 0; cursor: pointer; }
  .fleet-history-card .hist-name { font-size: 14px; font-weight: 600; }
  .fleet-history-toolbar { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-bottom: 12px; }
  .fleet-history-panel > summary { cursor: pointer; color: var(--text-strong); font-size: 15px; font-weight: 600; }
  .fleet-history-content { padding-top: 12px; }
  #marketPage > .mkt-tabs, #industryPage > .mkt-tabs { display: none; }
  #marketPage .mkt-body, #lpPage .lp-body { display: block; }
  .side-btn {
    display: block; width: 100%; text-align: left;
    background: var(--control-bg); color: var(--btn-text); border: 1px solid var(--border-strong);
    border-radius: 8px; padding: 9px 12px; margin-bottom: 7px;
    cursor: pointer; font-size: 14px;
  }
  .side-btn:hover { background: var(--control-bg-hover); }
  .side-btn.primary { background: var(--primary-btn-bg); border-color: var(--primary-btn-border); color: var(--primary-btn-text); }
  .side-btn.primary:hover { background: var(--primary-btn-bg-hover); }
  #historyTitle { color: var(--text-secondary); font-size: 12px; margin: 8px 4px 2px; }
  #historyList { overflow-y: auto; flex: 1; }
  .hist-item {
    background: var(--panel-bg); border: 1px solid var(--border); border-radius: 8px;
    padding: 8px 10px; margin-bottom: 8px; cursor: pointer;
  }
  .hist-item:hover { border-color: var(--border-totals); }
  .hist-item.active { border-color: var(--accent); background: var(--hist-active-bg); }
  .hist-name { color: var(--text-primary); font-size: 13px; word-break: break-all; }
  .hist-meta { color: var(--text-secondary); font-size: 11px; margin-top: 3px; }
  .hist-badge { font-size: 11px; margin-top: 3px; }
  .hist-badge.ok { color: var(--ok); }
  .hist-badge.pending { color: var(--pending); }
  .hist-actions { margin-top: 5px; }
  .hist-actions button {
    background: none; border: none; color: var(--link); cursor: pointer;
    font-size: 12px; padding: 0 8px 0 0;
  }
  .hist-actions button:hover { text-decoration: underline; }

  /* ---------- main ---------- */
  #main { flex: 1; padding: 20px; min-width: 0; }
  .empty-state {
    color: var(--text-muted); font-size: 16px; text-align: center; margin-top: 25vh;
  }
  .panel {
    background: var(--panel-bg); border: 1px solid var(--border); border-radius: 10px;
    padding: 16px; margin-bottom: 16px;
  }
  .snap-head { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-bottom: 12px; }
  .snap-head h2 { margin: 0; font-size: 18px; color: var(--text-strong); font-weight: 600; }
  .snap-actions { margin-left: auto; display: flex; flex-wrap: wrap; gap: 8px; }
  .btn {
    background: var(--btn-bg); color: var(--btn-text); border: 1px solid var(--border-strong);
    border-radius: 7px; padding: 7px 12px; cursor: pointer; font-size: 13px;
  }
  .btn:hover { background: var(--btn-bg-hover); }
  .btn.primary { background: var(--primary-btn-bg); border-color: var(--primary-btn-border); color: var(--primary-btn-text); }
  .btn.primary:hover { background: var(--primary-btn-bg-hover); }
  .btn.danger { background: var(--danger-btn-bg); border-color: var(--danger-btn-border); color: var(--danger-btn-text); }
  .btn.danger:hover { background: var(--danger-btn-bg-hover); }
  .mini-btn {
    background: var(--btn-bg); color: var(--mini-btn-text); border: 1px solid var(--border-strong);
    border-radius: 6px; padding: 3px 9px; cursor: pointer; font-size: 12px;
  }
  .mini-btn:hover { background: var(--btn-bg-hover); }
  .btn:disabled, .mini-btn:disabled { opacity: .45; cursor: not-allowed; }

  /* ---------- tables ---------- */
  .table-wrap { overflow-x: auto; }
  table.grid { border-collapse: collapse; width: 100%; white-space: nowrap; }
  table.grid th, table.grid td {
    padding: 8px 10px; border-bottom: 1px solid var(--border-subtle); text-align: left;
    vertical-align: middle;
  }
  table.grid th { color: var(--th-text); font-weight: 600; font-size: 12px; }
  table.grid th.sortable { cursor: pointer; user-select: none; }
  table.grid th.sortable:hover { color: var(--th-hover); }
  table.grid td.num, table.grid th.num { text-align: right; }
  .qty { font-size: 15px; color: var(--text-primary); }
  .pct { font-size: 11px; color: var(--text-secondary); margin-top: 1px; }
  tr.totals td { border-top: 2px solid var(--border-totals); font-weight: 600; background: var(--panel-bg-alt); }
  tr.block-start td { border-top: 2px solid var(--block-separator); }
  tr.char-row { cursor: pointer; }
  tr.char-row:hover td { filter: var(--char-row-hover-filter); }
  tr.subrow td { background: var(--subrow-bg); padding: 10px 18px; }
  table.raw { border-collapse: collapse; }
  table.raw th, table.raw td { padding: 4px 14px 4px 0; color: var(--raw-text); font-size: 12px; border: none; }
  .fleet-character-details { display: grid; grid-template-columns: minmax(300px,.9fr) minmax(420px,1.1fr); gap: 18px; align-items: start; }
  .fleet-character-details h4 { margin: 0 0 8px; color: var(--text-primary); font-size: 13px; }
  .fleet-character-raw { min-width: 0; overflow-x: auto; }
  .fleet-character-refine { min-width: 0; border-left: 1px solid var(--border-subtle); padding-left: 18px; }
  .fleet-character-refine-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
  .fleet-character-refine-head span, .fleet-refine-status { color: var(--text-secondary); font-size: 11px; }
  .fleet-refine-status { margin: 6px 0; }
  .fleet-refine-status.error { color: var(--danger-btn-text); }
  .fleet-refine-values-title { margin: 2px 0 5px; color: var(--text-secondary); font-size: 11px; font-weight: 600; }
  .fleet-refine-values { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 8px; margin-bottom: 8px; }
  .fleet-refine-values > div { border: 1px solid var(--border-subtle); border-radius: 6px; padding: 7px 9px; min-width: 0; }
  .fleet-refine-values span { display: block; color: var(--text-secondary); font-size: 11px; }
  .fleet-refine-values b { display: block; margin-top: 2px; color: var(--money); overflow: hidden; text-overflow: ellipsis; }
  .fleet-refine-list { border-top: 1px solid var(--border-subtle); }
  .fleet-refine-list-head, .fleet-refine-row { display: grid; grid-template-columns: 32px minmax(0,1fr) auto; gap: 8px; align-items: center; }
  .fleet-refine-list-head { grid-template-columns: minmax(0,1fr) auto; padding: 6px 0 4px; color: var(--text-secondary); font-size: 11px; }
  .fleet-refine-row { min-height: 38px; border-top: 1px solid var(--border-subtle); }
  .fleet-refine-row:first-of-type { border-top: 0; }
  .fleet-refine-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text-primary); }
  .fleet-refine-row > b { text-align: right; color: var(--text-primary); }
  @media (max-width: 900px) {
    .fleet-character-details { grid-template-columns: minmax(0,1fr); }
    .fleet-character-refine { border-left: 0; border-top: 1px solid var(--border-subtle); padding: 12px 0 0; }
  }
  .chip {
    display: inline-block; width: 12px; height: 12px; border-radius: 3px;
    margin-right: 7px; vertical-align: -1px;
  }
  .chip.striped {
    background-image: repeating-linear-gradient(45deg,
      var(--chip-stripe) 0px, var(--chip-stripe) 2px,
      transparent 2px, transparent 5px);
  }
  .flag { margin-right: 4px; cursor: help; }
  .money { color: var(--money); }

  /* ---------- 结算区三栏对齐（仅布局，颜色全部走既有类 / CSS 变量） ---------- */
  /* 原始金额：每行同一网格模板 — 名字(弹性) | 金额(110px 右对齐) | 状态(76px 居中)。
     主人行与未分配行共用完全相同的列，金额天然成一条直线。 */
  .raw-row { display: grid; grid-template-columns: minmax(0,1fr) 110px 76px; column-gap: 8px; align-items: center; padding: 3px 0; }
  .raw-cell-name { display: flex; align-items: center; gap: 8px; min-width: 0; }
  .raw-cell-name .chip { margin-right: 0; flex: none; }
  .raw-cell-name .raw-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .raw-cell-name .not-included { flex: none; font-size: 11px; }
  .raw-amount { text-align: right; white-space: nowrap; }
  .raw-status { text-align: center; }
  .payout-toggle { width: 4.5em; padding-left: 0; padding-right: 0; text-align: center; }
  .raw-char-row.self-handled { opacity: .55; }

  /* 消耗补给：数据行与添加表单共享同一网格（display:contents 让单元格直接进入网格），
     主人下拉 == 主人名列宽，备注/金额各自等宽，× 与 添加 同在最后一列。 */
  .supply-grid { display: grid; grid-template-columns: minmax(70px,110px) minmax(0,1fr) 104px 30px; column-gap: 5px; row-gap: 4px; align-items: center; }
  .supply-grid #suppliesList, .supply-grid .supply-row, .supply-grid .supply-form { display: contents; }
  .supply-grid .supply-form > * { margin-top: 6px; }
  .supply-cell-owner { min-width: 0; }
  .supply-cell-owner .supply-owner { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .supply-cell-owner .supply-orphan-warn { display: block; font-size: 11px; line-height: 1.4; }
  .supply-grid input[type="text"], .supply-grid input[type="number"], .supply-grid select { width: 100%; min-width: 0; }
  .supply-grid .supply-del, .supply-grid #btnAddSupply { width: 100%; padding-left: 0; padding-right: 0; text-align: center; }
  .supply-grid > .hint { grid-column: 1 / -1; }

  /* 应发金额：固定布局表格，列宽恒定；含补给 子行在 实发合计 单元格内折行，
     各行数字统一顶端对齐，行列平行不错位。 */
  #payoutPanel table.grid { table-layout: fixed; }
  #payoutPanel table.grid col.c-pay { width: 120px; }
  #payoutPanel table.grid col.c-tot { width: 120px; }
  #payoutPanel table.grid col.c-box { width: 72px; }
  #payoutPanel table.grid td { vertical-align: top; overflow: hidden; text-overflow: ellipsis; }
  #payoutPanel table.grid td.cell-box, #payoutPanel table.grid th.cell-box { text-align: center; padding-left: 6px; padding-right: 6px; }

  /* ---------- 销售/出货面板 ---------- */
  tr.sales-warn td { background: var(--warn-bg); } /* 化矿缺数据（缺比率或矿物无价）按收购估算 */
  tr.sales-pending td { opacity: 0.58; } /* 待售：整行置灰（不参与合计与应发），下拉仍可操作 */
  /* 处理方式三模式切换布局稳定：列宽固定（table-layout:fixed），单元格一律单行，
     自卖/实际收入的输入框右缘与文本右缘对齐，警示/明细/手动标记内联不换行 */
  #salesTable { table-layout: fixed; }
  #salesTable col.c-qty { width: 110px; }
  #salesTable col.c-method { width: 116px; }
  #salesTable col.c-unit { width: 150px; }
  #salesTable col.c-actual { width: 170px; }
  #salesTable td { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  #salesTable .sales-price { width: 110px; text-align: right; }
  #salesTable .sales-actual-input { width: 118px; text-align: right; }
  #salesTable .unit-note { font-size: 11px; color: var(--text-secondary); margin-left: 5px; }
  #salesTable .override-mark { font-size: 11px; color: var(--text-secondary); margin-right: 5px; }
  #salesTable .qty-follow { font-size: 11px; color: var(--text-secondary); margin-left: 5px; }
  #salesTable .settled-aside-mark { font-size: 11px; color: var(--text-secondary); margin-left: 5px; }
  /* 合并快照 / 单矿结算 */
  #mergeBar { margin: 6px 0; }
  #mergeBar .side-btn { width: 100%; }
  .hist-item .snap-merge-cb { margin: 0 6px 0 0; vertical-align: -2px; }
  .hist-tag { display: inline-block; font-size: 11px; color: var(--text-secondary); border: 1px solid var(--border-subtle); border-radius: 4px; padding: 0 5px; margin-top: 3px; }
  .hist-tag.merged-into { color: var(--warn-text); border-color: var(--warn-border); }
  .merged-banner { margin: 0 0 10px; padding: 8px 10px; border: 1px solid var(--warn-border); background: var(--warn-bg); border-radius: 6px; color: var(--warn-text); display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
  .ore-settle { border: 1px solid var(--border-subtle); border-radius: 6px; padding: 10px; margin-bottom: 10px; }
  .ore-settle-head { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; margin-bottom: 6px; }
  .ore-settle tr.ore-sum-row td { font-weight: 600; border-top: 2px solid var(--border); } /* 表格式合计行（与 PNG 合计脚线同风格） */
  .ore-settle-meta { margin-bottom: 6px; }
  /* 单矿结算表格：统一 8 列固定布局（table-layout:fixed + colgroup，与销售区/应发金额同先例），
     同一页面多张单（勾/不勾扣消耗）列严格对齐、行高一致、数字不跳动；
     未勾扣消耗的单也渲染 扣消耗/垫付/实发合计 三列（— / 实发=金额），列位恒定。
     列宽按最宽内容定（14 位带符号数字完整显示不截断）：名字列固定 200px（长名 ellipsis + title 兜底），
     数字列 130-170px；总宽超窄屏时 .table-wrap 横向滚动（移动端保持） */
  .ore-settle table.grid { table-layout: fixed; }
  .ore-settle table.grid col.c-name { width: 200px; }
  .ore-settle table.grid col.c-qty { width: 130px; }
  .ore-settle table.grid col.c-gross { width: 170px; }
  .ore-settle table.grid col.c-deduct { width: 160px; }
  .ore-settle table.grid col.c-amount { width: 160px; }
  .ore-settle table.grid col.c-fronted { width: 150px; }
  .ore-settle table.grid col.c-totpaid { width: 160px; }
  .ore-settle table.grid col.c-box { width: 90px; }
  .ore-settle table.grid td { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .ore-settle table.grid td.cell-box, .ore-settle table.grid th.cell-box { text-align: center; padding-left: 6px; padding-right: 6px; }
  .src-tag { font-size: 11px; color: var(--text-secondary); margin-left: 5px; }

  /* ---------- modals ---------- */
  .overlay {
    position: fixed; inset: 0; background: var(--overlay-bg);
    display: flex; align-items: center; justify-content: center;
    z-index: 100; padding: 16px;
  }
  .modal {
    background: var(--control-bg); border: 1px solid var(--border-strong); border-radius: 12px;
    padding: 20px; width: 760px; max-width: 94vw; max-height: 88vh;
    overflow-y: auto;
  }
  .modal h3 { margin: 0 0 14px; font-size: 16px; color: var(--text-strong); }
  .modal h4 { margin: 18px 0 8px; font-size: 14px; color: var(--modal-h4); }
  .modal h3 + h4 { margin-top: 6px; }
  .modal .warn {
    background: var(--warn-bg); border: 1px solid var(--warn-border);
    color: var(--warn-text); border-radius: 8px; padding: 9px 12px; margin-bottom: 12px;
  }
  .modal-actions { display: flex; gap: 10px; margin-top: 16px; flex-wrap: wrap; justify-content: flex-end; }
  .field-row { display: flex; gap: 8px; align-items: center; margin-bottom: 10px; flex-wrap: wrap; }
  input[type="text"], input[type="number"], select {
    background: var(--input-bg); color: var(--text-primary); border: 1px solid var(--border-strong);
    border-radius: 6px; padding: 7px 9px; font-size: 13px; font-family: inherit;
  }
  input[type="text"]:focus, input[type="number"]:focus, select:focus { outline: none; border-color: var(--accent); }
  input[type="checkbox"] { accent-color: var(--accent); }
  .hint { color: var(--text-secondary); font-size: 12px; line-height: 1.6; }
  tr.no-price td { background: var(--no-price-bg); }
  .color-grid-scroll { overflow-x: auto; padding: 2px; }
  .color-grid { display: grid; grid-template-columns: repeat(24, minmax(18px, 1fr)); gap: 5px; margin: 8px 0; min-width: 548px; }
  .color-cell { height: 20px; border-radius: 4px; cursor: pointer; border: 1px solid var(--color-cell-border); }
  .color-cell.disabled { opacity: .22; cursor: not-allowed; }
  .color-cell.selected { outline: 2px solid var(--color-cell-selected); outline-offset: 1px; }
  .owner-card {
    background: var(--card-bg); border: 1px solid var(--border); border-radius: 9px;
    padding: 12px; margin: 0;
  }
  .owners-grid, .unassigned-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-bottom: 12px; }
  .owner-head { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; flex-wrap: wrap; }
  .owner-head .name { color: var(--text-strong); font-size: 14px; font-weight: 600; }
  .char-pill {
    display: inline-flex; align-items: center; gap: 5px;
    background: var(--pill-bg); border: 1px solid var(--border-strong); border-radius: 20px;
    padding: 3px 10px; margin: 0 6px 6px 0; font-size: 13px;
  }
  .char-pill .rm { color: var(--rm); cursor: pointer; border: none; background: none; font-size: 13px; padding: 0; }
  .filter-pill {
    display: inline-flex; align-items: center; gap: 6px;
    background: var(--pill-bg); border: 1px solid var(--border-strong); border-radius: 6px;
    padding: 5px 10px; margin: 0 6px 6px 0;
  }
  .unassigned-row { display: flex; align-items: center; gap: 10px; min-width: 0; flex-wrap: wrap; }

  /* ---------- EVE 市场页 / LP 页 ---------- */
  #marketPage, #lpPage, #industryPage, #wormholePage, #starMapPage { flex: 1; padding: 20px; min-width: 0; }
  .mkt-tabs { display: flex; gap: 6px; margin-bottom: 12px; }
  .mkt-tab {
    background: var(--btn-bg); border: 1px solid var(--border); color: var(--btn-text);
    border-radius: 6px 6px 0 0; padding: 7px 16px; cursor: pointer; font-size: 14px;
  }
  .mkt-tab.active { background: var(--panel-bg); color: var(--text-strong); border-bottom-color: var(--panel-bg); font-weight: 600; }
  .mkt-toolbar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; }
  .mkt-toolbar input[type="text"], .mkt-toolbar input[type="search"] {
    background: var(--input-bg); border: 1px solid var(--border); color: var(--text-primary);
    border-radius: 6px; padding: 6px 10px; min-width: 220px;
  }
  .mkt-batch {
    margin: 0 0 14px; padding: 12px; background: var(--panel-bg-alt);
    border: 1px solid var(--border); border-radius: 8px;
  }
  .mkt-batch-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-bottom: 8px; }
  .mkt-batch-head strong { color: var(--text-strong); font-size: 15px; }
  .mkt-batch-input-row { display: flex; align-items: stretch; gap: 8px; }
  .mkt-batch textarea {
    flex: 1; min-width: 260px; min-height: 76px; resize: vertical; box-sizing: border-box;
    background: var(--input-bg); border: 1px solid var(--border); color: var(--text-primary);
    border-radius: 6px; padding: 8px 10px; font: inherit; line-height: 1.5;
  }
  .mkt-batch-actions { display: flex; flex-direction: column; gap: 8px; justify-content: flex-start; }
  .mkt-batch-status { margin-top: 8px; }
  .mkt-batch-errors { margin-top: 6px; color: var(--warn-text); white-space: pre-line; }
  .mkt-batch-result { margin-top: 10px; }
  .mkt-batch-result .table-wrap { max-height: 48vh; }
  #mktBatchTable tfoot th, #mktBatchTable tfoot td {
    border-top: 2px solid var(--border-strong); color: var(--text-strong); font-weight: 700;
  }
  #mktBatchTable .mkt-batch-remove-cell { width: 1%; text-align: center; white-space: nowrap; }
  #mktBatchTable .mkt-batch-remove { color: var(--rm); }
  #mktBatchTable .mkt-batch-remove:hover { border-color: var(--rm); }
  .mkt-batch-missing { color: var(--warn-text); font-size: 11px; margin-left: 5px; }
  .mkt-body { display: flex; gap: 14px; align-items: flex-start; }
  #mktTree {
    width: 240px; flex: 0 0 240px; max-height: 72vh; overflow: auto;
    background: var(--panel-bg); border: 1px solid var(--border); border-radius: 8px; padding: 8px;
    font-size: 13px;
  }
  .mkt-node { padding: 3px 4px; border-radius: 4px; cursor: pointer; white-space: nowrap; }
  .mkt-node:hover { background: var(--control-bg-hover); }
  .mkt-node.active { background: var(--hist-active-bg); font-weight: 600; }
  .mkt-caret { display: inline-block; width: 16px; color: var(--text-secondary); user-select: none; }
  .mkt-children { margin-left: 14px; }
  #mktListCol { flex: 1; min-width: 0; }
  #mktTable th.sortable { cursor: pointer; user-select: none; }
  #mktTable th.sortable:hover { color: var(--th-hover); }
  .mkt-margin-pos { color: var(--ok); }
  .mkt-margin-neg { color: var(--rm); }
  .mkt-margin-high { background: var(--warn-bg); color: var(--warn-text); font-weight: 600; }
  .mkt-loading { color: var(--text-muted); animation: lp-sk 1.1s ease-in-out infinite; }
  .mkt-badge-ore {
    display: inline-block; background: var(--ok); color: var(--bg-page); border-radius: 4px;
    font-size: 11px; padding: 0 5px; margin-left: 6px; vertical-align: 1px;
  }
  .mkt-badge-stale { color: var(--warn-text); font-size: 11px; margin-left: 6px; }
  .mkt-badge-manual { color: var(--warn-text); font-size: 11px; margin-left: 6px; }
  tr.price-overridden { background: var(--warn-bg); }
  .mkt-row { cursor: pointer; }
  .mkt-row:hover td { background: var(--control-bg-hover); }
  .mkt-detail-box { display: flex; gap: 18px; flex-wrap: wrap; padding: 10px 4px; }
  .mkt-book table { border-collapse: collapse; }
  .mkt-book th, .mkt-book td { padding: 2px 10px; font-size: 12px; text-align: right; }
  .mkt-book th { color: var(--th-text); }
  #mktPager { display: flex; align-items: center; gap: 10px; margin-top: 8px; }
  #mktProgress {
    display: inline-flex; align-items: center; gap: 8px; background: var(--warn-bg);
    border: 1px solid var(--warn-border); border-radius: 6px; padding: 4px 10px;
  }
  #mktFailBar {
    display: inline-flex; align-items: center; gap: 8px; color: var(--warn-text);
    background: var(--warn-bg); border: 1px solid var(--warn-border); border-radius: 6px; padding: 4px 10px;
  }
  #mktFailRetry { cursor: pointer; text-decoration: underline; color: var(--link); }
  .mkt-footnote { color: var(--text-muted); font-size: 12px; margin-top: 14px; }
  canvas.mkt-chart { background: var(--panel-bg); border: 1px solid var(--border); border-radius: 6px; }

  /* ---------- LP 兑换页 ---------- */
  .lp-body { display: flex; gap: 14px; align-items: flex-start; }
  #lpStoreCol {
    width: 280px; flex: 0 0 280px; max-height: 76vh; overflow: auto;
    background: var(--panel-bg); border: 1px solid var(--border); border-radius: 8px; padding: 8px;
  }
  #lpStoreSearch { margin-bottom: 8px; }
  .lp-store { padding: 6px 8px; border-radius: 6px; cursor: pointer; margin-bottom: 2px; }
  .lp-store:hover { background: var(--control-bg-hover); }
  .lp-store.active { background: var(--hist-active-bg); }
  .lp-store-line { display: flex; align-items: center; gap: 8px; }
  .lp-store-name { flex: 1; font-size: 13px; color: var(--text-strong); }
  .lp-count { color: var(--text-muted); font-size: 11px; white-space: nowrap; }
  .lp-store-sub { display: flex; align-items: center; gap: 8px; color: var(--text-muted); font-size: 11px; margin-top: 2px; }
  .lp-corps-toggle { cursor: pointer; color: var(--link); user-select: none; }
  .lp-corps-list { margin: 4px 0 2px 8px; color: var(--text-secondary); font-size: 12px; line-height: 1.6; }
  #lpOfferCol { flex: 1; min-width: 0; width: 100%; max-width: 100%; }
  #lpOfferCol > .table-wrap { width: 100%; min-width: 0; max-width: 100%; overflow-x: auto; padding-bottom: 6px; }
  .lp-head-line { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 10px; }
  .lp-head-name { font-size: 15px; font-weight: 600; color: var(--text-strong); }
  .lp-current-search { width: 230px; min-width: 0; max-width: 100%; margin: 0; }
  .lp-head-ts { margin-left: auto; max-width: 100%; overflow-wrap: anywhere; }
  /* Give the name/category flexible space and keep every numeric column readable.
     Small content areas scroll within the offer list instead of clipping the final column. */
  #lpTable { width: 100%; min-width: 1120px; table-layout: auto; }
  #lpTable col.lp-col-name { width: 25%; }
  #lpTable col.lp-col-category { width: 11%; }
  #lpTable col.lp-col-qty { width: 7%; }
  #lpTable col.lp-col-lp { width: 9%; }
  #lpTable col.lp-col-isk { width: 11%; }
  #lpTable col.lp-col-mat { width: 12%; }
  #lpTable col.lp-col-value { width: 8%; }
  #lpTable col.lp-col-volume { width: 7%; }
  #lpTable col.lp-col-turnover { width: 10%; }
  #lpTable > thead > tr > th { white-space: normal; line-height: 1.45; }
  #lpTable > thead > tr > th, #lpTable > tbody > tr:not(.lp-detail) > td { padding-left: 8px; padding-right: 8px; }
  #lpTable > tbody > tr:not(.lp-detail) > td.num { white-space: nowrap; font-variant-numeric: tabular-nums; }
  #lpTable > tbody > tr:not(.lp-detail) > td:first-child .lp-namecell { min-width: 0; }
  #lpTable > tbody > tr:not(.lp-detail) > td:first-child .lp-namecell > span:last-child {
    min-width: 0; white-space: normal; overflow-wrap: anywhere; line-height: 1.5;
  }
  .lp-result-store { display: block; margin-top: 3px; color: var(--text-muted); font-size: 11px; }
  .lp-category-head, .lp-category-cell { white-space: normal; }
  .lp-category-head { position: relative; z-index: 12; cursor: pointer; user-select: none; overflow: visible; }
  .lp-category-toggle {
    display: inline-flex; align-items: center; gap: 6px; padding: 0; border: 0; background: transparent;
    color: inherit; font: inherit; font-weight: inherit; cursor: pointer;
  }
  .lp-category-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 3px; }
  .lp-category-caret { color: var(--text-muted); font-size: 11px; }
  .lp-category-picker {
    position: absolute; left: 8px; top: calc(100% + 5px); z-index: 24;
    display: flex; flex-direction: column; align-items: stretch; gap: 2px;
    width: 230px; max-height: min(420px, 60vh); overflow-y: auto; padding: 6px;
    border: 1px solid var(--border); border-radius: 8px; background: var(--panel-bg);
    box-shadow: 0 12px 28px var(--overlay-bg); text-align: left;
  }
  .lp-category-picker[hidden] { display: none; }
  .lp-category-option {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    width: 100%; min-height: 32px; padding: 5px 8px; border: 1px solid transparent; border-radius: 6px;
    background: transparent; color: var(--text-secondary); font-family: inherit; font-size: 12px; font-weight: 400;
    text-align: left; cursor: pointer;
  }
  .lp-category-option:hover { background: var(--control-bg-hover); color: var(--text-strong); }
  .lp-category-option.active {
    background: var(--hist-active-bg); border-color: var(--border); color: var(--text-strong); font-weight: 600;
  }
  .lp-category-option-count { flex: 0 0 auto; color: var(--text-muted); font-weight: 400; }
  .lp-category-tag {
    display: inline-flex; align-items: center; min-height: 24px; padding: 1px 7px;
    border: 1px solid var(--border); border-radius: 999px; background: var(--control-bg);
    color: var(--text-secondary); font-size: 12px; line-height: 1.35;
    max-width: 100%; white-space: normal; overflow-wrap: anywhere;
  }
  .lp-stale-warn { color: var(--warn-text); }
  .lp-mat-warn { color: var(--warn-text); font-size: 11px; margin-left: 4px; white-space: normal; }
  .lp-profit-ref { color: var(--text-muted); }
  .lp-row-mat { cursor: pointer; }
  .lp-row-mat:hover td { background: var(--control-bg-hover); }
  .lp-mat-caret { display: inline-block; color: var(--text-muted); font-size: 11px; margin-left: 4px; vertical-align: middle; }
  .lp-detail > td { background: var(--panel-bg-alt); white-space: normal; }
  .lp-mat-table { margin: 6px 0; }
  .lp-detail-price-table { width: 100%; min-width: 0; table-layout: auto; }
  .lp-detail-price-table th { white-space: normal; }
  .lp-detail-price-table td.num { white-space: nowrap; }
  .lp-detail-price-table .lp-namecell > span:last-child { white-space: normal; overflow-wrap: anywhere; }
  .lp-detail-price-table .lp-detail-col-name { width: 40%; }
  .lp-detail-price-table .lp-detail-col-qty { width: 12%; }
  .lp-detail-price-table .lp-detail-col-price { width: 12%; }
  .lp-detail-price-table .lp-detail-col-total { width: 12%; }
  .lp-output-table { margin: 6px 0 10px; }
  .lp-blueprint-cost-head {
    display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap;
    margin: 10px 0 4px; color: var(--text-strong);
  }
  .lp-blueprint-cost-head b { color: var(--price); }
  .lp-subtotal-head > span { display: block; }
  .lp-subtotal-mode {
    width: auto; min-width: 96px; margin-top: 3px; padding: 2px 20px 2px 4px;
    color: var(--text-secondary); background: var(--input-bg); border: 1px solid var(--border); border-radius: 5px;
    font: inherit; text-align: right; cursor: pointer;
  }
  .lp-price-choice { position: relative; cursor: pointer; transition: background-color .12s, box-shadow .12s; }
  .lp-price-choice:hover { background: rgba(126, 211, 33, .07); }
  .lp-price-choice.lp-price-selected {
    background: rgba(126, 211, 33, .10); box-shadow: inset 0 0 0 2px #7ed321; color: var(--text-strong);
  }
  .lp-custom-price-input {
    width: 100%; min-width: 0; padding: 4px 6px; border: 1px solid transparent; border-radius: 4px;
    color: inherit; background: transparent; font: inherit; text-align: right; outline: none;
  }
  .lp-custom-price-input:hover { border-color: var(--border); background: var(--input-bg); }
  .lp-custom-price-input:focus { border-color: #7ed321; background: var(--input-bg); box-shadow: 0 0 0 1px rgba(126, 211, 33, .35); }
  .lp-custom-price-input.lp-custom-price-manual { font-weight: 600; }
  .lp-manufacturing-table { min-width: 0; }
  .lp-manufacturing-warning { display: block; margin: 8px 0; font-size: 12px; }
  .lp-blueprint-actions {
    display: flex; align-items: center; justify-content: flex-end; gap: 8px; flex-wrap: wrap;
    margin-top: 10px; padding-top: 8px; border-top: 1px solid var(--border);
  }
  .lp-value-formula {
    color: var(--text-secondary); background: var(--control-bg); border: 1px solid var(--border);
    border-radius: 6px; padding: 8px 10px; margin: 6px 0; line-height: 1.6; white-space: normal; overflow-wrap: anywhere;
  }

  /* LP 左栏势力树 */
  .lp-faction { margin-bottom: 2px; }
  .lp-faction-line {
    display: flex; align-items: center; gap: 6px; padding: 5px 6px; border-radius: 6px;
    cursor: pointer; user-select: none;
  }
  .lp-faction-line:hover { background: var(--control-bg-hover); }
  .lp-caret { display: inline-block; width: 14px; color: var(--text-secondary); }
  .lp-faction-name { flex: 1; font-size: 13px; font-weight: 600; color: var(--text-strong); }
  .lp-faction .lp-store { margin-left: 16px; }

  /* 图标（物品 / 军团 logo）：灰色占位块垫底，img 失败隐藏露出占位，不影响布局 */
  .lp-icon {
    display: inline-block; flex: 0 0 auto; background: var(--control-bg-hover);
    border-radius: 4px; vertical-align: middle; overflow: hidden;
  }
  .lp-icon img { display: block; width: 100%; height: 100%; border-radius: 4px; }
  .lp-namecell { display: flex; align-items: center; gap: 8px; }

  /* LP 骨架屏（清单请求在途时的表格轮廓动画） */
  .lp-sk-bar {
    display: inline-block; height: 12px; border-radius: 4px; background: var(--control-bg-hover);
    animation: lp-sk 1.1s ease-in-out infinite;
  }
  @keyframes lp-sk { 0%, 100% { opacity: .45; } 50% { opacity: 1; } }
  .lp-load-fail {
    display: flex; align-items: center; gap: 12px; padding: 18px 8px;
    color: var(--warn-text);
  }
  #lpProgress {
    display: inline-flex; align-items: center; gap: 8px; background: var(--warn-bg);
    border: 1px solid var(--warn-border); border-radius: 6px; padding: 4px 10px;
  }

  /* ---------- 工业页（四期）：制造/反应/压缩/化矿 ---------- */
  .ind-cand {
    display: flex; align-items: center; gap: 8px; padding: 5px 8px; cursor: pointer;
    border-radius: 6px; color: var(--text-primary);
  }
  /* 名称节点置于 DOM 首位，便于读屏/测试精确识别；图标仍通过 flex order 视觉前置。 */
  .ind-cand > .lp-icon { order: -1; }
  .ind-cand:hover { background: var(--control-bg-hover); }
  .ind-cand .ind-en { color: var(--text-muted); font-size: 11px; margin-left: 4px; }
  .ind-cand-bp { color: var(--warn-text); }
  .ind-cand-list {
    max-height: 280px; overflow-y: auto; border: 1px solid var(--border-subtle);
    border-radius: 6px; margin-top: 6px; background: var(--panel-bg-alt);
  }
  .ind-recipe-head {
    display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
    margin: 10px 0 8px; color: var(--text-strong);
  }
  .ind-recipe-head .ind-prodname { font-size: 15px; font-weight: 600; }
  .ind-field { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; color: var(--text-secondary); }
  .ind-field input, .ind-field select { width: 64px; }
  .ind-price-input { width: 108px; text-align: right; }
  .ind-price-input.ind-manual { border-bottom: 2px solid var(--warn-text); }
  .ind-market-price { white-space: nowrap; }
  .ind-manual-mark { color: var(--warn-text); font-size: 11px; margin-left: 4px; }
  .ind-totals { margin-top: 8px; font-size: 14px; color: var(--text-primary); display: flex; gap: 18px; flex-wrap: wrap; }
  #indMatTable { table-layout: fixed; min-width: 1320px; }
  #indMatTable col.c-mat { width: 250px; }
  #indMatTable col.c-buy, #indMatTable col.c-sell, #indMatTable col.c-mid, #indMatTable col.c-agreement { width: 155px; }
  #indMatTable col.c-base, #indMatTable col.c-adj { width: 115px; }
  #indMatTable col.c-subtotal { width: 170px; }
  #indMatTable tbody td:first-child { overflow: hidden; text-overflow: ellipsis; }
  #indMatTable tbody td:first-child .lp-namecell > span:last-child { overflow: hidden; text-overflow: ellipsis; }
  #indMatTable .ind-price-input { width: 100%; min-width: 92px; max-width: 140px; box-sizing: border-box; }
  #indMatTable tfoot td {
    vertical-align: top; background: var(--panel-bg-alt);
    padding-top: 10px; padding-bottom: 10px;
  }
  #indMatTable tfoot tr.ind-output-unit td { border-top: 2px solid var(--border); }
  #indMatTable tfoot tr.ind-output-total td,
  #indMatTable tfoot tr.ind-profit-summary td { border-top: 1px solid var(--border-subtle); }
  #indMatTable tfoot td.ind-current-scenario { box-shadow: inset 0 0 0 2px var(--warn-border); }
  .ind-cost-mode { width: 96px; margin-top: 4px; font-size: 11px; padding: 3px 5px; }
  .ind-group-head { text-align: center !important; border-bottom-color: transparent !important; }
  .ind-agreement-cell { white-space: normal; }
  .ind-agreement-wrap { display: flex; align-items: center; justify-content: flex-end; gap: 4px; }
  .ind-agreement-reset { padding: 3px 6px; }
  .ind-single-ref { color: var(--warn-text); font-size: 10px; display: block; margin-top: 2px; }
  .ind-profit-label { color: var(--th-text); font-size: 12px; font-weight: 600; margin-bottom: 7px; }
  .ind-profit-detail { font-size: 12px; line-height: 1.6; white-space: normal; }
  .ind-profit-detail > span { display: block; }
  .ind-profit-pos { color: var(--ok); font-weight: 600; }
  .ind-profit-neg { color: var(--rm); font-weight: 600; }
  .ind-tools-panel, .ind-cost-panel {
    margin-top: 10px; padding: 10px; border: 1px solid var(--border-subtle); border-radius: 7px;
    background: var(--panel-bg-alt);
  }
  .ind-tools-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
  .ind-tools-row + .ind-tools-row { margin-top: 8px; }
  .ind-tools-row input[type="number"] { width: 108px; }
  .ind-tools-row select { max-width: 160px; }
  .ind-cost-panel summary { cursor: pointer; color: var(--text-strong); font-weight: 600; }
  .ind-cost-grid { display: flex; gap: 10px 16px; flex-wrap: wrap; margin-top: 10px; }
  .ind-cost-grid label { display: inline-flex; align-items: center; gap: 5px; color: var(--text-secondary); font-size: 12px; }
  .ind-cost-grid input[type="number"] { width: 92px; }
  .ind-settings { display: grid; gap: 12px; }
  .ind-settings-card { border: 1px solid var(--border-subtle); border-radius: 8px; background: var(--panel-bg-alt); padding: 14px; }
  .ind-settings-card h3 { margin: 0 0 6px; color: var(--text-strong); font-size: 16px; }
  .ind-settings-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 10px 18px; margin-top: 12px; }
  .ind-settings-grid label { display: grid; grid-template-columns: minmax(118px, auto) 1fr; align-items: center; gap: 8px; color: var(--text-secondary); font-size: 13px; }
  .ind-settings-grid input, .ind-settings-grid select { width: 100%; box-sizing: border-box; min-width: 0; }
  .ind-settings-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 12px; }
  .ind-eff-preview { color: var(--warn-text); font-size: 11px; grid-column: 2; }
  .ind-settings-note { border-left: 3px solid var(--warn-border); padding-left: 10px; margin-top: 8px; }
  .ind-structure-card { overflow: hidden; }
  .ind-structure-table { min-width: 1120px; margin-top: 12px; }
  .ind-structure-table td { vertical-align: top; line-height: 1.55; }
  .ind-structure-table small { display: block; color: var(--text-muted); }
  .ind-structure-table tr.is-disabled { opacity: .55; }
  .ind-structure-verified { color: var(--ok); font-weight: 600; }
  .ind-structure-error { color: var(--rm); margin: 10px 0 0; }
  .ind-structure-error a { color: var(--link); }
  .ind-structure-form { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--border-subtle); }
  .ind-structure-form h4 { margin: 0; color: var(--text-strong); }
  .ind-settings-grid label.ind-structure-check { display: flex; justify-content: flex-start; }
  .ind-settings-grid label.ind-structure-check input { width: auto; }
  .ind-ref-hint { color: var(--text-muted); font-size: 12px; }
  .ind-skill { display: inline-flex; align-items: center; gap: 6px; margin-right: 14px; color: var(--text-primary); }
  .ind-chain-panel {
    margin-top: 10px; border: 1px solid var(--border-subtle); border-radius: 7px;
    background: var(--panel-bg-alt); overflow: hidden;
  }
  .ind-chain-panel > summary {
    cursor: pointer; padding: 10px 12px; color: var(--text-strong); font-weight: 600;
    user-select: none;
  }
  .ind-chain-panel[open] > summary { border-bottom: 1px solid var(--border-subtle); }
  .ind-chain-toolbar {
    display: flex; align-items: center; gap: 8px 14px; flex-wrap: wrap; padding: 10px 12px;
  }
  .ind-chain-toolbar label { display: inline-flex; align-items: center; gap: 5px; color: var(--text-secondary); font-size: 12px; }
  .ind-chain-toolbar select { max-width: 140px; }
  .ind-chain-sections { padding: 0 12px 12px; }
  .ind-chain-section-title { margin: 5px 0 7px; color: var(--text-strong); font-size: 13px; }
  .ind-chain-scroll {
    display: flex; gap: 10px; overflow-x: auto; padding: 0 0 8px;
    scroll-snap-type: x proximity; overscroll-behavior-inline: contain;
  }
  .ind-chain-col {
    flex: 0 0 330px; min-width: 0; border: 1px solid var(--border-subtle); border-radius: 7px;
    background: var(--panel-bg); overflow: hidden; scroll-snap-align: start;
  }
  .ind-chain-col-head {
    padding: 8px 10px; background: var(--th-bg); color: var(--th-text); font-weight: 700;
    display: flex; justify-content: space-between; gap: 8px; align-items: center;
  }
  .ind-chain-row { padding: 9px 10px; border-top: 1px solid var(--border-subtle); }
  .ind-chain-row:first-child { border-top: 0; }
  .ind-chain-item-head { display: flex; gap: 8px; align-items: center; min-width: 0; }
  .ind-chain-item-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; }
  .ind-chain-badge {
    flex: none; font-size: 10px; padding: 1px 4px; border: 1px solid var(--border-subtle);
    border-radius: 3px; color: var(--text-muted);
  }
  .ind-chain-badge.make { color: var(--ok); border-color: var(--ok); }
  .ind-chain-badge.react { color: var(--warn-text); border-color: var(--warn-border); }
  .ind-chain-badge.cycle { color: var(--rm); border-color: var(--rm); }
  .ind-chain-qty, .ind-chain-metrics { margin-top: 5px; font-size: 11px; line-height: 1.55; color: var(--text-secondary); }
  .ind-chain-qty span, .ind-chain-metrics span { display: block; }
  .ind-chain-leftover { color: var(--warn-text); }
  .ind-chain-item-profit { font-weight: 600; }
  .ind-chain-summary {
    padding: 9px 10px; border-top: 2px solid var(--border); background: var(--panel-bg-alt);
    font-size: 11px; line-height: 1.65; color: var(--text-secondary);
  }
  .ind-chain-summary div { display: flex; justify-content: space-between; gap: 10px; }
  .ind-chain-summary b { color: var(--text-primary); }
  .ind-chain-empty { padding: 10px; color: var(--text-muted); }
  .ind-stage-toolbar {
    margin-top: 14px; padding: 9px 10px; display: flex; align-items: center; gap: 8px 14px; flex-wrap: wrap;
    border: 1px solid var(--border-subtle); border-radius: 7px; background: var(--panel-bg-alt);
  }
  .ind-stage-toolbar label { display: inline-flex; align-items: center; gap: 5px; color: var(--text-secondary); font-size: 12px; }
  .ind-stage-block { margin-top: 16px; }
  .ind-stage-title { margin: 0 0 7px; font-size: 15px; color: var(--text-strong); }
  .ind-stage-table { table-layout: fixed; min-width: 1320px; }
  .ind-stage-table col.c-mat { width: 250px; }
  .ind-stage-table col.c-buy, .ind-stage-table col.c-sell,
  .ind-stage-table col.c-mid, .ind-stage-table col.c-agreement { width: 155px; }
  .ind-stage-table col.c-base, .ind-stage-table col.c-adj { width: 115px; }
  .ind-stage-table col.c-subtotal { width: 170px; }
  .ind-stage-table .ind-price-input { width: 100%; min-width: 92px; max-width: 140px; box-sizing: border-box; }
  .ind-stage-table tfoot td { background: var(--panel-bg-alt); padding-top: 9px; padding-bottom: 9px; }
  .ind-stage-row-note { margin-top: 3px; font-size: 10px; line-height: 1.45; color: var(--text-muted); }
  .ind-stage-row-note .ind-chain-item-profit { margin-left: 4px; }
  .ind-stage-summary { display: flex; justify-content: flex-end; gap: 18px; flex-wrap: wrap; align-items: center; }
  .ind-stage-summary span { white-space: nowrap; }
  .ind-sub { margin-top: 14px; }
  .ind-sub h4 { margin: 0 0 6px; font-size: 13px; color: var(--text-strong); }
  .yield-src-badge {
    font-size: 10px; margin-left: 5px; padding: 0 4px; border: 1px solid var(--warn-border);
    border-radius: 3px; color: var(--warn-text); vertical-align: 1px; white-space: nowrap;
  }
  .yield-src-badge.official { color: var(--ok); border-color: var(--ok); }
  .ind-comp-del { white-space: nowrap; }
  #indProg {
    display: inline-flex; align-items: center; gap: 8px; background: var(--warn-bg);
    border: 1px solid var(--warn-border); border-radius: 6px; padding: 4px 10px;
  }

  /* ---------- 生产规划（内部阶段一） ---------- */
  .ind-plan-layout { display: grid; grid-template-columns: 300px minmax(0, 1fr); gap: 14px; align-items: start; }
  .ind-plan-catalog { position: sticky; top: 12px; max-height: calc(100vh - 34px); padding: 12px; overflow: hidden; }
  .ind-plan-catalog h3, .ind-plan-head h2 { margin: 0; color: var(--text-strong); }
  .ind-plan-catalog-title { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
  .ind-plan-catalog-title > span { color: var(--text-muted); font-size: 11px; white-space: nowrap; }
  .ind-plan-catalog > input { width: 100%; margin: 10px 0 8px; box-sizing: border-box; }
  .ind-plan-tree { max-height: 38vh; overflow: auto; border: 1px solid var(--border-subtle); border-radius: 7px; background: var(--panel-bg-alt); }
  .ind-plan-tree-all, .ind-plan-tree-label, .ind-plan-tree-toggle {
    border: 0; background: transparent; color: var(--text-primary); cursor: pointer; font: inherit;
  }
  .ind-plan-tree-all { width: 100%; display: flex; justify-content: space-between; gap: 7px; padding: 7px 9px; text-align: left; }
  .ind-plan-tree-all small { color: var(--text-muted); }
  .ind-plan-tree-node { display: grid; grid-template-columns: 22px minmax(0, 1fr); padding-left: calc(var(--tree-depth) * 13px); }
  .ind-plan-tree-toggle { padding: 5px 0; color: var(--text-secondary); }
  .ind-plan-tree-spacer { width: 22px; }
  .ind-plan-tree-label { display: flex; justify-content: space-between; gap: 7px; padding: 5px 7px; min-width: 0; text-align: left; }
  .ind-plan-tree-label small { color: var(--text-muted); }
  .ind-plan-tree-all:hover, .ind-plan-tree-label:hover, .ind-plan-tree-all.active, .ind-plan-tree-label.active {
    background: var(--control-bg-hover); color: var(--text-strong);
  }
  .ind-plan-results { margin-top: 8px; border: 1px solid var(--border-subtle); border-radius: 7px; overflow: hidden; background: var(--panel-bg); }
  .ind-plan-results > header { display: flex; justify-content: space-between; gap: 8px; padding: 7px 9px; background: var(--th-bg); }
  .ind-plan-results > header b { color: var(--text-strong); font-size: 12px; }
  .ind-plan-results > header small, .ind-plan-results > footer { color: var(--text-muted); font-size: 10px; }
  .ind-plan-results > footer { padding: 7px 9px; border-top: 1px solid var(--border-subtle); line-height: 1.45; }
  .ind-plan-candidates { max-height: 34vh; overflow: auto; }
  .ind-plan-discovery { margin-top: 8px; padding: 16px 12px; border: 1px dashed var(--border); border-radius: 7px; background: var(--panel-bg-alt); text-align: center; }
  .ind-plan-discovery b, .ind-plan-discovery span { display: block; }
  .ind-plan-discovery b { color: var(--text-primary); font-size: 12px; }
  .ind-plan-discovery span { margin-top: 5px; color: var(--text-muted); font-size: 10px; line-height: 1.55; }
  .ind-plan-candidate {
    width: 100%; display: grid; grid-template-columns: 32px minmax(0, 1fr) auto; align-items: center; gap: 8px;
    padding: 7px; border: 0; border-bottom: 1px solid var(--border-subtle); background: var(--panel-bg); color: var(--text-primary); text-align: left; cursor: pointer;
  }
  .ind-plan-candidate:hover:not(:disabled) { background: var(--control-bg-hover); }
  .ind-plan-candidate:disabled { opacity: .55; cursor: default; }
  .ind-plan-candidate b, .ind-plan-candidate small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .ind-plan-candidate small { margin-top: 2px; color: var(--text-muted); font-size: 10px; }
  .ind-plan-candidate em { color: var(--ok); font-size: 11px; font-style: normal; }
  .ind-plan-work { min-width: 0; }
  .ind-plan-head { display: flex; justify-content: space-between; gap: 18px; padding: 14px; }
  .ind-plan-head p { margin: 5px 0 0; color: var(--text-secondary); font-size: 12px; }
  .ind-plan-structure { min-width: 250px; display: grid; gap: 4px; align-content: start; }
  .ind-plan-structure label { display: grid; grid-template-columns: auto minmax(170px, 1fr); align-items: center; gap: 7px; color: var(--text-secondary); font-size: 12px; }
  .ind-plan-structure select { min-width: 0; width: 100%; }
  .ind-plan-structure .hint { max-width: 420px; line-height: 1.45; }
  .ind-plan-toolbar { display: flex; justify-content: flex-end; align-items: center; gap: 8px; flex-wrap: wrap; }
  .ind-plan-toolbar label { display: inline-flex; align-items: center; gap: 5px; color: var(--text-secondary); font-size: 12px; }
  .ind-plan-toolbar select { max-width: 126px; }
  .ind-plan-targets { display: grid; grid-template-columns: repeat(auto-fit, minmax(285px, 1fr)); gap: 8px; margin: 10px 0; }
  .ind-plan-target { display: grid; grid-template-columns: 40px minmax(0, 1fr) auto auto; gap: 9px; align-items: center; padding: 10px; border: 1px solid var(--border-subtle); border-radius: 8px; background: var(--panel-bg); }
  .ind-plan-target b, .ind-plan-target small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .ind-plan-target small { color: var(--text-muted); font-size: 10px; }
  .ind-plan-target label { color: var(--text-secondary); font-size: 11px; white-space: nowrap; }
  .ind-plan-target input { width: 82px; margin-left: 4px; text-align: right; }
  .ind-plan-summary { display: grid; grid-template-columns: repeat(6, minmax(135px, 1fr)); gap: 8px; margin: 10px 0; }
  .ind-plan-summary > div { padding: 10px; border: 1px solid var(--border-subtle); border-radius: 8px; background: var(--panel-bg-alt); }
  .ind-plan-summary span, .ind-plan-summary b, .ind-plan-summary small { display: block; }
  .ind-plan-summary span { color: var(--text-secondary); font-size: 11px; }
  .ind-plan-summary b { margin-top: 4px; color: var(--money); font-size: 15px; }
  .ind-plan-summary .positive b { color: var(--ok); }
  .ind-plan-summary .negative b { color: var(--rm); }
  .ind-plan-summary small { margin-top: 3px; color: var(--text-muted); }
  .ind-plan-status { margin: 7px 0; }
  .ind-plan-chain { display: flex; gap: 10px; padding-bottom: 9px; overflow-x: auto; scroll-snap-type: x proximity; }
  .ind-plan-level { flex: 0 0 330px; border: 1px solid var(--border-subtle); border-radius: 8px; background: var(--panel-bg); overflow: hidden; scroll-snap-align: start; }
  .ind-plan-level > header { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 7px; align-items: center; padding: 9px 10px; background: var(--th-bg); color: var(--th-text); }
  .ind-plan-level > header span { color: var(--text-secondary); font-size: 11px; }
  .ind-plan-level.collapsed { flex-basis: 145px; }
  .ind-plan-collapsed-summary { width: 100%; min-height: 130px; border: 0; background: transparent; color: var(--text-muted); cursor: pointer; line-height: 1.8; }
  .ind-plan-node { padding: 10px; border-top: 1px solid var(--border-subtle); }
  .ind-plan-node > header { display: grid; grid-template-columns: 32px minmax(0, 1fr) auto; gap: 8px; align-items: center; }
  .ind-plan-node > header b, .ind-plan-node > header small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .ind-plan-node > header small { margin-top: 2px; color: var(--text-secondary); font-size: 10px; }
  .ind-plan-node > header em { padding: 2px 5px; border: 1px solid; border-radius: 4px; font-size: 10px; font-style: normal; }
  .ind-plan-node > header em.make { color: var(--ok); border-color: var(--ok); }
  .ind-plan-node > header em.buy { color: var(--warn-text); border-color: var(--warn-border); }
  .ind-plan-node-cost { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; margin: 7px 0; font-size: 10px; color: var(--text-secondary); }
  .ind-plan-node-cost span { display: flex; justify-content: space-between; gap: 5px; }
  .ind-plan-node-cost b { color: var(--text-primary); }
  .ind-plan-decision { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; }
  .ind-plan-decision button { padding: 4px 5px; border: 1px solid var(--border); border-radius: 4px; background: var(--btn-bg); color: var(--btn-text); cursor: pointer; }
  .ind-plan-decision button.active { border-color: var(--ok); color: var(--ok); box-shadow: inset 0 0 0 1px var(--ok); }
  .ind-plan-decision button:disabled { opacity: .4; cursor: default; }
  .ind-plan-node-settings { margin-top: 7px; color: var(--text-secondary); font-size: 10px; }
  .ind-plan-node-settings summary { cursor: pointer; }
  .ind-plan-node-settings label { display: inline-flex; align-items: center; gap: 4px; margin: 7px 7px 0 0; }
  .ind-plan-node-settings input { width: 54px; }
  .ind-plan-node-settings select { max-width: 180px; }
  .ind-plan-node-settings > small { display: block; margin-top: 6px; }
  .ind-plan-procurement { margin-top: 12px; border: 1px solid var(--border-subtle); border-radius: 8px; background: var(--panel-bg); }
  .ind-plan-procurement > summary { padding: 10px 12px; color: var(--text-strong); font-weight: 600; cursor: pointer; }
  .ind-plan-procurement table { min-width: 700px; }

  @media (max-width: 1180px) {
    .ind-plan-layout { grid-template-columns: 250px minmax(0, 1fr); }
    .ind-plan-summary { grid-template-columns: repeat(3, minmax(135px, 1fr)); }
    .ind-plan-head { display: block; }
    .ind-plan-structure { margin-top: 10px; }
    .ind-plan-toolbar { justify-content: flex-start; margin-top: 10px; }
  }

  @media (max-width: 860px) {
    #app { flex-direction: column; }
    #sidebar {
      width: auto; height: auto; max-height: none; min-height: 0; overflow: visible; align-self: stretch;
      border-right: none; border-bottom: 1px solid var(--border); padding: 8px; gap: 6px;
      position: sticky; top: 0; z-index: 50;
    }
    #sidebarBrand { min-height: 38px; padding: 0 2px 2px; }
    #sidebar h1 { font-size: 16px; }
    #primaryNavCard, #secondaryNavCard { padding: 4px; flex: none; min-height: 0; }
    #primaryNav, #secondaryNav.simple-secondary { display: flex; flex-direction: row; gap: 4px; overflow-x: auto; scrollbar-width: thin; }
    .primary-nav-btn, #secondaryNav.simple-secondary .secondary-nav-btn { width: auto; flex: 0 0 auto; white-space: nowrap; padding: 7px 10px; }
    .nav-card-title { display: none; }
    #main, #marketPage, #lpPage, #industryPage, #wormholePage, #starMapPage { padding: 10px; }
    #secondaryNavCard.tree-secondary .desktop-tree-nav { display: none; }
    .mobile-drawer-toggle { display: block; width: 100%; }
    body.nav-drawer-open #secondaryNavCard.tree-secondary .desktop-tree-nav {
      display: flex; flex-direction: column; position: fixed; z-index: 90; left: 8px; right: 8px; top: 58px; bottom: 8px;
      padding: 12px; background: var(--panel-bg); border: 1px solid var(--border); border-radius: 10px; box-shadow: 0 12px 40px var(--overlay-bg);
    }
    body.nav-drawer-open .mobile-drawer-close { display: block; flex: 0 0 auto; margin-bottom: 8px; }
    body.nav-drawer-open .side-tree-content { flex: 1; min-height: 0; overflow: auto; }
    /* 市场页移动端：树/列表改纵排，物品表保留横向滑动（与现有页面一致） */
    .mkt-batch-input-row { flex-direction: column; }
    .mkt-batch textarea { min-width: 0; width: 100%; }
    .mkt-batch-actions { flex-direction: row; }
    .mkt-body { flex-direction: column; }
    #mktTree { width: 100%; flex: none; max-height: 260px; }
    /* LP 页移动端：商店列表/兑换表纵排 */
    .lp-body { flex-direction: column; }
    #lpStoreCol { width: 100%; flex: none; max-height: 300px; box-sizing: border-box; }
    /* 工业页移动端：配方/压缩表横向滑动（.table-wrap 自带），页签可横滑 */
    #industryPage .mkt-tabs { overflow-x: auto; }
    .owners-grid, .unassigned-grid { grid-template-columns: 1fr; }
  }

  /* ---------- 虫洞查询 ---------- */
  .wh-shell { width: 100%; max-width: 1500px; margin: 0 auto; }
  .wh-page-head, .wh-heading, .wh-section-title, .wh-links {
    display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
  }
  .wh-page-head { margin-bottom: 12px; }
  .wh-page-head h1, .wh-heading h2, .wh-section-title h3, .wh-reference h3 { margin: 0; color: var(--text-strong); }
  .wh-page-head h1 { font-size: 20px; }
  .wh-page-head p { margin: 4px 0 0; color: var(--text-secondary); }
  .wh-panel { overflow: hidden; }
  .wh-heading { padding-bottom: 12px; border-bottom: 1px solid var(--border-subtle); }
  .wh-eyebrow { color: var(--text-secondary); font-size: 12px; margin-bottom: 4px; }
  .wh-source { display: inline-block; border: 1px solid var(--border); border-radius: 999px; padding: 3px 8px; font-size: 11px; margin-left: 5px; white-space: nowrap; }
  .wh-source-official { color: var(--ok); border-color: color-mix(in srgb, var(--ok) 55%, var(--border)); }
  .wh-source-community { color: var(--warn-text); border-color: var(--warn-border); }
  .wh-properties { display: grid; grid-template-columns: repeat(4, minmax(150px, 1fr)); gap: 1px; margin: 14px 0; background: var(--border-subtle); border: 1px solid var(--border-subtle); border-radius: 8px; overflow: hidden; }
  .wh-property { min-width: 0; padding: 10px 12px; background: var(--panel-bg-alt); }
  .wh-property span { display: block; color: var(--text-secondary); font-size: 11px; margin-bottom: 3px; }
  .wh-property strong { display: block; color: var(--text-primary); overflow-wrap: anywhere; }
  .wh-table-wrap { width: 100%; overflow-x: auto; overscroll-behavior-inline: contain; }
  .wh-table { width: 100%; min-width: 760px; border-collapse: collapse; white-space: nowrap; }
  .wh-table th, .wh-table td { padding: 9px 10px; border-bottom: 1px solid var(--border-subtle); text-align: left; }
  .wh-table th { color: var(--th-text); font-size: 12px; }
  .wh-table th[data-wh-sort] { cursor: pointer; user-select: none; }
  .wh-table th[data-wh-sort]:hover { color: var(--th-hover); }
  .wh-table td.num, .wh-table th.num { text-align: right; }
  .wh-code-link { color: var(--link); font-weight: 700; text-decoration: none; }
  .wh-code-link:hover { text-decoration: underline; }
  .wh-section, .wh-reference { margin-top: 18px; }
  .wh-section-title { margin-bottom: 8px; }
  .wh-fold { margin-top: 10px; border: 1px solid var(--border-subtle); border-radius: 8px; background: var(--panel-bg-alt); overflow: hidden; }
  .wh-fold > summary { display: flex; justify-content: space-between; gap: 12px; cursor: pointer; padding: 10px 12px; color: var(--text-strong); }
  .wh-fold > summary::marker { color: var(--text-secondary); }
  .wh-fold > summary strong { color: var(--text-secondary); font-size: 12px; }
  .wh-planets { padding: 0 12px 10px; }
  .wh-planet { display: grid; grid-template-columns: 45px minmax(120px, 1fr) 120px 90px 75px; gap: 10px; padding: 7px 0; border-top: 1px solid var(--border-subtle); align-items: center; }
  .wh-planet small, .wh-planet span { color: var(--text-secondary); }
  .wh-sites { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .wh-site-list { padding: 0 12px 10px; }
  .wh-site-list > div { display: flex; justify-content: space-between; gap: 12px; padding: 7px 0; border-top: 1px solid var(--border-subtle); }
  .wh-site-list strong { color: var(--money); }
  .wh-empty { padding: 12px; color: var(--text-muted); }
  .wh-notice { margin-top: 14px; padding: 9px 11px; border-left: 3px solid var(--warn-border); background: var(--warn-bg); color: var(--warn-text); border-radius: 4px; line-height: 1.6; }
  .wh-reference h3 { font-size: 15px; margin-bottom: 7px; }
  .wh-links { justify-content: flex-start; margin-top: 16px; }
  .wh-links > span { color: var(--text-secondary); }
  .wh-footer { padding: 4px 2px 20px; color: var(--text-muted); font-size: 11px; line-height: 1.6; }
  .wh-side { display: flex; flex-direction: column; gap: 8px; }
  .wh-side-search { display: flex; flex-direction: column; align-items: stretch; }
  .wh-side-search .side-search { margin-bottom: 5px; }
  .wh-search-help { padding: 0 2px 6px; }
  .wh-search-submit { width: 100%; justify-content: center; margin-top: 3px; }
  .wh-live-suggestions { display: flex; flex-direction: column; gap: 3px; margin: 0 0 6px; padding: 4px; border: 1px solid var(--border-subtle); border-radius: 6px; background: var(--panel-bg-alt); }
  .wh-live-suggestions a { padding: 5px 7px; border-radius: 4px; color: var(--link); text-decoration: none; }
  .wh-live-suggestions a:hover { background: var(--control-bg-hover); }
  .wh-side-label { color: var(--text-secondary); font-size: 11px; margin-top: 3px; }
  .wh-side select { width: 100%; }
  .wh-side-hint { margin-top: 4px; }
  .wh-not-found { text-align: center; padding: 40px 20px; }
  .wh-not-found .wh-links { justify-content: center; }
  .wh-suggestions { margin: 12px 0; color: var(--text-secondary); }
  .wh-suggestions a { color: var(--link); margin-left: 8px; }

  @media (max-width: 860px) {
    .wh-properties { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .wh-sites { grid-template-columns: 1fr; }
    .wh-planet { grid-template-columns: 36px minmax(100px, 1fr) 92px; }
    .wh-planet span:nth-of-type(2), .wh-planet small { grid-column: auto; }
  }

  @media (max-width: 520px) {
    .wh-properties { grid-template-columns: 1fr; }
  }

  /* ---------- 行星产物 ---------- */
  .pi-shell { width: 100%; min-width: 0; }
  #industryPage:has([data-pi-simulator-host]) { height: 100vh; height: 100dvh; padding: 10px; overflow: hidden; }
  .pi-view-tabs { display: inline-flex; gap: 4px; padding: 4px; margin-bottom: 12px; border: 1px solid var(--border); border-radius: 10px; background: var(--panel-bg); }
  .pi-view-tabs button { padding: 8px 15px; border: 0; border-radius: 7px; background: transparent; color: var(--text-secondary); cursor: pointer; }
  .pi-view-tabs button:hover { color: var(--text-primary); background: var(--control-bg-hover); }
  .pi-view-tabs button.active { background: #315b9c; color: #fff; box-shadow: 0 5px 18px rgba(22,62,122,.28); }
  .pi-view-tabs button span { display: inline-block; padding: 1px 5px; margin-left: 4px; border: 1px solid rgba(255,255,255,.25); border-radius: 999px; font-size: 9px; vertical-align: 1px; }
  .pi-sim-loading, .pi-sim-load-error { min-height: 360px; display: grid; place-items: center; color: var(--text-secondary); }
  .pi-sim { --sim-border: rgba(120,151,190,.20); color: #dce6f0; }
  .pi-sim-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 18px; padding: 5px 2px 15px; }
  .pi-sim-head h2 { margin: 3px 0 4px; color: #eef5fb; font-size: 22px; letter-spacing: .02em; }
  .pi-sim-head p { margin: 0; color: #8795a5; font-size: 12px; }
  .pi-kicker { color: #668ab1; font: 700 9px/1.4 ui-monospace, SFMono-Regular, Consolas, monospace; letter-spacing: .18em; }
  .pi-sim-mode { display: flex; gap: 3px; padding: 3px; border: 1px solid var(--sim-border); border-radius: 8px; background: #10151d; }
  .pi-sim-mode button { padding: 7px 11px; border: 0; border-radius: 5px; background: transparent; color: #778596; cursor: pointer; font-size: 11px; }
  .pi-sim-mode button.active { background: #273c55; color: #dbe9f7; }
  .pi-sim-types { display: grid; grid-template-columns: repeat(8, minmax(0,1fr)); gap: 6px; margin-bottom: 10px; }
  .pi-sim-types button { display: grid; grid-template-columns: 38px minmax(0,1fr); align-items: center; gap: 7px; min-width: 0; padding: 7px; border: 1px solid var(--sim-border); border-radius: 8px; background: linear-gradient(135deg,#141a23,#10151d); color: #94a2b1; text-align: left; cursor: pointer; transition: border-color .15s, transform .15s, background .15s; }
  .pi-sim-types button:hover { transform: translateY(-1px); border-color: color-mix(in srgb,var(--planet-accent) 62%,#43566d); }
  .pi-sim-types button.active { border-color: var(--planet-accent); background: color-mix(in srgb,var(--planet-accent) 12%,#111823); box-shadow: inset 0 0 24px color-mix(in srgb,var(--planet-accent) 8%,transparent); }
  .pi-sim-types img { width: 38px; height: 38px; object-fit: contain; filter: drop-shadow(0 2px 5px rgba(0,0,0,.5)); }
  .pi-sim-types span, .pi-sim-types strong, .pi-sim-types small { display: block; min-width: 0; }
  .pi-sim-types strong { color: #d8e2ec; font-size: 11px; }
  .pi-sim-types small { margin-top: 3px; overflow: hidden; color: #657384; font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
  .pi-sim-grid { display: grid; grid-template-columns: minmax(540px,1fr) 310px; gap: 10px; min-height: 660px; }
  .pi-sim-stage-card, .pi-sim-panel { border: 1px solid var(--sim-border); border-radius: 10px; background: linear-gradient(150deg,rgba(19,26,36,.98),rgba(10,14,20,.98)); box-shadow: inset 0 1px rgba(255,255,255,.025); }
  .pi-sim-stage-card { min-width: 0; overflow: hidden; }
  .pi-sim-stage { position: relative; min-height: 660px; overflow: hidden; background: #05070c; cursor: grab; touch-action: none; user-select: none; }
  .pi-sim-stage:active { cursor: grabbing; }
  .pi-sim-stage canvas, .pi-sim-routes, .pi-sim-pins { position: absolute; inset: 0; width: 100%; height: 100%; }
  .pi-sim-stage canvas { display: block; }
  .pi-sim-routes, .pi-sim-pins { pointer-events: none; overflow: visible; }
  .pi-sim-route { fill: none; stroke: #49c4e9; stroke-width: 1.3; stroke-dasharray: 3 8; opacity: .72; filter: drop-shadow(0 0 3px rgba(61,196,234,.75)); animation: pi-route-flow 1.4s linear infinite; }
  .pi-sim-route.hot { stroke: #ffb250; stroke-width: 2; opacity: .92; animation-duration: .7s; }
  @keyframes pi-route-flow { to { stroke-dashoffset: -22; } }
  .pi-sim-pin { position: absolute; top: 0; left: 0; z-index: 2; width: 22px; height: 22px; padding: 0; border: 1px solid #7ddaf2; border-radius: 50%; background: rgba(8,24,34,.86); color: #bceaf5; pointer-events: auto; cursor: pointer; box-shadow: 0 0 0 3px rgba(68,191,226,.10),0 0 12px rgba(68,191,226,.28); transition: opacity .12s, border-color .12s; }
  .pi-sim-pin > span { position: absolute; inset: 6px; border-radius: 50%; background: currentColor; box-shadow: 0 0 6px currentColor; }
  .pi-sim-pin small { position: absolute; left: 50%; bottom: 26px; width: max-content; max-width: 120px; padding: 3px 6px; border: 1px solid rgba(133,159,185,.24); border-radius: 4px; background: rgba(6,10,15,.86); color: #d9e3ed; font-size: 9px; opacity: 0; transform: translateX(-50%); transition: opacity .12s; }
  .pi-sim-pin:hover small, .pi-sim-pin.selected small { opacity: 1; }
  .pi-sim-pin.command { border-color: #f06d59; color: #ff8a72; }
  .pi-sim-pin.extractor, .pi-sim-pin.head { border-color: #59d4ef; color: #65e0f6; }
  .pi-sim-pin.storage { border-color: #e6c865; color: #f1d570; }
  .pi-sim-pin.factory-p1 { border-color: #77cf86; color: #8ce19a; }
  .pi-sim-pin.factory-p2 { border-color: #c88be9; color: #dba5f4; }
  .pi-sim-pin.head { width: 14px; height: 14px; }
  .pi-sim-pin.head > span { inset: 4px; }
  .pi-sim-pin.selected { box-shadow: 0 0 0 4px rgba(255,255,255,.16),0 0 18px currentColor; }
  .pi-sim-stage-label { position: absolute; top: 15px; left: 16px; display: grid; gap: 3px; pointer-events: none; text-shadow: 0 2px 8px #000; }
  .pi-sim-stage-label strong { color: #ecf5fd; font-size: 14px; letter-spacing: .04em; }
  .pi-sim-stage-label span { color: #6d8093; font-size: 10px; }
  .pi-sim-stage-controls { position: absolute; right: 13px; bottom: 13px; display: flex; gap: 5px; }
  .pi-sim-stage-controls button { padding: 6px 9px; border: 1px solid rgba(126,151,180,.24); border-radius: 5px; background: rgba(7,12,18,.74); color: #8594a4; cursor: pointer; font-size: 10px; backdrop-filter: blur(6px); }
  .pi-sim-stage-controls button.active { border-color: #4f829e; color: #b9e4f2; }
  .pi-sim-fallback { position: absolute; inset: 0; display: grid; place-content: center; justify-items: center; gap: 8px; background: radial-gradient(circle,#162333,#070a0f 66%); }
  .pi-sim-fallback[hidden] { display: none; }
  .pi-sim-fallback img { width: 260px; height: 260px; object-fit: contain; }
  .pi-sim-fallback span { color: #7d8c9c; }
  .pi-sim-side { display: flex; flex-direction: column; gap: 10px; min-width: 0; }
  .pi-sim-panel { padding: 13px; }
  .pi-sim-panel-title { display: flex; align-items: center; justify-content: space-between; gap: 8px; color: #8494a5; font-size: 11px; }
  .pi-sim-panel-title strong { color: #dce8f2; font: 600 17px/1 ui-monospace,Consolas,monospace; }
  .pi-sim-panel-title small { color: #536374; }
  .pi-speed { display: grid; grid-template-columns: repeat(5,1fr); gap: 4px; margin-top: 11px; }
  .pi-speed button { min-width: 0; padding: 6px 3px; border: 1px solid rgba(115,143,172,.18); border-radius: 5px; background: #0c1219; color: #718193; cursor: pointer; font-size: 9px; }
  .pi-speed button:hover, .pi-speed button.active { border-color: #477ba1; background: #172a3a; color: #c0e1f3; }
  .pi-sim-metrics { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 5px; margin-top: 10px; }
  .pi-sim-metrics.muted { opacity: .32; }
  .pi-sim-metrics > div { padding: 9px; border: 1px solid rgba(116,143,171,.13); border-radius: 6px; background: rgba(7,12,18,.48); }
  .pi-sim-metrics span, .pi-sim-metrics strong, .pi-sim-metrics small { display: block; }
  .pi-sim-metrics span { color: #748495; font-size: 9px; }
  .pi-sim-metrics strong { margin: 4px 0 2px; color: #e2c47c; font: 600 16px/1.15 ui-monospace,Consolas,monospace; }
  .pi-sim-metrics small { color: #485767; font-size: 8px; }
  .pi-sim-warning { padding: 7px 8px; margin: 8px 0 0; border-left: 2px solid #9a6c39; background: rgba(105,69,28,.12); color: #927b60; font-size: 9px; line-height: 1.55; }
  .pi-sim-panel h3 { margin: 12px 0 10px; color: #e1eaf2; font-size: 15px; }
  .pi-pin-badge { padding: 2px 5px; border: 1px solid #5b7d9b; border-radius: 3px; color: #8ab6d3; font: 700 8px/1.2 ui-monospace,Consolas,monospace; }
  .pi-pin-details { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 5px; margin: 0; }
  .pi-pin-details div { padding: 7px; border: 1px solid rgba(115,142,169,.12); border-radius: 5px; background: rgba(5,10,15,.4); }
  .pi-pin-details dt { color: #596a7b; font-size: 8px; }
  .pi-pin-details dd { margin: 3px 0 0; color: #bdcad6; font: 11px/1.2 ui-monospace,Consolas,monospace; }
  .pi-sim-next { margin-top: auto; border-style: dashed; color: #607182; font-size: 10px; line-height: 1.55; }
  .pi-sim-next strong, .pi-sim-next span, .pi-sim-empty strong, .pi-sim-empty span { display: block; }
  .pi-sim-next strong { margin-bottom: 4px; color: #8495a5; }
  .pi-sim-next a { display: inline-block; margin: 7px 9px 0 0; color: #6f9ec2; font-size: 9px; text-decoration: none; }
  .pi-sim-next a:hover { color: #a8d6ef; text-decoration: underline; }
  .pi-sim-empty { display: grid; gap: 6px; min-height: 80px; place-content: center; text-align: center; }
  .pi-sim-empty strong { color: #b9c8d5; }
  .pi-sim-empty span { color: #667788; font-size: 10px; line-height: 1.55; }
  .pi-page-head, .pi-detail-head, .pi-summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
  .pi-page-head { margin-bottom: 12px; }
  .pi-page-head h1, .pi-detail h2, .pi-empty h2 { margin: 0; color: var(--text-strong); }
  .pi-page-head h1 { font-size: 20px; }
  .pi-page-head p, .pi-detail-head p, .pi-empty p { margin: 4px 0 0; color: var(--text-secondary); }
  .pi-toolbar { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; padding: 10px 12px; margin-bottom: 12px; border: 1px solid var(--border); border-radius: 9px; background: var(--panel-bg); }
  .pi-mode { display: flex; gap: 6px; }
  .pi-search { display: flex; align-items: center; gap: 7px; color: var(--text-secondary); }
  .pi-search input { width: 250px; }
  .pi-planet-picker { display: flex; gap: 5px; flex-wrap: wrap; }
  .pi-planet-picker label { display: flex; align-items: center; gap: 4px; padding: 5px 8px; border: 1px solid var(--border); border-radius: 999px; background: var(--control-bg); color: var(--text-primary); }
  .pi-legend { display: flex; gap: 10px; flex-wrap: wrap; margin-left: auto; font-size: 11px; color: var(--text-secondary); }
  .pi-legend .green { color: var(--ok); } .pi-legend .yellow { color: var(--warn-text); } .pi-legend .blue { color: #6ba4ff; }
  .pi-graph-scroll { width: 100%; max-width: 100%; overflow: hidden; border: 1px solid var(--border); border-radius: 10px; background: color-mix(in srgb, var(--bg-page) 78%, #07111f); }
  .pi-graph { position: relative; display: grid; grid-template-columns: 105px repeat(5, 150px); justify-content: space-between; column-gap: 0; width: 100%; min-width: 0; min-height: 760px; padding: 14px; box-sizing: border-box; align-items: start; }
  .pi-lines { position: absolute; z-index: 0; inset: 0; overflow: visible; pointer-events: none; }
  .pi-link { fill: none; stroke: #315eaa; stroke-width: 1.15; opacity: .12; }
  .pi-link.planet-link { stroke: #78a9ee; opacity: .1; }
  .pi-link.active { stroke: #4f8ef7; stroke-width: 2.4; opacity: .9; filter: drop-shadow(0 0 2px rgba(79,142,247,.45)); }
  .pi-link.downstream { stroke: #50b9cc; stroke-width: 1.6; opacity: .42; stroke-dasharray: 4 3; }
  .pi-column { position: relative; z-index: 1; display: flex; flex-direction: column; gap: 5px; min-width: 0; }
  .pi-column h3 { position: sticky; top: 0; z-index: 3; margin: 0 0 4px; padding: 6px 4px; border-bottom: 1px solid var(--border); background: color-mix(in srgb, var(--bg-page) 90%, transparent); color: var(--text-strong); font-size: 13px; }
  .pi-node { position: relative; z-index: 1; display: grid; grid-template-columns: 32px minmax(0, 1fr) auto; align-items: center; gap: 7px; width: 100%; min-height: 42px; padding: 4px 7px; border: 1px solid var(--border-subtle); border-radius: 6px; background: color-mix(in srgb, var(--panel-bg) 94%, #0b1c3d); color: var(--text-primary); text-align: left; cursor: pointer; transition: opacity .15s, border-color .15s, background .15s; }
  .pi-node:hover { border-color: var(--link); background: var(--control-bg-hover); }
  .pi-node-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .pi-node.selected { border-color: #e0a83e; background: color-mix(in srgb, var(--warn-bg) 60%, var(--panel-bg)); box-shadow: 0 0 0 1px rgba(224,168,62,.3); }
  .pi-node.upstream { border-color: #3766af; background: color-mix(in srgb, #173b75 38%, var(--panel-bg)); }
  .pi-node.downstream { border-color: #347781; background: color-mix(in srgb, #175866 22%, var(--panel-bg)); }
  .pi-node.self-sufficient { border-color: color-mix(in srgb, var(--ok) 65%, var(--border)); background: color-mix(in srgb, var(--ok) 15%, var(--panel-bg)); }
  .pi-node.partial { border-color: var(--warn-border); background: var(--warn-bg); }
  .pi-node.dim { opacity: .22; }
  .pi-node-qty { width: 58px; min-width: 0; height: 30px; padding: 3px 5px; border-color: #d89f35; color: var(--money); text-align: right; }
  .pi-node-number { max-width: 58px; overflow: hidden; color: var(--money); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
  .pi-planets { gap: 10px; }
  .pi-planet { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; min-height: 72px; border: 1px solid #294b80; border-radius: 7px; background: color-mix(in srgb, #152c53 45%, var(--panel-bg)); color: var(--text-primary); cursor: pointer; }
  .pi-planet img { display: block; width: 48px; height: 48px; object-fit: contain; filter: drop-shadow(0 2px 3px rgba(0,0,0,.42)); } .pi-planet strong { font-size: 12px; }
  .pi-planet.active { border-color: #5d98f2; background: color-mix(in srgb, #214c91 62%, var(--panel-bg)); box-shadow: 0 0 0 1px rgba(93,152,242,.25); }
  .pi-empty, .pi-detail { margin-top: 12px; }
  .pi-empty { text-align: center; padding: 30px 16px; }
  .pi-selection-bar { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 12px; padding: 10px 12px; }
  .pi-selection-bar > div { display: flex; gap: 8px; }
  .pi-selection-bar strong { color: var(--money); }
  .pi-stash-state { position: absolute; right: 12px; bottom: -18px; color: var(--ok); }
  .pi-price-panel { margin-top: 12px; }
  .pi-price-panel h2 { margin: 0 0 10px; color: var(--text-strong); font-size: 17px; }
  .pi-price-table { width: 100%; border-collapse: collapse; }
  .pi-price-table th, .pi-price-table td { padding: 8px 9px; border-bottom: 1px solid var(--border-subtle); vertical-align: middle; }
  .pi-price-table th { color: var(--th-text); font-size: 11px; text-align: left; white-space: nowrap; }
  .pi-price-table td.num { text-align: right; white-space: nowrap; }
  .pi-price-table tfoot th, .pi-price-table tfoot td { border-top: 1px solid var(--border); color: var(--money); }
  .pi-detail-head { margin-bottom: 12px; }
  .pi-summary { justify-content: flex-start; padding: 9px 11px; margin-bottom: 10px; border: 1px solid var(--border-subtle); border-radius: 7px; background: var(--panel-bg-alt); color: var(--text-secondary); }
  .pi-summary span { padding-right: 16px; border-right: 1px solid var(--border); } .pi-summary span:last-child { border-right: 0; }
  .pi-summary strong { color: var(--money); }
  .pi-table { width: 100%; min-width: 1120px; border-collapse: collapse; }
  .pi-table th, .pi-table td { padding: 8px 9px; border-bottom: 1px solid var(--border-subtle); vertical-align: middle; }
  .pi-table th { color: var(--th-text); font-size: 11px; text-align: left; white-space: nowrap; }
  .pi-table td.num { text-align: right; white-space: nowrap; }
  .pi-mobile-tree, .pi-mobile-picker { display: none; }
  .pi-mobile-planets { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin-bottom: 10px; }
  .pi-mobile-planets .pi-planet { min-height: 66px; }
  .pi-mobile-tier { border-top: 1px solid var(--border-subtle); }
  .pi-mobile-tier summary { padding: 10px 2px; color: var(--text-strong); cursor: pointer; }
  .pi-mobile-tier > div { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; padding-bottom: 10px; }
  .pi-tree-root, .pi-tree-root ul { margin: 0; padding-left: 18px; list-style: none; }
  .pi-tree-root { padding-left: 0; }
  .pi-tree-node { display: flex; align-items: center; gap: 8px; padding: 7px; margin: 4px 0; border: 1px solid var(--border-subtle); border-radius: 7px; background: var(--panel-bg-alt); }
  .pi-tree-node span:last-child { min-width: 0; } .pi-tree-node strong, .pi-tree-node small { display: block; }
  .pi-tree-node small { margin-top: 3px; color: var(--text-secondary); }
  .pi-tree-node.selected { border-color: #d89f35; }
  .pi-footer { padding: 10px 2px 20px; color: var(--text-muted); font-size: 11px; line-height: 1.6; }

  @media (max-width: 1180px) {
    .pi-toolbar { align-items: stretch; }
    .pi-search { width: 100%; } .pi-search input { flex: 1; min-width: 0; width: auto; }
    .pi-legend { margin-left: 0; }
    .pi-graph-scroll { display: none; }
    .pi-mobile-picker, .pi-mobile-tree { display: block; margin-top: 12px; }
    .pi-detail-head { align-items: flex-start; }
    .pi-selection-bar { align-items: flex-start; flex-direction: column; }
    .pi-stash-state { position: static; }
    .pi-sim-types { grid-template-columns: repeat(4,minmax(0,1fr)); }
    .pi-sim-grid { grid-template-columns: 1fr; }
    .pi-sim-stage, .pi-sim-grid { min-height: 570px; }
  }

  @media (max-width: 700px) {
    .pi-summary { display: grid; grid-template-columns: 1fr; }
    .pi-summary span { border-right: 0; }
    .pi-mobile-planets { grid-template-columns: repeat(2, 1fr); }
    .pi-mobile-tier > div { grid-template-columns: 1fr; }
    .pi-sim-head { align-items: flex-start; flex-direction: column; }
    .pi-sim-types { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .pi-sim-stage { min-height: 460px; }
  }

  .ind-refine { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 12px; align-items: stretch; }
  .ind-refine-pane { padding: 14px; min-width: 0; }
  .ind-refine-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
  .ind-refine-head h3 { margin: 0; }
  .ind-refine-head > div { display: flex; gap: 7px; flex-wrap: wrap; }
  .ind-refine-search textarea { width: 100%; min-height: 42px; resize: vertical; }
  .ind-refine-results { display: grid; max-height: 300px; margin: 7px 0; overflow: auto; border: 1px solid var(--border); border-radius: 8px; }
  .ind-refine-result { display: grid; grid-template-columns: 32px 1fr; align-items: center; gap: 8px; padding: 7px; border: 0; border-bottom: 1px solid var(--border-subtle); background: var(--panel-bg); color: var(--text-primary); text-align: left; cursor: pointer; }
  .ind-refine-result:hover { background: var(--control-bg-hover); }
  .ind-refine-result small, .ind-refine-card small, .ind-refine-output small { display: block; margin-top: 3px; color: var(--text-secondary); }
  .ind-refine-summary { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; margin: 10px 0; }
  .ind-refine-summary > div { padding: 9px; border: 1px solid var(--border-subtle); border-radius: 7px; background: var(--panel-bg-alt); }
  .ind-refine-summary span, .ind-refine-summary b, .ind-refine-summary small { display: block; }
  .ind-refine-summary span { color: var(--text-secondary); font-size: 11px; }
  .ind-refine-summary b { margin-top: 4px; color: var(--money); }
  .ind-refine-card, .ind-refine-output { display: grid; grid-template-columns: 48px minmax(0, 1fr) auto auto; align-items: center; gap: 9px; padding: 10px 2px; border-bottom: 1px solid var(--border-subtle); }
  .ind-refine-card-main { min-width: 0; }
  .ind-refine-qty { width: 110px; text-align: right; }
  .ind-refine-output { grid-template-columns: 48px minmax(0, 1fr) minmax(110px, auto) minmax(110px, auto); cursor: pointer; }
  .ind-refine-output:hover { background: var(--panel-bg-alt); }
  .ind-refine-output > div:nth-child(n+3) { text-align: right; }
  .ind-refine-sources { display: grid; grid-template-columns: 1fr auto; gap: 5px 10px; padding: 8px 12px 10px 58px; color: var(--text-secondary); background: var(--panel-bg-alt); }
  @media (max-width: 900px) {
    .ind-refine { grid-template-columns: 1fr; }
    .ind-refine-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  }
  @media (max-width: 560px) {
    .ind-refine-summary { grid-template-columns: 1fr; }
    .ind-refine-card { grid-template-columns: 40px 1fr auto; }
    .ind-refine-card > img { width: 40px; height: 40px; }
    .ind-refine-card .ind-refine-del { grid-column: 3; }
    .ind-refine-output { grid-template-columns: 40px 1fr; }
    .ind-refine-output > div:nth-child(n+3) { text-align: left; }
  }

  #mktSideTabsHost .contract-market-tabs {
    display: grid !important;
    grid-template-columns: 1fr 1fr;
    gap: 6px;
    margin: 8px 0 10px;
  }
  #mktSideTabsHost .contract-market-tabs .tab {
    min-width: 0;
    padding: 9px 6px;
    white-space: nowrap;
  }
/* 晨曦 ESI 战损导入 */
#killmailPage{min-width:0;overflow:auto;background:radial-gradient(circle at 20% 0,rgba(77,190,171,.08),transparent 38%)}
.killmail-page{max-width:1500px;margin:0 auto;padding:clamp(20px,3vw,42px)}
.killmail-page-head{display:flex;justify-content:space-between;gap:28px;align-items:flex-start;margin-bottom:24px}
.killmail-page-head h1{font-size:clamp(30px,4vw,52px);line-height:1;margin:8px 0 14px;color:#e6f3f0}
.killmail-page-head p{max-width:760px;margin:0;color:var(--muted);line-height:1.75}
.killmail-source{min-width:250px;border:1px solid rgba(112,211,191,.22);background:rgba(8,20,18,.72);padding:16px 18px;display:grid;gap:4px}
.killmail-source span,.killmail-source small{color:var(--muted);font-size:12px}.killmail-source strong{color:#8ee4d2}
.killmail-import{padding:20px;margin-bottom:22px}.killmail-import>label{display:block;font-weight:700;margin-bottom:10px;color:#d7e7e3}
.killmail-input-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:stretch}
.killmail-input-row textarea{width:100%;resize:vertical;min-height:76px;border:1px solid rgba(121,184,171,.34);background:#06100e;color:#dce9e6;padding:12px 14px;font:14px/1.55 ui-monospace,SFMono-Regular,Consolas,monospace}
.killmail-input-row .btn{min-width:130px}.killmail-status{min-height:22px;margin-top:10px;color:var(--muted)}
.killmail-status.busy{color:#e3c875}.killmail-status.success{color:#82dfbd}.killmail-status.error{color:#ff8f8f}
.killmail-empty{min-height:260px;border:1px dashed rgba(116,180,167,.22);display:grid;place-content:center;text-align:center;gap:8px;color:var(--muted)}
.killmail-empty strong{color:#bdd5d0;font-size:20px}.killmail-hero{display:grid;grid-template-columns:180px minmax(0,1fr) auto;gap:24px;align-items:center;padding:24px;border:1px solid rgba(112,211,191,.2);background:linear-gradient(100deg,rgba(12,28,25,.95),rgba(4,10,9,.82))}
.killmail-ship-render{width:180px;height:140px;object-fit:contain;filter:drop-shadow(0 0 20px rgba(94,209,185,.16))}.killmail-hero h2{font-size:32px;margin:5px 0 7px;color:#edf6f4}.killmail-victim{font-size:18px;color:#ec9999;font-weight:700}.killmail-place{margin-top:14px;color:#91cfc2}
.killmail-actions{display:grid;gap:10px;min-width:170px}.killmail-actions .btn{text-align:center;text-decoration:none}.killmail-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;margin:14px 0;background:rgba(112,211,191,.16)}
.killmail-metrics>div{background:#07110f;padding:16px 18px;display:grid;gap:5px}.killmail-metrics span{font-size:12px;color:var(--muted)}.killmail-metrics strong{font-size:24px;color:#d7ebe7}
.killmail-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);gap:14px}.killmail-grid>.panel{padding:0;min-width:0;overflow:hidden}
.killmail-section-title{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:16px 18px;border-bottom:1px solid rgba(120,176,165,.16)}.killmail-section-title h3{margin:0}.killmail-section-title span{font-size:12px;color:var(--muted)}
.killmail-table{width:100%;border-collapse:collapse;font-size:13px}.killmail-table th,.killmail-table td{padding:10px 12px;border-bottom:1px solid rgba(120,176,165,.1);text-align:left}.killmail-table th{position:sticky;top:0;background:#08110f;color:#789b94;font-weight:600}.killmail-table .num{text-align:right;font-variant-numeric:tabular-nums}.killmail-table .destroyed{color:#e28f8f}.killmail-table .dropped{color:#81cdb0}
.killmail-grid .table-wrap{max-height:520px;overflow:auto}.killmail-rank{display:inline-block;min-width:24px;color:#6f8c86}.killmail-final{display:inline-block;margin-left:7px;padding:2px 5px;background:rgba(213,71,71,.18);color:#ff9b9b;font-size:10px}
.killmail-item-name{display:flex;align-items:center;gap:8px;padding-left:calc(var(--item-depth) * 18px)}.killmail-item-name img{width:28px;height:28px;object-fit:contain;flex:none}.eyebrow{font:11px/1.2 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.16em;color:#70cdbb;text-transform:uppercase}
@media(max-width:950px){.killmail-page-head{display:grid}.killmail-source{min-width:0}.killmail-hero{grid-template-columns:100px minmax(0,1fr)}.killmail-ship-render{width:100px;height:100px}.killmail-actions{grid-column:1/-1;display:flex;flex-wrap:wrap}.killmail-metrics{grid-template-columns:repeat(2,1fr)}.killmail-grid{grid-template-columns:1fr}.killmail-input-row{grid-template-columns:1fr}}
@media(max-width:560px){.killmail-page{padding:14px}.killmail-hero{padding:16px;gap:14px}.killmail-ship-render{width:76px;height:76px}.killmail-hero h2{font-size:24px}.killmail-metrics strong{font-size:19px}.killmail-table th,.killmail-table td{padding:8px}.killmail-section-title{align-items:flex-start;flex-direction:column}}

/* Fleet owner settlement workspace */
.fleet-ledger-tabs{display:flex;gap:8px;margin:16px 0;position:sticky;top:0;z-index:3;padding:10px;background:var(--bg, #141518);border-radius:10px}
.fleet-tab-pane[hidden],.snap-actions [hidden],.fleet-detail-pane [hidden]{display:none!important}
.fleet-ledger-head,.fleet-ledger-toolbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:14px}
.fleet-ledger-head h3{margin:0}.fleet-ledger-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:16px 0 22px}
.fleet-ledger-metrics>div{padding:18px;background:rgba(100,140,190,.09);border:1px solid var(--border-subtle,#303540);border-radius:10px;color:var(--text-secondary)}
.fleet-ledger-metrics strong{display:block;color:var(--text-strong);font-size:20px;margin-top:8px;overflow-wrap:anywhere}
.fleet-owner-table{min-width:950px}.fleet-owner-table td{vertical-align:middle}.fleet-owner-table select{max-width:160px}
.fleet-owner-table .fleet-quantity-cell{min-width:108px;white-space:nowrap;font-variant-numeric:tabular-nums}.fleet-quantity-cell strong{color:var(--text-strong)}
.fleet-quantity-note{margin:12px 0}.fleet-quantity-summary{margin-bottom:18px}.fleet-quantity-summary h4{margin-top:0}.fleet-quantity-items{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:0 24px;max-width:880px;margin:0}.fleet-quantity-items>div{display:flex;justify-content:space-between;align-items:baseline;gap:20px;padding:9px 0;border-bottom:1px solid var(--border-subtle,#303540)}.fleet-quantity-items dt{min-width:0;overflow-wrap:anywhere}.fleet-quantity-items dd{margin:0;white-space:nowrap;font-variant-numeric:tabular-nums}.fleet-character-quantity{font-variant-numeric:tabular-nums}
.fleet-owner-expand{border:0;background:transparent;color:var(--text-strong);font:inherit;font-weight:600;cursor:pointer;text-align:left;padding:6px 0}
.fleet-owner-detail{padding:16px;white-space:normal}.fleet-detail-line{display:flex;gap:18px;align-items:center;flex-wrap:wrap;padding:10px 0;border-bottom:1px solid var(--border-subtle,#303540)}
.fleet-detail-line.voided{opacity:.55}.fleet-payment-state{display:block;margin-bottom:8px;color:#e5bd76}.fleet-payment-state.paid{color:#7bd88a}
.fleet-ledger-warning{color:#e5bd76}.fleet-legacy>summary{cursor:pointer;padding:8px}.fleet-ledger-toolbar label{display:flex;align-items:center;gap:8px}
.fleet-custom-prices{margin:16px 0;padding:12px 16px;border:1px solid var(--border-subtle,#303540);border-radius:6px}.fleet-custom-prices>summary{cursor:pointer;font-weight:600}.fleet-custom-prices>summary .hint{margin-left:12px;font-weight:400}.fleet-custom-price-table{min-width:640px}.fleet-custom-price-table input{width:155px;max-width:100%;text-align:right;font-variant-numeric:tabular-nums}.fleet-custom-breakdown{padding:8px 12px 14px;font-size:12px}.fleet-custom-breakdown>div{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:5px 0}
@media(max-width:800px){.fleet-ledger-metrics{grid-template-columns:1fr}.fleet-ledger-tabs{position:static}.fleet-ledger-toolbar{align-items:stretch;flex-direction:column}}
/* Unified industry workspace and dedicated batch estimator. */
.ind-plan-layout{grid-template-columns:240px minmax(0,1fr)}
.ind-plan-work{min-width:0}.ind-plan-tools{padding:14px}.ind-plan-tools>label{display:inline-flex;gap:8px;align-items:center;margin:0 14px 10px 0}
.ind-plan-tools textarea{width:100%;min-height:160px;resize:vertical}.ind-plan-tools details{margin-top:8px}.ind-stock-list{display:flex;flex-wrap:wrap;gap:10px}.ind-stock-list label{display:flex;gap:8px;align-items:center}.ind-stock-list input{width:120px}
.ind-material-scroll{overflow:auto;max-height:75vh;border:1px solid var(--border,#333844);border-radius:10px;background:var(--panel-bg,#1b1e25)}
.ind-material-matrix{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-size:13px}.ind-material-matrix>thead th{position:sticky;top:0;z-index:2;background:var(--panel-bg-alt,#272e3a);color:var(--th-text,#9dabbd);text-align:left;padding:12px;border-right:1px solid var(--border,#414957)}
.ind-material-matrix>tbody>tr>td{vertical-align:top;width:370px;min-width:370px;max-width:370px;border-right:1px solid #414957;padding:0}
.ind-material-list{width:100%;border-collapse:collapse;table-layout:fixed}.ind-material-list th:first-child{width:47%}.ind-material-list th:nth-child(2){width:22%}.ind-material-list th{font-size:11px;color:var(--th-text,#9dabbd);padding:7px;text-align:left}.ind-material-list td{padding:8px 6px;border-top:1px solid var(--border-subtle,#303744);vertical-align:top;overflow-wrap:anywhere}
.ind-material-list summary{cursor:pointer;list-style:none;display:flex;gap:6px;align-items:center;line-height:1.5}.ind-material-list img{width:24px;height:24px;flex-shrink:0}.ind-material-list small{display:block;font-size:11px;color:var(--text-secondary,#a1afc3);margin-top:5px}.ind-material-list select{width:100%;padding:4px 2px;font-size:11px;min-width:0}.ind-material-list details[open]{position:relative}.ind-material-list .ind-plan-node{width:300px;margin-top:10px;background:var(--panel-bg-alt,#202630);position:relative;z-index:1;border:1px solid var(--border-strong,#5d6d84)}.ind-material-list input{max-width:100px}.ind-material-matrix footer{padding:12px;font-size:12px;line-height:1.9;border-top:1px solid var(--border,#414957);color:var(--text-secondary,#a9bdd6)}
.ind-material-stock{background:color-mix(in srgb,var(--ok,#84ce99) 14%,var(--panel-bg,#1e1e22))}.ind-material-make>td:first-child{border-left:3px solid #7cabc6}.ind-material-buy>td:first-child{border-left:3px solid #d5b36c}.ind-material-list .positive{color:var(--ind-surplus-color,var(--ok,#84ce99))}
#mktBatchBrowse[hidden]{display:none!important}
#mktTable thead th{position:sticky;top:0;background:#222630;z-index:1}#mktPager{padding:12px 0}#mktTable tbody .mkt-row{cursor:pointer}
@media(max-width:1000px){.ind-plan-layout{grid-template-columns:1fr}.ind-plan-catalog{max-height:340px;overflow:auto}}
.ind-plan-summary{grid-template-columns:repeat(auto-fit,minmax(135px,1fr))}.ind-plan-head{display:block}.ind-plan-structure{margin:12px 0}.ind-plan-toolbar{justify-content:flex-start}.ind-material-scroll{width:100%;min-width:0}.ind-material-matrix>tbody>tr>td{width:320px;min-width:320px;max-width:320px}.ind-plan-catalog>input,.ind-plan-tools textarea{background:var(--input-bg,#14171c);color:var(--text,#ddd);border:1px solid var(--border,#414957);border-radius:6px;padding:8px}
.ind-plan-summary{grid-template-columns:repeat(3,minmax(0,1fr))}@media(min-width:1800px){.ind-plan-summary{grid-template-columns:repeat(6,minmax(0,1fr))}}@media(max-width:600px){.ind-plan-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Material-only workspace: compact, independent depth columns. */
.ind-material-workspace{gap:10px;grid-template-columns:210px minmax(0,1fr)}
.ind-material-workspace .ind-plan-head{padding:12px;margin-bottom:8px}.ind-material-workspace .ind-plan-head h2{font-size:18px}.ind-material-workspace .ind-plan-head p{margin:6px 0}
.ind-material-workspace .ind-plan-targets{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.ind-material-workspace .ind-plan-target{padding:6px;gap:8px}.ind-material-workspace .ind-plan-target small{display:none}.ind-material-workspace .ind-plan-target img{width:28px;height:28px}.ind-material-workspace .ind-plan-target input{width:85px}
.ind-material-workspace .ind-plan-tools{padding:10px;margin:8px 0}.ind-material-workspace .ind-plan-tools textarea{min-height:76px;width:100%;box-sizing:border-box}.ind-material-workspace summary{cursor:pointer}
.ind-material-workspace .ind-material-scroll{border-radius:3px;max-height:72vh}.ind-material-workspace .ind-material-matrix>thead th{padding:7px 8px;font-size:13px}.ind-material-workspace .ind-material-matrix>tbody>tr>td{width:290px;min-width:290px;max-width:290px}
.ind-material-workspace .ind-material-list{font-size:12px}.ind-material-workspace .ind-material-list th:first-child{width:46%}.ind-material-workspace .ind-material-list th:nth-child(2){width:18%}.ind-material-workspace .ind-material-list th:nth-child(3){width:18%}.ind-material-workspace .ind-material-list th:nth-child(4){width:18%}
.ind-material-workspace .ind-material-list td{padding:4px 5px}.ind-material-workspace .ind-material-list summary{gap:4px;line-height:1.25}.ind-material-workspace .ind-material-list img{width:20px;height:20px}.ind-material-workspace .ind-material-list small{font-size:10px;margin-top:2px}.ind-material-workspace .ind-material-list .num{font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.ind-material-workspace .ind-material-settings{padding:8px 0;display:grid;gap:7px}.ind-material-settings label{display:grid;gap:3px}.ind-material-settings input,.ind-material-settings select{width:100%;max-width:100%;box-sizing:border-box}.ind-shortage{color:var(--ind-shortage-color,#e9c37a)}.ind-material-warning{padding:12px;background:#49381f;color:#ffdda2}.ind-material-params{position:relative;max-width:500px}.ind-material-params[open]{flex-basis:100%}.ind-material-workspace .ind-plan-procurement{margin-top:12px;padding:12px}.ind-material-workspace .ind-plan-procurement h3{margin:0 0 10px;font-size:15px}
@media(max-width:1000px){.ind-material-workspace{grid-template-columns:1fr}.ind-material-workspace .ind-plan-catalog{position:static;max-height:280px;overflow:auto}}

/* One catalog tree: products live directly in their own categories. */
.ind-material-workspace .ind-plan-catalog{display:flex;flex-direction:column;max-height:calc(100vh - 34px)}
.ind-material-workspace .ind-plan-tree{max-height:calc(100vh - 160px);overflow:auto;min-height:160px;border-radius:4px}
.ind-plan-tree-folder,.ind-plan-tree-item{display:flex;align-items:center;gap:5px;width:100%;box-sizing:border-box;border:0;border-radius:0;background:transparent;color:var(--text-primary,#ddd);font:inherit;text-align:left;cursor:pointer;padding:6px 5px 6px calc(5px + var(--tree-depth)*8px)}
.ind-plan-tree-folder>span:nth-child(2),.ind-plan-tree-item>span{flex:1;min-width:0;overflow-wrap:anywhere}.ind-plan-tree-folder small{font-size:10px;color:var(--text-muted,#8c96a5)}
.ind-plan-tree-item{font-size:12px;padding-top:4px;padding-bottom:4px}.ind-plan-tree-item img{width:24px;height:24px;flex-shrink:0}.ind-plan-tree-item small{color:#8bce9e}
.ind-plan-tree-folder:hover,.ind-plan-tree-item:hover{background:var(--control-bg-hover,#303743)}.ind-plan-tree-item.selected{background:#304653;color:#e5f5ff;box-shadow:inset 2px 0 #8bce9e}
@media(max-width:1000px){.ind-material-workspace .ind-plan-catalog{max-height:320px}.ind-material-workspace .ind-plan-tree{max-height:210px}}

/* Material categories keep their identity while adapting to the surface theme. */
:is(.ind-material-workspace,.ind-character-material-plan) .ind-kind-raw{color:var(--text-primary,#eee)}
:is(.ind-material-workspace,.ind-character-material-plan) .ind-kind-manufacture{color:var(--ind-manufacture-color,#7ff)}
:is(.ind-material-workspace,.ind-character-material-plan) .ind-kind-reaction{color:var(--ind-reaction-color,#f7f)}
:is(.ind-material-workspace,.ind-character-material-plan) .ind-kind-planet{color:var(--ind-planet-color,#fbd)}
:is(.ind-material-workspace,.ind-character-material-plan) .ind-kind-stopped{color:var(--ind-stopped-color,#fa7)}
:is(.ind-material-workspace,.ind-character-material-plan) .ind-stock-credit{color:var(--ind-stock-color,#ac7)}
:is(.ind-material-workspace,.ind-character-material-plan) .ind-surplus-credit{color:var(--ind-surplus-color,#7f7)}
.ind-material-legend{display:flex;flex-wrap:wrap;gap:6px 15px;font-size:12px;padding:6px 0 9px}
.ind-material-legend span:before{content:'●';font-size:9px;margin-right:4px}

.ind-farming-block{margin-top:16px}.ind-planet-options{padding:10px;font-size:12px}.ind-planet-options label{display:flex;align-items:center;gap:5px;padding:5px 0}.ind-planet-options label small{margin-left:auto;color:#9da9b8}.ind-planet-options input{width:auto}.ind-planet-options p{line-height:1.6}
/* Each stage is 245px, 30% narrower than the previous 350px material column. */
.ind-material-matrix{table-layout:fixed;width:calc(var(--ind-stage-count,1)*245px);min-width:0}
.ind-material-matrix>thead th,.ind-material-matrix>tbody>tr>td,.ind-material-workspace .ind-material-matrix>tbody>tr>td{box-sizing:border-box;width:245px;min-width:245px;max-width:245px}
.ind-material-stage{position:relative}.ind-material-matrix .ind-material-list,.ind-material-workspace .ind-material-list{table-layout:fixed;font-size:12px}
.ind-material-matrix .ind-material-list th:first-child,.ind-material-workspace .ind-material-list th:first-child{width:auto}
.ind-material-matrix .ind-material-list th:nth-child(n+2),.ind-material-workspace .ind-material-list th:nth-child(n+2){width:72px;box-sizing:border-box;text-align:right}
.ind-material-matrix .ind-material-list td{padding:5px;vertical-align:top}.ind-material-matrix .ind-material-list th{padding:7px 5px;white-space:nowrap;overflow-wrap:normal}
.ind-material-matrix .ind-material-list td.num,.ind-material-workspace .ind-material-list td.num{white-space:normal;overflow-wrap:normal;word-break:normal;font-variant-numeric:tabular-nums;text-align:right}
.ind-material-matrix .ind-material-detail>summary{gap:4px;line-height:1.35}.ind-material-matrix .ind-material-detail>summary img{width:20px;height:20px}
.ind-material-name{min-width:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.ind-material-matrix .ind-material-detail[open]{position:static}.ind-material-detail>summary:focus-visible{outline:2px solid var(--accent,#7aa3db);outline-offset:2px;border-radius:3px}
.ind-material-detail-body{position:absolute;left:6px;right:6px;z-index:4;box-sizing:border-box;margin-top:6px;padding:10px;background:var(--panel-bg,#202630);border:1px solid var(--border,#5d6d84);border-radius:7px;box-shadow:0 8px 24px #0005;color:var(--text-primary,#ddd);text-align:left;overflow-wrap:anywhere}
.ind-material-detail-body>strong{display:block;font-size:13px;line-height:1.5}.ind-material-detail-body .ind-material-settings{padding:8px 0 0;display:grid;gap:7px}
.ind-material-detail-body .ind-material-settings label{display:grid;gap:3px}.ind-material-detail-body .ind-material-settings input,.ind-material-detail-body .ind-material-settings select{box-sizing:border-box;width:100%;max-width:100%;min-width:0}
.ind-material-credits{display:grid;gap:5px;margin:8px 0;padding-bottom:8px;border-bottom:1px solid var(--border,#414957)}.ind-material-credits>div{display:flex;justify-content:space-between;gap:8px}.ind-material-credits dt{color:var(--text-secondary,#9dabbd)}.ind-material-credits dd{margin:0;font-variant-numeric:tabular-nums;text-align:right}
.ind-plan-procurement{padding:16px;margin-top:16px;border:1px solid var(--border,#414957);border-left:3px solid var(--accent,#7aa3db);border-radius:8px;background:var(--panel-bg,#1d2028)}
.ind-material-workspace .ind-plan-procurement{padding:16px}.ind-plan-procurement h3,.ind-material-workspace .ind-plan-procurement h3{font-size:18px;margin:0}
.ind-procurement-count{display:inline-block;margin-left:6px;padding:2px 8px;border-radius:5px;background:var(--control-bg,#293240);color:var(--text-secondary,#b3c4dc);font-size:12px;font-weight:400;vertical-align:middle}.ind-procurement-note{font-size:12px;color:var(--text-muted,#9dabbd);margin:6px 0 0}
.ind-plan-procurement .ind-shortage{font-size:15px;font-weight:600;font-variant-numeric:tabular-nums}.ind-plan-procurement .grid th:last-child{color:var(--text-strong,#edf0f7)}

.ind-guide{max-width:1180px;margin:0 auto;padding:24px 32px;background:var(--panel-bg,#1d2028);border:1px solid var(--border,#343b48);border-radius:12px;line-height:1.85;color:var(--text-primary,#ddd)}.ind-guide h1{font-size:28px;line-height:1.4;margin:24px 0 14px}.ind-guide h2{margin-top:36px;padding-top:18px;border-top:1px solid var(--border,#343b48);font-size:21px;scroll-margin-top:20px}.ind-guide h3{font-size:17px;color:#c5d8ed}.ind-guide p,.ind-guide li{max-width:1000px}.ind-guide-kicker{color:#89c5c8;font-size:13px}.ind-guide nav{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.ind-guide nav a{padding:5px 10px;background:#28323e;border-radius:5px;font-size:13px}.ind-guide a{color:#9dc5f1}.ind-guide-table{overflow:auto;margin:16px 0}.ind-guide table{border-collapse:collapse;min-width:640px;width:100%;font-size:13px}.ind-guide th,.ind-guide td{padding:10px 12px;border:1px solid #3a4250;text-align:left}.ind-guide th{background:#293240;color:#e6edf5}.ind-guide tr:nth-child(even){background:#222832}.ind-guide strong{color:#edd08b}@media(max-width:700px){.ind-guide{padding:16px}.ind-guide h1{font-size:23px}}

.ind-guide-item{display:flex;align-items:center;gap:10px;min-width:160px}.ind-guide-item img{width:40px;height:40px;flex-shrink:0;border-radius:5px;background:#13171e;object-fit:contain}.ind-guide-item>span{min-width:0}

.ind-plan-procurement-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.ind-material-workspace .ind-plan-procurement-heading h3{margin:0}.ind-plan-procurement-heading{margin-bottom:10px}#indPlanEstimateStatus{margin:0 0 10px}#indPlanEstimateStatus[hidden]{display:none}


/* 批量估价：固定输入区与两种明细视图，金额保留完整宽度。 */
#mktBatchBrowse { display: block; min-width: 0; margin: 0; padding: 0; border: 0; border-radius: 0; background: transparent; }
#mktBatchBrowse .mkt-batch-workspace { display: grid; grid-template-columns: clamp(300px,21vw,340px) minmax(0,1fr); gap: 16px; align-items: start; min-width: 0; }
#mktBatchBrowse .mkt-batch-sidebar { position: sticky; top: 16px; display: grid; gap: 12px; min-width: 0; }
#mktBatchBrowse :is(.mkt-batch-input-panel,.mkt-batch-parameters,.mkt-batch-results-panel) { min-width: 0; padding: 15px; border: 1px solid var(--border); border-radius: 3px; background: var(--panel-bg); }
#mktBatchBrowse .mkt-batch-results-panel { padding: 15px; container-type: inline-size; }
#mktBatchBrowse :is(.mkt-batch-panel-head,.mkt-batch-result-head) { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 36px; margin-bottom: 12px; }
#mktBatchBrowse :is(.mkt-batch-panel-head,.mkt-batch-result-head,.mkt-batch-parameters) :is(h2,h3) { margin: 0; color: var(--text-strong); font-size: 18px; line-height: 1.4; }
#mktBatchBrowse .mkt-batch-panel-head .btn { min-height: 32px; padding: 5px 9px; font-size: 12px; }
#mktBatchBrowse .mkt-batch-panel-head small { color: var(--text-secondary); font-size: 11px; }
#mktBatchBrowse :is(.mkt-batch-panel-head,.mkt-batch-result-head) h2 > span { color: var(--text-secondary); font-weight: 500; }
#mktBatchBrowse #mktBatchInputHelp { margin: 0 0 10px; }
#mktBatchBrowse #mktBatchInput { display: block; width: 100%; min-width: 0; height: 220px; min-height: 180px; max-height: 240px; box-sizing: border-box; resize: vertical; overflow: auto; padding: 10px; font-size: 13px; line-height: 1.65; border-radius: 2px; }
#mktBatchBrowse #mktBatchInputStatus { min-height: 20px; margin: 10px 0 6px; color: var(--text-secondary); font-size: 12px; line-height: 1.6; }
#mktBatchBrowse .mkt-batch-input-errors { margin: 6px 0; color: var(--warn-text); font-size: 12px; line-height: 1.6; }
#mktBatchBrowse .mkt-batch-input-errors > summary { cursor: pointer; }
#mktBatchBrowse .mkt-batch-input-errors[open] { max-height: 150px; overflow: auto; }
#mktBatchBrowse .mkt-batch-actions { display: flex; flex-direction: column; align-items: stretch; gap: 8px; }
#mktBatchBrowse .mkt-batch-actions .hint { margin: 0; font-size: 11px; line-height: 1.6; }
#mktBatchBrowse #mktBatchCalculate { width: 100%; min-height: 42px; font-size: 15px; font-weight: 700; }
#mktBatchBrowse .mkt-batch-parameters > :is(h2,h3,header) { margin-bottom: 12px; }
#mktBatchBrowse .mkt-batch-parameters label { display: grid; grid-template-columns: minmax(0,1fr) 105px auto; gap: 8px; align-items: center; margin-top: 10px; color: var(--text-primary); font-size: 13px; }
#mktBatchBrowse .mkt-batch-parameters input { min-width: 0; width: 105px; min-height: 36px; box-sizing: border-box; text-align: right; font-variant-numeric: tabular-nums; }
#mktBatchBrowse .mkt-batch-rate-hint { margin: 12px 0 0; color: var(--text-secondary); font-size: 11px; line-height: 1.65; }
#mktBatchBrowse .mkt-batch-result-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 7px; }
#mktBatchBrowse .mkt-batch-result-actions .btn { min-height: 34px; padding: 7px 10px; white-space: nowrap; font-size: 12px; }
#mktBatchBrowse #mktBatchResult { min-width: 0; margin-top: 0; }
#mktBatchBrowse .mkt-batch-empty { display: flex; flex-direction: column; justify-content: center; align-items: center; min-height: 250px; padding: 24px; border: 1px dashed var(--border); background: var(--panel-bg-alt); text-align: center; line-height: 1.7; }
#mktBatchBrowse .mkt-batch-empty > strong { color: var(--text-strong); font-size: 16px; }
#mktBatchBrowse .mkt-batch-empty .hint { max-width: 440px; margin: 8px 0 0; font-size: 12px; }
#mktBatchBrowse .mkt-estimate-summary { position: static; display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 9px; margin: 0 0 10px; border: 0; border-radius: 0; overflow: visible; background: transparent; }
#mktBatchBrowse .mkt-batch-summary-card { min-width: 0; padding: 12px; border: 1px solid var(--border); border-radius: 2px; background: var(--panel-bg-alt); }
#mktBatchBrowse .mkt-batch-summary-card > :is(small,strong) { display: block; }
#mktBatchBrowse .mkt-batch-summary-card > small { color: var(--text-secondary); font-size: 11px; line-height: 1.6; }
#mktBatchBrowse .mkt-batch-summary-card > strong { margin: 8px 0 6px; color: var(--text-strong); font-size: 17px; font-size: clamp(14px,2.7cqw,23px); line-height: 1.35; font-variant-numeric: tabular-nums; white-space: nowrap; overflow-wrap: normal; word-break: normal; max-width: 100%; overflow-x: auto; scrollbar-width: thin; }
#mktBatchBrowse .mkt-batch-summary-card .mkt-batch-unit { margin-left: 3px; font-size: 11px; font-weight: 500; }
#mktBatchBrowse .mkt-batch-summary-card .mkt-batch-settlement { margin-top: 6px; font-size: 11px; line-height: 1.6; color: var(--text-secondary); }
#mktBatchBrowse .mkt-batch-summary-card .mkt-batch-settlement b { color: var(--text-primary); font-weight: 600; white-space: nowrap; }
#mktBatchBrowse .mkt-batch-summary-card .mkt-batch-missing { display: block; margin-left: 0; color: var(--warn-text); font-size: 11px; white-space: normal; }
#mktBatchBrowse :is(.mkt-batch-difference.is-positive,.mkt-batch-difference.is-positive > strong) { color: var(--ok,#368553); }
#mktBatchBrowse :is(.mkt-batch-difference.is-negative,.mkt-batch-difference.is-negative > strong) { color: var(--warn-text,#cd5429); }
#mktBatchBrowse .mkt-batch-meta { display: flex; flex-wrap: wrap; align-items: center; column-gap: 14px; row-gap: 5px; margin: 0 0 10px; padding: 9px 11px; border: 1px solid var(--border); border-radius: 2px; background: var(--panel-bg-alt); font-size: 12px; line-height: 1.65; }
#mktBatchBrowse .mkt-batch-volumes { display: flex; flex-wrap: wrap; align-items: center; gap: 5px 9px; font-variant-numeric: tabular-nums; }
#mktBatchBrowse .mkt-batch-volumes b { color: var(--text-strong); white-space: nowrap; }
#mktBatchBrowse .mkt-batch-meta-warning { color: var(--warn-text); }
#mktBatchBrowse .mkt-batch-meta-time { margin-left: auto; color: var(--text-secondary); white-space: nowrap; }
#mktBatchBrowse .mkt-batch-table-toolbar { position: relative; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; min-height: 42px; margin-bottom: 10px; }
#mktBatchBrowse :is(.mkt-batch-view-switch,.mkt-batch-basis-switch) { display: flex; align-items: center; gap: 0; min-width: 0; }
#mktBatchBrowse :is(.mkt-batch-view-switch,.mkt-batch-basis-switch) .btn { min-height: 36px; margin: 0; padding: 7px 10px; white-space: nowrap; border-radius: 0; font-size: 12px; }
#mktBatchBrowse :is(.mkt-batch-view-switch,.mkt-batch-basis-switch) .btn + .btn { margin-left: -1px; }
#mktBatchBrowse .mkt-batch-view-switch .btn { min-width: 80px; }
#mktBatchBrowse .mkt-batch-view-switch .btn[aria-pressed="true"] { background: var(--panel-bg); color: var(--text-strong); border-bottom-color: var(--accent,#d3c94b); box-shadow: inset 0 -2px var(--accent,#d3c94b); font-weight: 700; }
#mktBatchBrowse .mkt-batch-basis-switch { gap: 0; margin-left: auto; }
#mktBatchBrowse .mkt-batch-basis-switch .btn { min-width: 76px; }
#mktBatchBrowse .mkt-batch-basis-switch .btn[aria-pressed="true"] { color: var(--primary-btn-text); background: var(--primary-btn-bg); border-color: var(--primary-btn-border); font-weight: 700; }
#mktBatchBrowse .mkt-batch-basis-switch > span { margin-right: 8px; color: var(--text-secondary); font-size: 12px; white-space: nowrap; }
#mktBatchBrowse .mkt-batch-column-settings { position: relative; font-size: 12px; }
#mktBatchBrowse .mkt-batch-column-settings > summary { display: flex; align-items: center; min-height: 36px; box-sizing: border-box; padding: 7px 10px; cursor: pointer; border: 1px solid var(--border); border-radius: 2px; background: var(--btn-bg); color: var(--btn-text); white-space: nowrap; }
#mktBatchBrowse .mkt-batch-column-settings > :not(summary) { position: absolute; top: calc(100% + 5px); right: 0; z-index: 12; min-width: 220px; max-width: min(360px,80vw); max-height: min(430px,60vh); overflow: auto; padding: 12px; border: 1px solid var(--border-strong,var(--border)); background: var(--panel-bg); box-shadow: 0 8px 24px #0003; }
#mktBatchBrowse .mkt-batch-column-settings label { display: flex; align-items: center; gap: 7px; margin: 6px 0; font-size: 12px; }
#mktBatchBrowse .mkt-batch-table-caption { margin: 8px 0; color: var(--text-secondary); font-size: 12px; line-height: 1.6; }
#mktBatchBrowse .mkt-batch-status { margin: 8px 0; font-size: 12px; line-height: 1.65; }
#mktBatchBrowse .mkt-batch-rich-scroll { width: 100%; min-width: 0; max-width: 100%; max-height: 62vh; overflow: auto; isolation: isolate; border: 1px solid var(--border); border-radius: 2px; scrollbar-gutter: stable; }
#mktBatchBrowse #mktBatchTable { width: 100%; min-width: 880px; table-layout: fixed; border-collapse: separate; border-spacing: 0; color: var(--text-primary); font-size: 13px; white-space: nowrap; }
#mktBatchBrowse #mktBatchTable[data-view="refine"] { min-width: 1080px; }
#mktBatchBrowse #mktBatchTable .mkt-batch-name-col { width: 210px; }
#mktBatchBrowse #mktBatchTable .mkt-batch-qty-col { width: 126px; }
#mktBatchBrowse #mktBatchTable .mkt-batch-price-col { width: 155px; }
#mktBatchBrowse #mktBatchTable .mkt-batch-volume-col { width: 150px; }
#mktBatchBrowse #mktBatchTable .mkt-batch-operation-col { width: 68px; }
#mktBatchBrowse #mktBatchTable[data-view="refine"] .mkt-batch-operation-col { width: 116px; }
#mktBatchBrowse #mktBatchTable .mkt-batch-daily-volume-col { width: 130px; }
#mktBatchBrowse #mktBatchTable .mkt-batch-daily-turnover-col { width: 165px; }
#mktBatchBrowse #mktBatchTable > thead > tr > th { position: sticky; top: 0; z-index: 3; height: 51px; padding: 9px 11px; box-sizing: border-box; background: var(--panel-bg-alt); border-bottom: 1px solid var(--border); font-size: 12px; line-height: 1.4; white-space: nowrap; }
#mktBatchBrowse #mktBatchTable > tbody > tr > td { padding: 10px 11px; border-bottom: 1px solid var(--border-subtle); line-height: 1.45; white-space: nowrap; overflow-wrap: normal; word-break: normal; }
#mktBatchBrowse #mktBatchTable :is(.num,.mkt-batch-number) { text-align: right; white-space: nowrap; overflow-wrap: normal; word-break: normal; font-variant-numeric: tabular-nums; }
#mktBatchBrowse #mktBatchTable .mkt-batch-unit { white-space: nowrap; }
#mktBatchBrowse #mktBatchTable > :is(thead,tbody,tfoot) > tr > .mkt-batch-name-cell { position: sticky; left: 0; min-width: 210px; max-width: 210px; z-index: 2; background: var(--panel-bg); box-shadow: 1px 0 var(--border); }
#mktBatchBrowse #mktBatchTable > thead > tr > .mkt-batch-name-cell { z-index: 5; background: var(--panel-bg-alt); }
#mktBatchBrowse #mktBatchTable .lp-namecell { display: flex; align-items: center; gap: 8px; white-space: normal; overflow-wrap: anywhere; }
#mktBatchBrowse #mktBatchTable .lp-namecell > span { min-width: 0; }
#mktBatchBrowse #mktBatchTable .lp-namecell img { width: 28px; height: 28px; flex: 0 0 28px; }
#mktBatchBrowse #mktBatchTable .lp-namecell small { display: block; margin-top: 3px; color: var(--text-secondary); font-size: 11px; line-height: 1.45; }
#mktBatchBrowse #mktBatchTable .mkt-batch-name { color: var(--text-strong); border: 0; padding: 0; text-align: left; background: transparent; font: inherit; cursor: pointer; line-height: 1.45; white-space: normal; overflow-wrap: anywhere; }
#mktBatchBrowse #mktBatchTable .mkt-batch-name:hover { text-decoration: underline; }
#mktBatchBrowse #mktBatchTable .mkt-batch-qty { width: 104px; min-width: 104px; box-sizing: border-box; min-height: 34px; padding: 6px; font: inherit; text-align: right; font-variant-numeric: tabular-nums; appearance: textfield; -moz-appearance: textfield; }
#mktBatchBrowse #mktBatchTable .mkt-batch-qty::-webkit-inner-spin-button, #mktBatchBrowse #mktBatchTable .mkt-batch-qty::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
#mktBatchBrowse #mktBatchTable .mkt-batch-row-state { display: block; margin-top: 3px; font-size: 11px; line-height: 1.4; white-space: normal; color: var(--text-secondary); }
#mktBatchBrowse #mktBatchTable .mkt-batch-missing { color: var(--warn-text); font-size: 11px; margin-left: 4px; }
#mktBatchBrowse #mktBatchTable .mkt-batch-volume-pair { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; white-space: nowrap; }
#mktBatchBrowse #mktBatchTable .mkt-batch-volume-pair + .mkt-batch-volume-pair { margin-top: 3px; }
#mktBatchBrowse #mktBatchTable .mkt-batch-volume-pair > span:first-child { color: var(--text-secondary); font-size: 11px; }
#mktBatchBrowse #mktBatchTable .mkt-batch-volume-pair small { color: var(--text-secondary); font-size: 11px; }
#mktBatchBrowse #mktBatchTable .mkt-batch-remove-cell { text-align: center; }
#mktBatchBrowse #mktBatchTable .mkt-batch-remove { min-height: 32px; padding: 6px 7px; white-space: nowrap; font-size: 12px; color: var(--warn-text); background: transparent; border-color: var(--border); }
#mktBatchBrowse #mktBatchTable .mkt-batch-remove-cell .mini-btn + .mini-btn { margin-left: 6px; }
#mktBatchBrowse #mktBatchTable .mkt-batch-sort { display: inline-flex; align-items: center; justify-content: flex-end; gap: 4px; width: 100%; min-height: 30px; padding: 0; border: 0; background: transparent; color: inherit; font: inherit; line-height: 1.4; text-align: right; cursor: pointer; white-space: nowrap; }
#mktBatchBrowse #mktBatchTable .mkt-batch-sort-arrow { flex: 0 0 auto; font-size: 11px; line-height: 1; opacity: .45; }
#mktBatchBrowse #mktBatchTable .mkt-batch-sort small { display: block; color: var(--text-secondary); font-size: 11px; font-weight: 400; }
#mktBatchBrowse #mktBatchTable th[aria-sort="ascending"] .mkt-batch-sort-arrow, #mktBatchBrowse #mktBatchTable th[aria-sort="descending"] .mkt-batch-sort-arrow { opacity: 1; color: var(--money); }
#mktBatchBrowse #mktBatchTable :is(.mkt-batch-name,.mkt-batch-sort):focus-visible { outline: 2px solid var(--accent,#d3c94b); outline-offset: 2px; }
#mktBatchBrowse #mktBatchTable .mkt-batch-detail-row > td { padding: 14px 16px; background: var(--subrow-bg); white-space: normal; }
#mktBatchBrowse .mkt-batch-detail { max-width: 980px; line-height: 1.6; }
#mktBatchBrowse .mkt-batch-detail .hint { margin: 6px 0; }
#mktBatchBrowse .mkt-batch-output-table { width: 100%; min-width: 760px; border-collapse: collapse; font-size: 12px; table-layout: auto; }
#mktBatchBrowse #mktBatchTable .mkt-batch-output-table :is(th,td) { padding: 8px; white-space: nowrap; overflow-wrap: normal; }
#mktBatchBrowse #mktBatchTable .mkt-batch-output-table thead th { position: static; height: auto; background: var(--panel-bg-alt); }
#mktBatchBrowse .mkt-batch-output-table td:first-child { display: flex; align-items: center; gap: 8px; }
#mktBatchBrowse .mkt-batch-footnote { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 5px 14px; margin-top: 10px; color: var(--text-secondary); font-size: 11px; line-height: 1.65; }
#mktBatchBrowse .mkt-batch-footnote p { margin: 0; }
#mktBatchBrowse.expanded { position: fixed; inset: 3vh 2vw; z-index: 1000; overflow: auto; padding: 18px; background: var(--page-bg,var(--panel-bg)); border: 1px solid var(--border-strong,var(--border)); border-radius: 4px; box-shadow: 0 0 0 100vmax #000b; }
#mktBatchBrowse.expanded .mkt-batch-rich-scroll { max-height: 64vh; }
@media(max-width:1400px) and (min-width:1101px) {
  #mktBatchBrowse { padding: 0; }
  #mktBatchBrowse .mkt-batch-workspace { grid-template-columns: 300px minmax(0,1fr); gap: 12px; }
  #mktBatchBrowse :is(.mkt-batch-input-panel,.mkt-batch-parameters,.mkt-batch-results-panel) { padding: 12px; }
  #mktBatchBrowse .mkt-batch-summary-card { padding: 10px; }
  #mktBatchBrowse .mkt-batch-result-head { align-items: flex-start; flex-wrap: wrap; }
  #mktBatchBrowse .mkt-batch-result-actions { margin-left: auto; }
}
@media(max-width:1100px) {
  #mktBatchBrowse .mkt-batch-workspace { grid-template-columns: minmax(0,1fr); }
  #mktBatchBrowse .mkt-batch-sidebar { position: static; grid-template-columns: minmax(0,1.25fr) minmax(250px,.8fr); align-items: start; }
  #mktBatchBrowse #mktBatchInput { height: 190px; min-height: 170px; max-height: 220px; }
  #mktBatchBrowse .mkt-batch-rich-scroll { max-height: 65vh; }
}
@media(max-width:700px) {
  #mktBatchBrowse { padding: 0; }
  #mktBatchBrowse .mkt-batch-sidebar { grid-template-columns: minmax(0,1fr); }
  #mktBatchBrowse :is(.mkt-batch-input-panel,.mkt-batch-parameters,.mkt-batch-results-panel) { padding: 12px; }
  #mktBatchBrowse .mkt-batch-result-head { align-items: flex-start; flex-wrap: wrap; }
  #mktBatchBrowse .mkt-batch-result-actions { width: 100%; justify-content: flex-start; }
  #mktBatchBrowse .mkt-estimate-summary { grid-template-columns: minmax(0,1fr); gap: 7px; }
  #mktBatchBrowse .mkt-batch-summary-card { padding: 10px 12px; }
  #mktBatchBrowse .mkt-batch-summary-card > strong { margin: 4px 0; font-size: 20px; }
  #mktBatchBrowse .mkt-batch-meta { padding: 9px; }
  #mktBatchBrowse .mkt-batch-meta-time { margin-left: 0; white-space: normal; }
  #mktBatchBrowse .mkt-batch-table-toolbar { justify-content: flex-start; }
  #mktBatchBrowse .mkt-batch-basis-switch { margin-left: 0; flex-wrap: wrap; }
  #mktBatchBrowse .mkt-batch-column-settings { margin-left: auto; }
  #mktBatchBrowse :is(.btn,.mini-btn,.mkt-batch-column-settings > summary) { min-height: 40px; }
  #mktBatchBrowse :is(.mkt-batch-panel-head,.mkt-batch-result-actions,.mkt-batch-view-switch,.mkt-batch-basis-switch) .btn { min-height: 40px; }
  #mktBatchBrowse .mkt-batch-parameters input { min-height: 40px; }
  #mktBatchBrowse .mkt-batch-column-settings label { min-height: 36px; }
  #mktBatchBrowse #mktBatchTable .mkt-batch-name-col { width: 180px; }
  #mktBatchBrowse #mktBatchTable > :is(thead,tbody,tfoot) > tr > .mkt-batch-name-cell { min-width: 180px; max-width: 180px; }
  #mktBatchBrowse #mktBatchTable :is(.mkt-batch-qty,.mkt-batch-remove) { min-height: 40px; }
  #mktBatchBrowse.expanded { inset: 8px; padding: 10px; }
}
/* Keep navigation responsive while an on-demand workspace is loading. */
#workspacePendingPage[hidden] { display: none; }
.workspace-pending { flex: 1; min-width: 0; padding: clamp(16px, 2vw, 28px); }
.workspace-pending-card { max-width: 1660px; margin: 0 auto; padding: 24px; border: 1px solid var(--border); border-radius: 10px; background: var(--panel-bg); }
.workspace-pending-card h1 { margin: 0 0 12px; color: var(--text-strong); font-size: clamp(24px, 2.4vw, 34px); line-height: 1.25; }
.workspace-pending-card [role=status] { margin: 0; color: var(--text-secondary); line-height: 1.6; }
.workspace-pending-card .btn { margin-top: 16px; }
.workspace-pending-metrics { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); max-width: 1660px; gap: 14px; margin: 18px auto; }
.workspace-pending-metrics > span { display: block; height: 100px; border: 1px solid var(--border-subtle); border-radius: 9px; background: linear-gradient(var(--border-subtle), var(--border-subtle)) 20px 24px / 36% 10px no-repeat, linear-gradient(var(--border-subtle), var(--border-subtle)) 20px 49px / 58% 22px no-repeat, var(--panel-bg); }
.workspace-pending-chart { max-width: 1660px; height: clamp(200px, 26vw, 360px); margin: 0 auto; border: 1px solid var(--border-subtle); border-radius: 9px; background: repeating-linear-gradient(transparent 0 58px, var(--border-subtle) 58px 59px), var(--panel-bg); }
@media(max-width:700px) { .workspace-pending-card { padding: 18px; } .workspace-pending-metrics { gap: 8px; } .workspace-pending-metrics > span { height: 76px; background-position: 12px 16px, 12px 38px; } }

/* Supporting rules stay close to their controls without filling the workspace. */
.workspace-help { margin: 8px 0; color: var(--text-secondary); font-size: 12px; line-height: 1.65; }
.workspace-help > summary { width: fit-content; max-width: 100%; cursor: pointer; color: var(--text-secondary); }
.workspace-help > summary:hover { color: var(--text-primary); }
.workspace-help > summary:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 3px; }
.workspace-help > div { margin-top: 7px; padding: 9px 12px; border-left: 2px solid var(--border); background: var(--panel-bg-alt); overflow-wrap: anywhere; }
.workspace-help > div > p { margin: 0 0 6px; }
.workspace-help > div > p:last-child { margin-bottom: 0; }

/* Fleet ledger: keep the record, pricing basis and payable rows in one workspace. */
#main.fleet-record-workspace { min-width: 0; }
#main.fleet-record-workspace [hidden] { display: none !important; }
#main.fleet-record-workspace .fleet-record-header { position: relative; display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 4px 18px; align-items: center; margin: 0 0 12px; }
#main.fleet-record-workspace .fleet-record-title { display: flex; gap: 12px; align-items: center; min-width: 0; }
#main.fleet-record-workspace .fleet-record-title h2 { margin: 0; color: var(--text-strong); font-size: clamp(20px,1.8vw,25px); font-weight: 750; line-height: 1.35; overflow-wrap: anywhere; }
#main.fleet-record-workspace .fleet-ledger-badge { display: inline-flex; align-items: center; flex: 0 0 auto; min-height: 25px; padding: 2px 10px; border-radius: 3px; background: var(--warn-bg); color: var(--warn-text); font-size: 12px; font-weight: 500; white-space: nowrap; }
#main.fleet-record-workspace .fleet-ledger-badge.confirmed { background: color-mix(in srgb,var(--ok) 12%,var(--panel-bg)); color: var(--ok); }
#main.fleet-record-workspace .fleet-record-meta { grid-column: 1; margin: 0; color: var(--text-secondary); font-size: 12px; line-height: 1.6; }
#main.fleet-record-workspace #btnSnapRename { flex: 0 0 auto; min-height: 26px; width: 26px; padding: 1px; border-color: transparent; color: var(--text-secondary); background: transparent; font-size: 18px; }
#main.fleet-record-workspace #btnSnapRename:hover { color: var(--text-strong); background: var(--control-bg-hover); }
#main.fleet-record-workspace .fleet-record-actions { grid-column: 2; grid-row: 1; display: flex; gap: 8px; align-items: center; justify-content: flex-end; flex-wrap: wrap; }
#main.fleet-record-workspace :is(.fleet-history-menu,.fleet-export-menu) { position: relative; }
#main.fleet-record-workspace :is(.fleet-history-menu,.fleet-export-menu) > summary { display: flex; align-items: center; justify-content: space-between; gap: 20px; min-height: 36px; box-sizing: border-box; padding: 7px 12px; list-style: none; border: 1px solid var(--border); border-radius: 3px; background: var(--panel-bg); color: var(--text-primary); font-size: 12px; cursor: pointer; white-space: nowrap; }
#main.fleet-record-workspace :is(.fleet-history-menu,.fleet-export-menu) > summary::-webkit-details-marker { display: none; }
#main.fleet-record-workspace :is(.fleet-history-menu,.fleet-export-menu) > summary::after { content: ''; width: 6px; height: 6px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: translateY(-2px) rotate(45deg); }
#main.fleet-record-workspace :is(.fleet-history-menu,.fleet-export-menu)[open] > summary::after { transform: translateY(2px) rotate(225deg); }
#main.fleet-record-workspace :is(.fleet-history-menu,.fleet-export-menu) > summary:hover { background: var(--control-bg-hover); }
#main.fleet-record-workspace :is(.fleet-history-menu,.fleet-export-menu) > summary:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
#main.fleet-record-workspace :is(#fleetHistoryEmbedded,.fleet-export-options) { position: absolute; right: 0; top: calc(100% + 6px); z-index: 30; box-sizing: border-box; width: min(660px,calc(100vw - 32px)); max-height: min(65dvh,600px); overflow: auto; padding: 14px; border: 1px solid var(--border-strong); border-radius: 3px; background: var(--panel-bg); box-shadow: 0 10px 28px #0002; }
#main.fleet-record-workspace #fleetHistoryEmbedded .fleet-history-panel { margin: 0; padding: 0; border: 0; }
#main.fleet-record-workspace #fleetHistoryEmbedded .fleet-history-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; }
#main.fleet-record-workspace #fleetHistoryEmbedded .fleet-history-card { padding: 10px; }
#main.fleet-record-workspace .fleet-export-options { display: grid; gap: 6px; width: 220px; }
#main.fleet-record-workspace .fleet-export-options .btn { justify-content: flex-start; width: 100%; }
#main.fleet-record-workspace .fleet-ledger-tabs { position: static; display: flex; gap: 12px; margin: 0 0 12px; padding: 0; border: 0; border-bottom: 1px solid var(--border-subtle); border-radius: 0; background: transparent; overflow-x: auto; }
#main.fleet-record-workspace .fleet-ledger-tabs .btn { min-height: 40px; padding: 9px 12px; border: 0; border-bottom: 3px solid transparent; border-radius: 0; background: transparent; color: var(--text-secondary); font-weight: 650; white-space: nowrap; }
#main.fleet-record-workspace .fleet-ledger-tabs .btn:hover { background: var(--panel-bg-alt); color: var(--text-strong); }
#main.fleet-record-workspace .fleet-ledger-tabs .btn:is(.primary,[aria-selected="true"]) { border-bottom-color: var(--primary-btn-bg); background: transparent; color: var(--text-strong); }
#main.fleet-record-workspace .fleet-ledger { margin: 0; padding: 0; border: 0; border-radius: 0; background: transparent; }
#main.fleet-record-workspace .fleet-ledger-metrics { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px; margin: 0 0 12px; }
#main.fleet-record-workspace .fleet-ledger-metrics > div { min-width: 0; padding: 12px 16px; border: 1px solid var(--border-subtle); border-radius: 4px; background: var(--panel-bg); color: var(--text-secondary); }
#main.fleet-record-workspace .fleet-ledger-metrics > div:last-child { border-left: 4px solid var(--primary-btn-bg); padding-left: 13px; }
#main.fleet-record-workspace .fleet-ledger-metrics > div > span { font-size: 12px; }
#main.fleet-record-workspace .fleet-ledger-metrics strong { display: block; margin-top: 3px; color: var(--text-strong); font-size: clamp(18px,1.85vw,28px); font-weight: 750; line-height: 1.35; white-space: nowrap; overflow-wrap: normal; word-break: normal; font-variant-numeric: tabular-nums; }
#main.fleet-record-workspace .fleet-ledger-metrics strong small { color: var(--text-secondary); font-size: 12px; font-weight: 400; }
#main.fleet-record-workspace .fleet-pricing-summary { display: flex; align-items: center; gap: 12px; min-height: 48px; box-sizing: border-box; margin: 0 0 12px; padding: 8px 14px; border: 1px solid var(--border-subtle); border-radius: 4px; background: var(--panel-bg); font-size: 13px; }
#main.fleet-record-workspace .fleet-pricing-summary > span:first-child { flex: 0 0 auto; }
#main.fleet-record-workspace .fleet-pricing-description { min-width: 0; padding-left: 12px; border-left: 1px solid var(--border); overflow-wrap: anywhere; }
#main.fleet-record-workspace .fleet-pricing-count { padding: 2px 7px; border: 1px solid var(--border-subtle); border-radius: 2px; color: var(--text-secondary); font-size: 11px; white-space: nowrap; }
#main.fleet-record-workspace #fleetEditPricing { flex: 0 0 auto; margin-left: auto; min-height: 30px; border-color: transparent; color: var(--text-primary); background: transparent; font-weight: 650; white-space: nowrap; }
#main.fleet-record-workspace #fleetEditPricing:hover { background: var(--control-bg-hover); }
#main.fleet-record-workspace .fleet-owner-section { min-width: 0; overflow: visible; border: 1px solid var(--border-subtle); border-radius: 4px; background: var(--panel-bg); }
#main.fleet-record-workspace .fleet-owner-toolbar { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 8px 16px; padding: 10px 12px 6px; }
#main.fleet-record-workspace .fleet-owner-toolbar h3 { display: flex; align-items: center; gap: 8px; margin: 0; color: var(--text-strong); font-size: 17px; font-weight: 750; }
#main.fleet-record-workspace .fleet-owner-toolbar h3 > span { display: inline-flex; align-items: center; justify-content: center; min-width: 24px; height: 24px; padding: 0 5px; box-sizing: border-box; border-radius: 12px; background: var(--panel-bg-alt); font-size: 12px; font-variant-numeric: tabular-nums; }
#main.fleet-record-workspace .fleet-owner-filters { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
#main.fleet-record-workspace .fleet-owner-filters :is(input,select,.btn) { min-height: 34px; box-sizing: border-box; font-size: 12px; }
#main.fleet-record-workspace #fleetOwnerSearch { width: clamp(160px,17vw,225px); }
#main.fleet-record-workspace #fleetOwnerStatus { min-width: 112px; }
#main.fleet-record-workspace #fleetExpandOwners { white-space: nowrap; }
#main.fleet-record-workspace .fleet-owner-unit { margin: 0; padding: 0 13px 5px; text-align: right; color: var(--text-secondary); font-size: 11px; }
#main.fleet-record-workspace .fleet-owner-scroll { margin: 0 12px; max-width: calc(100% - 24px); }
#main.fleet-record-workspace table.fleet-owner-table { width: 100%; min-width: 880px; table-layout: auto; border-collapse: collapse; font-size: 13px; }
#main.fleet-record-workspace table.fleet-owner-table > :is(thead,tbody,tfoot) > tr > :is(th,td) { padding: 7px 9px; border-bottom: 1px solid var(--border-subtle); line-height: 1.35; vertical-align: middle; }
#main.fleet-record-workspace table.fleet-owner-table > thead > tr > th { height: 33px; box-sizing: border-box; background: var(--panel-bg-alt); color: var(--th-text); font-size: 12px; font-weight: 650; }
#main.fleet-record-workspace table.fleet-owner-table > thead > tr > th:first-child { width: 20%; }
#main.fleet-record-workspace table.fleet-owner-table > thead > tr > th:nth-child(3) { width: 14%; }
#main.fleet-record-workspace table.fleet-owner-table > tbody > tr[data-fleet-owner-row] > td:first-child { min-width: 145px; max-width: 230px; white-space: normal; overflow-wrap: anywhere; }
#main.fleet-record-workspace .fleet-owner-expand { display: block; width: 100%; min-height: 24px; padding: 0; line-height: 1.35; font-weight: 700; overflow-wrap: anywhere; }
#main.fleet-record-workspace .fleet-owner-expand .hint { font-weight: 400; }
#main.fleet-record-workspace table.fleet-owner-table .hint { margin-top: 2px; font-size: 11px; line-height: 1.25; }
#main.fleet-record-workspace table.fleet-owner-table .num { min-width: 0; text-align: right; white-space: nowrap; overflow-wrap: normal; word-break: normal; font-variant-numeric: tabular-nums; }
#main.fleet-record-workspace table.fleet-owner-table .fleet-quantity-cell { min-width: 80px; }
#main.fleet-record-workspace table.fleet-owner-table select { width: 100%; min-width: 110px; max-width: 156px; min-height: 29px; padding: 4px 6px; box-sizing: border-box; font-size: 12px; }
#main.fleet-record-workspace table.fleet-owner-table > tbody > tr[data-fleet-owner-row]:hover > td { background: color-mix(in srgb,var(--panel-bg-alt) 55%,var(--panel-bg)); }
#main.fleet-record-workspace table.fleet-owner-table .fleet-payment-state { display: inline-flex; align-items: center; justify-content: center; min-height: 24px; margin: 0; padding: 2px 8px; box-sizing: border-box; border-radius: 3px; color: var(--warn-text); background: var(--warn-bg); font-size: 11px; white-space: nowrap; }
#main.fleet-record-workspace table.fleet-owner-table .fleet-payment-state.paid { color: var(--ok); background: color-mix(in srgb,var(--ok) 10%,var(--panel-bg)); }
#main.fleet-record-workspace table.fleet-owner-table .fleet-owner-actions .mini-btn { display: block; width: 100%; white-space: nowrap; font-size: 11px; padding: 3px 5px; }
#main.fleet-record-workspace table.fleet-owner-table .fleet-owner-actions .mini-btn + .mini-btn { margin-top: 4px; }
#main.fleet-record-workspace table.fleet-owner-table > tfoot > tr > td { padding-top: 10px; padding-bottom: 10px; border-bottom: 0; border-top: 1px solid var(--border); background: var(--panel-bg); color: var(--text-secondary); font-size: 12px; }
#main.fleet-record-workspace table.fleet-owner-table > tfoot strong { color: var(--text-strong); font-size: 13px; }
#main.fleet-record-workspace table.fleet-owner-table .fleet-owner-subrow > td { padding: 0 12px; background: var(--subrow-bg); white-space: normal; }
#main.fleet-record-workspace .fleet-owner-detail { padding: 14px 8px; }
#main.fleet-record-workspace .fleet-owner-financials { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 26px; margin-bottom: 12px; padding-bottom: 10px; border-bottom: 1px solid var(--border-subtle); font-size: 12px; }
#main.fleet-record-workspace .fleet-owner-financials :is(strong,b) { margin-left: 8px; white-space: nowrap; font-variant-numeric: tabular-nums; }
#main.fleet-record-workspace .fleet-quantity-summary { margin-bottom: 12px; }
#main.fleet-record-workspace .fleet-quantity-summary h4 { margin: 0 0 4px; font-size: 13px; }
#main.fleet-record-workspace .fleet-quantity-items { grid-template-columns: repeat(auto-fit,minmax(200px,1fr)); }
#main.fleet-record-workspace .fleet-quantity-items > div { padding: 6px 0; }
#main.fleet-record-workspace .fleet-detail-line { gap: 8px 18px; padding: 8px 0; font-size: 12px; }
#main.fleet-record-workspace .fleet-detail-line > :is(b,strong) { white-space: nowrap; font-variant-numeric: tabular-nums; }
#main.fleet-record-workspace .fleet-empty-filtered { padding: 28px 16px; color: var(--text-secondary); text-align: center; white-space: normal; }
#main.fleet-record-workspace [data-fleet-owner-row][hidden],#main.fleet-record-workspace .fleet-owner-subrow[hidden],#main.fleet-record-workspace .fleet-empty-filtered[hidden] { display: none !important; }
#main.fleet-record-workspace .fleet-confirm-bar { position: sticky; bottom: 0; z-index: 5; display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 10px 0 0; padding: 10px 12px; border: 1px solid var(--border-subtle); border-radius: 3px; background: var(--panel-bg); box-shadow: 0 -3px 9px #00000008; }
#main.fleet-record-workspace .fleet-confirm-copy { min-width: 0; color: var(--text-secondary); font-size: 12px; line-height: 1.5; }
#main.fleet-record-workspace .fleet-confirm-copy > strong { color: var(--text-strong); }
#main.fleet-record-workspace .fleet-confirm-copy > span { margin-left: 10px; }
#main.fleet-record-workspace #fleetConfirmLedger { flex: 0 0 auto; min-height: 40px; padding: 9px 18px; white-space: nowrap; font-weight: 750; }

/* Role settlement keeps editable quantities, fees and their totals in one table. */
#main.fleet-record-workspace .fleet-role-workspace { min-width: 0; }
#main.fleet-record-workspace .fleet-role-metrics { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 10px; margin: 0 0 12px; }
#main.fleet-record-workspace .fleet-role-metrics > div { min-width: 0; padding: 11px 13px; border: 1px solid var(--border-subtle); border-radius: 4px; background: var(--panel-bg); color: var(--text-secondary); }
#main.fleet-record-workspace .fleet-role-metrics > div:last-child { padding-left: 10px; border-left: 4px solid var(--primary-btn-bg); }
#main.fleet-record-workspace .fleet-role-metrics :is(span,label) { display: block; color: var(--text-secondary); font-size: 12px; }
#main.fleet-record-workspace .fleet-role-metrics strong { display: block; margin-top: 4px; color: var(--text-strong); font-size: clamp(17px,1.55vw,23px); font-weight: 750; line-height: 1.35; white-space: nowrap; overflow-wrap: normal; word-break: normal; font-variant-numeric: tabular-nums; }
#main.fleet-record-workspace .fleet-role-metrics strong small { color: var(--text-secondary); font-size: 11px; font-weight: 400; }
#main.fleet-record-workspace .fleet-role-metrics > div > small { display: block; margin-top: 3px; color: var(--text-secondary); font-size: 10px; line-height: 1.4; }
#main.fleet-record-workspace .fleet-role-parameters { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 18px; min-width: 0; margin: 0 0 12px; padding: 9px 12px; border: 1px solid var(--border-subtle); border-radius: 4px; background: var(--panel-bg); font-size: 12px; }
#main.fleet-record-workspace .fleet-role-parameters label { display: flex; align-items: center; flex-wrap: wrap; gap: 7px; min-width: 0; line-height: 1.5; }
#main.fleet-record-workspace .fleet-role-parameters label > :is(span,strong) { min-width: 0; overflow-wrap: anywhere; }
#main.fleet-record-workspace .fleet-role-parameters input { box-sizing: border-box; min-height: 32px; padding: 6px 8px; text-align: right; font-size: 12px; font-variant-numeric: tabular-nums; }
#main.fleet-record-workspace .fleet-role-parameters [data-fleet-role-price] { width: 145px; max-width: 100%; }
#main.fleet-record-workspace .fleet-role-parameters #fleetSettlementCoefficient { width: 110px; max-width: 100%; }
#main.fleet-record-workspace .fleet-role-parameters small { color: var(--text-secondary); font-size: 11px; line-height: 1.5; }
#main.fleet-record-workspace .fleet-role-parameters .fleet-ledger-warning { color: var(--warn-text); }
#main.fleet-record-workspace .fleet-role-price-fields { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 16px; min-width: 0; }
#main.fleet-record-workspace .fleet-role-toolbar { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 12px; min-width: 0; padding: 10px 12px; border: 1px solid var(--border-subtle); border-bottom: 0; border-radius: 4px 4px 0 0; background: var(--panel-bg); }
#main.fleet-record-workspace .fleet-role-toolbar h3 { display: flex; align-items: center; gap: 7px; margin: 0; color: var(--text-strong); font-size: 17px; font-weight: 750; }
#main.fleet-record-workspace .fleet-role-toolbar h3 > span { display: inline-flex; align-items: center; justify-content: center; min-width: 24px; height: 24px; box-sizing: border-box; padding: 0 5px; border-radius: 12px; background: var(--panel-bg-alt); font-size: 12px; font-variant-numeric: tabular-nums; }
#main.fleet-record-workspace .fleet-role-view-switch { display: inline-flex; align-items: stretch; gap: 3px; padding: 3px; border: 1px solid var(--border-subtle); border-radius: 3px; background: var(--panel-bg-alt); }
#main.fleet-record-workspace .fleet-role-view-switch button { min-height: 29px; box-sizing: border-box; padding: 5px 10px; border: 1px solid transparent; border-radius: 2px; color: var(--text-secondary); background: transparent; font: inherit; font-size: 12px; line-height: 1.4; white-space: nowrap; cursor: pointer; }
#main.fleet-record-workspace .fleet-role-view-switch button:hover { color: var(--text-strong); background: var(--control-bg-hover); }
#main.fleet-record-workspace .fleet-role-view-switch button:is(.primary,.active,[aria-pressed="true"],[aria-selected="true"]) { color: var(--primary-btn-text); background: var(--primary-btn-bg); border-color: var(--primary-btn-border); font-weight: 650; }
#main.fleet-record-workspace .fleet-role-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 7px; margin-left: auto; }
#main.fleet-record-workspace .fleet-role-toolbar :is(#fleetAddRole,#fleetBatchRoles) { min-height: 33px; padding: 6px 9px; font-size: 12px; white-space: nowrap; }
#main.fleet-record-workspace .fleet-role-toolbar > #fleetAddRole { margin-left: auto; }
#main.fleet-record-workspace .fleet-role-workspace > .table-wrap,#main.fleet-record-workspace .fleet-role-scroll { min-width: 0; max-width: 100%; margin: 0; border: 1px solid var(--border-subtle); border-radius: 0 0 4px 4px; background: var(--panel-bg); overflow-x: auto; overscroll-behavior-x: contain; }
#main.fleet-record-workspace table.fleet-role-table { width: 100%; min-width: 940px; table-layout: auto; border-collapse: collapse; font-size: 13px; }
#main.fleet-record-workspace table.fleet-role-table > :is(thead,tbody,tfoot) > tr > :is(th,td) { padding: 5px 8px; border-bottom: 1px solid var(--border-subtle); line-height: 1.4; vertical-align: middle; }
#main.fleet-record-workspace table.fleet-role-table > thead > tr > th { height: 36px; box-sizing: border-box; background: var(--panel-bg-alt); color: var(--th-text); font-size: 12px; font-weight: 650; }
#main.fleet-record-workspace table.fleet-role-table > thead > tr > th small { display: block; margin-top: 2px; color: var(--text-secondary); font-size: 10px; font-weight: 400; line-height: 1.25; }
#main.fleet-record-workspace table.fleet-role-table > thead > tr > th:first-child { width: 18%; }
#main.fleet-record-workspace table.fleet-role-table > tbody > tr > td:first-child { min-width: 145px; max-width: 240px; white-space: normal; overflow-wrap: anywhere; }
#main.fleet-record-workspace table.fleet-role-table > tbody > tr > td:first-child > small { display: block; margin-top: 2px; color: var(--text-secondary); font-size: 10px; line-height: 1.3; }
#main.fleet-record-workspace table.fleet-role-table .num { text-align: right; white-space: nowrap; overflow-wrap: normal; word-break: normal; font-variant-numeric: tabular-nums; }
#main.fleet-record-workspace table.fleet-role-table .hint { margin-top: 3px; font-size: 11px; line-height: 1.4; }
#main.fleet-record-workspace table.fleet-role-table tbody tr:hover > td { background: color-mix(in srgb,var(--panel-bg-alt) 40%,var(--panel-bg)); }
#main.fleet-record-workspace table.fleet-role-table :is([data-fleet-role-quantity],[data-fleet-role-fee]) { box-sizing: border-box; max-width: 100%; min-height: 32px; padding: 4px 8px; text-align: right; font-size: 13px; font-variant-numeric: tabular-nums; }
#main.fleet-record-workspace table.fleet-role-table [data-fleet-role-quantity] { width: 135px; }
#main.fleet-record-workspace table.fleet-role-table [data-fleet-role-fee] { width: 175px; }
#main.fleet-record-workspace table.fleet-role-table .fleet-role-quantity { min-width: 135px; white-space: normal; }
#main.fleet-record-workspace table.fleet-role-table .fleet-role-quantity label { display: grid; justify-content: end; gap: 3px; margin: 0; color: var(--text-secondary); font-size: 10px; line-height: 1.4; text-align: right; white-space: normal; }
#main.fleet-record-workspace table.fleet-role-table .fleet-role-quantity label + label { margin-top: 4px; }
#main.fleet-record-workspace table.fleet-role-table .fleet-role-quantity > small { display: block; margin-top: 3px; color: var(--text-secondary); font-size: 10px; line-height: 1.3; }
#main.fleet-record-workspace table.fleet-role-table .fleet-role-quantity label :is(span,small) { max-width: 170px; overflow-wrap: anywhere; }
#main.fleet-record-workspace table.fleet-role-table tfoot td { padding-top: 11px; padding-bottom: 11px; border-top: 1px solid var(--border); border-bottom: 0; background: var(--panel-bg); color: var(--text-strong); font-weight: 700; }
#main.fleet-record-workspace .fleet-role-confirm-actions { display: flex; align-items: center; justify-content: flex-end; flex: 0 0 auto; gap: 8px; }
#main.fleet-record-workspace .fleet-role-workspace #fleetSaveDraft { flex: 0 0 auto; min-height: 40px; padding: 8px 14px; white-space: nowrap; }
#main.fleet-record-workspace .fleet-role-workspace :is(input,button):focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
#main.fleet-record-workspace .fleet-role-workspace [hidden] { display: none !important; }
dialog.fleet-role-dialog form > :is(input,textarea) { display: block; width: 100%; min-width: 0; box-sizing: border-box; margin: 0 0 14px; }
dialog.fleet-role-dialog form > label { margin-top: 10px; }
dialog.fleet-role-dialog textarea { min-height: 170px; padding: 9px 10px; resize: vertical; font: inherit; font-size: 12px; line-height: 1.6; }
dialog.fleet-role-dialog fieldset { margin: 12px 0; padding: 10px 12px; border: 1px solid var(--border-subtle); border-radius: 3px; }
dialog.fleet-role-dialog fieldset label { display: grid; gap: 5px; margin: 0; font-size: 12px; }
dialog.fleet-role-dialog fieldset label + label { margin-top: 10px; }
dialog.fleet-role-dialog fieldset :is(input,textarea,select) { width: 100%; min-width: 0; box-sizing: border-box; }
@media(max-width:1100px) {
  #main.fleet-record-workspace .fleet-role-metrics { grid-template-columns: repeat(2,minmax(0,1fr)); }
  #main.fleet-record-workspace .fleet-role-metrics strong { font-size: 21px; }
  #main.fleet-record-workspace .fleet-role-toolbar { gap: 8px; }
}
@media(max-width:700px) {
  #main.fleet-record-workspace .fleet-role-metrics { gap: 7px; margin-bottom: 10px; }
  #main.fleet-record-workspace .fleet-role-metrics > div { padding: 9px 10px; }
  #main.fleet-record-workspace .fleet-role-metrics strong { font-size: clamp(16px,3vw,20px); }
  #main.fleet-record-workspace .fleet-role-metrics :is(span,label) { font-size: 11px; }
  #main.fleet-record-workspace .fleet-role-parameters { gap: 8px 12px; padding: 9px 10px; }
  #main.fleet-record-workspace .fleet-role-parameters label { justify-content: space-between; flex: 1 1 100%; }
  #main.fleet-record-workspace .fleet-role-price-fields { width: 100%; gap: 8px; }
  #main.fleet-record-workspace .fleet-role-toolbar { padding: 10px; }
  #main.fleet-record-workspace .fleet-role-toolbar h3 { font-size: 16px; }
  #main.fleet-record-workspace .fleet-role-view-switch { margin-left: auto; }
  #main.fleet-record-workspace .fleet-role-view-switch button { padding: 5px 7px; font-size: 11px; }
  #main.fleet-record-workspace .fleet-role-actions { width: 100%; margin-left: 0; justify-content: flex-end; }
  #main.fleet-record-workspace .fleet-role-confirm-actions { width: 100%; }
  #main.fleet-record-workspace .fleet-role-workspace #fleetSaveDraft { flex: 0 0 auto; min-height: 42px; padding: 8px 12px; }
  #main.fleet-record-workspace .fleet-role-workspace #fleetConfirmLedger { width: auto; flex: 1; min-width: 0; padding: 9px 12px; white-space: normal; }
}
@media(max-width:420px) {
  #main.fleet-record-workspace .fleet-role-metrics { grid-template-columns: minmax(0,1fr); gap: 5px; }
  #main.fleet-record-workspace .fleet-role-metrics > div { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; flex-wrap: wrap; padding: 8px 10px; }
  #main.fleet-record-workspace .fleet-role-metrics strong { margin: 0; font-size: 19px; }
  #main.fleet-record-workspace .fleet-role-metrics > div > small { flex: 1 0 100%; margin-top: 0; }
  #main.fleet-record-workspace .fleet-role-view-switch { width: 100%; margin-left: 0; }
  #main.fleet-record-workspace .fleet-role-view-switch button { flex: 1; }
}

/* Native modal stays in the top layer, with the actual pricing controls in view. */
dialog#fleetPricingDrawer.fleet-pricing-drawer { position: fixed; inset: 0 0 0 auto; box-sizing: border-box; width: min(560px,calc(100vw - 16px)); height: 100dvh; max-width: none; max-height: 100dvh; margin: 0; padding: 0; border: 0; border-left: 1px solid var(--border-strong); border-radius: 0; background: var(--panel-bg); color: var(--text-primary); box-shadow: -12px 0 36px #0003; overflow: hidden; }
dialog#fleetPricingDrawer[open] { display: flex; flex-direction: column; }
dialog#fleetPricingDrawer::backdrop { background: #090c0c85; }
#fleetPricingDrawer .fleet-pricing-drawer-head { display: flex; align-items: center; justify-content: space-between; flex: 0 0 auto; gap: 16px; padding: 17px 20px; border-bottom: 1px solid var(--border); }
#fleetPricingDrawer .fleet-pricing-drawer-head h3 { margin: 0; color: var(--text-strong); font-size: 19px; }
#fleetPricingDrawer .fleet-pricing-drawer-head .btn { min-height: 32px; }
#fleetPricingDrawer .fleet-pricing-drawer-body { flex: 1; min-height: 0; padding: 18px 20px; overflow: auto; overscroll-behavior: contain; }
#fleetPricingDrawer .fleet-pricing-drawer-body > .hint:first-child { margin-top: 0; }
#fleetPricingDrawer .fleet-ledger-toolbar { align-items: stretch; flex-direction: column; gap: 12px; margin: 0 0 16px; }
#fleetPricingDrawer .fleet-ledger-toolbar label { display: flex; align-items: center; gap: 10px; font-size: 13px; white-space: nowrap; }
#fleetPricingDrawer .fleet-ledger-toolbar :is(input,select) { flex: 1; min-width: 0; max-width: 100%; width: 100%; box-sizing: border-box; }
#fleetPricingDrawer .fleet-custom-prices { margin: 0; padding: 14px 0; border: 0; border-top: 1px solid var(--border-subtle); border-radius: 0; }
#fleetPricingDrawer .fleet-custom-prices > summary { font-size: 14px; }
#fleetPricingDrawer .fleet-custom-prices > summary .hint { margin-left: 8px; font-size: 11px; }
#fleetPricingDrawer .fleet-custom-prices > .hint { margin: 10px 0; line-height: 1.7; font-size: 12px; }
#fleetPricingDrawer .fleet-custom-price-table { width: 100%; min-width: 0; table-layout: fixed; font-size: 12px; }
#fleetPricingDrawer .fleet-custom-price-table :is(th,td) { padding: 8px 5px; white-space: normal; overflow-wrap: anywhere; font-size: 12px; }
#fleetPricingDrawer .fleet-custom-price-table th:first-child { width: 23%; }
#fleetPricingDrawer .fleet-custom-price-table th:nth-child(2) { width: 17%; }
#fleetPricingDrawer .fleet-custom-price-table th:nth-child(3) { width: 29%; }
#fleetPricingDrawer .fleet-custom-price-table th:last-child { width: 31%; }
#fleetPricingDrawer .fleet-custom-price-table .num { overflow-wrap: normal; font-variant-numeric: tabular-nums; }
#fleetPricingDrawer .fleet-custom-price-table input { width: 100%; min-width: 0; min-height: 34px; box-sizing: border-box; padding: 6px 5px; font-size: 12px; }
#fleetPricingDrawer .fleet-pricing-drawer-footer { flex: 0 0 auto; padding: 12px 20px; border-top: 1px solid var(--border); background: var(--panel-bg); }
#fleetPricingDrawer .fleet-pricing-drawer-footer :is(p,.hint) { margin: 0; font-size: 12px; }
@media(max-width:1150px) {
  #main.fleet-record-workspace .fleet-ledger-metrics strong { font-size: 19px; }
  #main.fleet-record-workspace .fleet-ledger-metrics > div { padding: 11px 12px; }
  #main.fleet-record-workspace .fleet-pricing-summary { flex-wrap: wrap; gap: 6px 10px; }
  #main.fleet-record-workspace .fleet-owner-toolbar { align-items: flex-start; }
  #main.fleet-record-workspace .fleet-owner-filters { margin-left: auto; }
}
@media(max-width:700px) {
  #main.fleet-record-workspace .fleet-record-header { display: flex; align-items: flex-start; flex-wrap: wrap; gap: 5px; }
  #main.fleet-record-workspace .fleet-record-title { flex: 1 0 100%; gap: 8px; }
  #main.fleet-record-workspace .fleet-record-title h2 { font-size: 20px; }
  #main.fleet-record-workspace .fleet-record-meta { flex: 1 0 100%; font-size: 11px; }
  #main.fleet-record-workspace .fleet-record-actions { width: 100%; justify-content: flex-start; margin-top: 5px; gap: 7px; }
  #main.fleet-record-workspace #fleetHistoryEmbedded { left: 0; right: auto; width: min(660px,calc(100vw - 40px)); }
  #main.fleet-record-workspace #fleetHistoryEmbedded .fleet-history-grid { grid-template-columns: minmax(0,1fr); }
  #main.fleet-record-workspace .fleet-ledger-tabs { gap: 0; margin-bottom: 10px; }
  #main.fleet-record-workspace .fleet-ledger-tabs .btn { padding-left: 10px; padding-right: 10px; font-size: 12px; }
  #main.fleet-record-workspace .fleet-ledger-metrics { gap: 6px; }
  #main.fleet-record-workspace .fleet-ledger-metrics > div { padding: 10px 8px; }
  #main.fleet-record-workspace .fleet-ledger-metrics > div:last-child { padding-left: 6px; border-left-width: 3px; }
  #main.fleet-record-workspace .fleet-ledger-metrics strong { font-size: clamp(14px,2.3vw,18px); }
  #main.fleet-record-workspace .fleet-ledger-metrics strong small { display: block; margin-top: 2px; font-size: 10px; }
  #main.fleet-record-workspace .fleet-ledger-metrics > div > span { font-size: 11px; }
  #main.fleet-record-workspace .fleet-pricing-summary { padding: 9px 10px; gap: 6px 8px; font-size: 12px; }
  #main.fleet-record-workspace .fleet-pricing-description { padding-left: 0; border: 0; flex: 1 0 100%; order: 2; }
  #main.fleet-record-workspace .fleet-pricing-count { order: 3; }
  #main.fleet-record-workspace #fleetEditPricing { margin-left: auto; order: 1; }
  #main.fleet-record-workspace .fleet-owner-toolbar { padding: 10px 9px 6px; gap: 9px; }
  #main.fleet-record-workspace .fleet-owner-toolbar h3 { font-size: 16px; }
  #main.fleet-record-workspace .fleet-owner-filters { width: 100%; margin-left: 0; gap: 6px; }
  #main.fleet-record-workspace #fleetOwnerSearch { flex: 1; min-width: 130px; width: 0; }
  #main.fleet-record-workspace #fleetOwnerStatus { min-width: 100px; max-width: 120px; }
  #main.fleet-record-workspace #fleetExpandOwners { min-height: 34px; padding: 6px 8px; }
  #main.fleet-record-workspace .fleet-owner-scroll { margin: 0 8px; max-width: calc(100% - 16px); }
  #main.fleet-record-workspace .fleet-confirm-bar { flex-wrap: wrap; gap: 8px; padding: 9px 10px; }
  #main.fleet-record-workspace .fleet-confirm-copy { flex: 1 0 100%; font-size: 11px; }
  #main.fleet-record-workspace #fleetConfirmLedger { width: 100%; min-height: 42px; }
  #fleetPricingDrawer .fleet-pricing-drawer-head { padding: 14px 14px; }
  #fleetPricingDrawer .fleet-pricing-drawer-body { padding: 15px 14px; }
  #fleetPricingDrawer .fleet-pricing-drawer-footer { padding: 12px 14px; }
  #fleetPricingDrawer .fleet-custom-price-table th:first-child { width: 22%; }
  #fleetPricingDrawer .fleet-custom-price-table th:nth-child(2) { width: 18%; }
  #fleetPricingDrawer .fleet-custom-price-table :is(th,td) { padding: 7px 3px; font-size: 11px; }
}
@media(max-width:480px) {
  #main.fleet-record-workspace .fleet-ledger-metrics { grid-template-columns: minmax(0,1fr); gap: 5px; }
  #main.fleet-record-workspace .fleet-ledger-metrics > div { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; padding: 8px 11px; }
  #main.fleet-record-workspace .fleet-ledger-metrics strong { margin: 0; font-size: 19px; }
  #main.fleet-record-workspace .fleet-ledger-metrics strong small { display: inline; margin: 0 0 0 4px; font-size: 10px; }
  #main.fleet-record-workspace .fleet-owner-filters { display: grid; grid-template-columns: minmax(0,1fr) auto; }
  #main.fleet-record-workspace #fleetOwnerSearch { grid-column: 1 / -1; width: 100%; min-width: 0; }
  #main.fleet-record-workspace #fleetOwnerStatus { width: 100%; max-width: none; }
}
@media print {
  #main.fleet-record-workspace :is(.fleet-record-actions,.fleet-owner-filters,.fleet-confirm-bar,#fleetEditPricing) { display: none; }
  #main.fleet-record-workspace .fleet-owner-scroll { margin: 0; max-width: none; overflow: visible; }
  #main.fleet-record-workspace table.fleet-owner-table { min-width: 0; font-size: 10px; }
  #main.fleet-record-workspace table.fleet-owner-table > :is(thead,tbody,tfoot) > tr > :is(th,td) { padding: 5px; }
}

/* Personnel management: owner directory, current owner and unassigned roles. */
#main.fleet-owners-workspace .inline-admin-surface > .modal { padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
#main.fleet-owners-workspace .owners-workspace { width: 100%; min-width: 0; }
#main.fleet-owners-workspace .owners-stats { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px; margin: 0 0 12px; }
#main.fleet-owners-workspace .owners-stat { display: flex; align-items: baseline; gap: 10px; min-width: 0; padding: 8px 12px; border: 1px solid var(--border-subtle); border-radius: 3px; background: var(--panel-bg); }
#main.fleet-owners-workspace .owners-stat :is(label,span) { color: var(--text-secondary); font-size: 12px; }
#main.fleet-owners-workspace .owners-stat strong { margin-left: auto; color: var(--text-strong); font-size: 22px; font-weight: 750; line-height: 1.25; font-variant-numeric: tabular-nums; }
#main.fleet-owners-workspace .owners-columns { display: grid; grid-template-columns: 190px 260px minmax(0,1fr); gap: 12px; align-items: stretch; min-width: 0; }
#main.fleet-owners-workspace .owners-columns > section { display: flex; flex-direction: column; min-width: 0; margin: 0; border: 1px solid var(--border-subtle); border-radius: 3px; background: var(--panel-bg); }
#main.fleet-owners-workspace .owners-columns > .owners-detail { background: linear-gradient(var(--owner-tint,transparent),var(--owner-tint,transparent)),var(--panel-bg); border-color: var(--owner-color,var(--border-subtle)); }
#main.fleet-owners-workspace .owners-section-head { display: flex; align-items: center; justify-content: space-between; flex: 0 0 auto; gap: 8px; min-height: 42px; box-sizing: border-box; padding: 9px 11px; border-bottom: 1px solid var(--border-subtle); }
#main.fleet-owners-workspace .owners-section-head h3 { margin: 0; color: var(--text-strong); font-size: 15px; font-weight: 750; line-height: 1.4; }
#main.fleet-owners-workspace .owners-section-head > :is(span,small) { color: var(--text-secondary); font-size: 12px; white-space: nowrap; font-variant-numeric: tabular-nums; }
#main.fleet-owners-workspace .owners-search { display: block; flex: 0 0 auto; box-sizing: border-box; width: calc(100% - 20px); min-width: 0; min-height: 33px; margin: 9px 10px; font-size: 12px; }
#main.fleet-owners-workspace #openCreateOwner { display: flex; flex: 0 0 auto; min-height: 33px; margin: 0 10px 9px; padding: 6px 8px; font-size: 12px; }
#main.fleet-owners-workspace .owners-directory-list { display: flex; flex: 1 1 auto; flex-direction: column; gap: 3px; max-height: 440px; min-height: 0; padding: 0 7px 8px; overflow-y: auto; overscroll-behavior: contain; }
#main.fleet-owners-workspace button.owner-directory-row { display: flex; flex: 0 0 auto; align-items: center; gap: 7px; width: 100%; min-height: 46px; box-sizing: border-box; padding: 7px 8px; border: 1px solid transparent; border-radius: 2px; background: transparent; color: var(--text-primary); text-align: left; font: inherit; cursor: pointer; }
#main.fleet-owners-workspace button.owner-directory-row:hover { background: var(--panel-bg-alt); }
#main.fleet-owners-workspace button.owner-directory-row[aria-pressed="true"] { border-color: var(--owner-color,var(--border-subtle)); background: linear-gradient(var(--owner-tint,transparent),var(--owner-tint,transparent)),var(--panel-bg); box-shadow: inset 3px 0 0 var(--owner-color,var(--border-strong)); }
#main.fleet-owners-workspace .owner-directory-row > .chip { flex: 0 0 12px; margin: 0; }
#main.fleet-owners-workspace .owner-directory-name { display: grid; gap: 2px; min-width: 0; flex: 1; }
#main.fleet-owners-workspace .owner-directory-name strong { color: var(--text-strong); font-size: 13px; line-height: 1.35; overflow-wrap: anywhere; }
#main.fleet-owners-workspace .owner-directory-name small { color: var(--text-secondary); font-size: 11px; line-height: 1.3; }
#main.fleet-owners-workspace .owner-detail-header { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px; padding: 10px; border-bottom: 1px solid var(--border-subtle); }
#main.fleet-owners-workspace .owner-detail-identity { display: grid; grid-template-columns: 15px minmax(0,1fr); align-items: center; column-gap: 8px; min-width: 0; flex: 1; }
#main.fleet-owners-workspace .owner-detail-identity > .chip { grid-column: 1; grid-row: 1; margin: 0; }
#main.fleet-owners-workspace .owner-detail-identity h3 { grid-column: 2; margin: 0; color: var(--text-strong); font-size: 15px; line-height: 1.4; overflow-wrap: anywhere; }
#main.fleet-owners-workspace .owner-detail-identity small { grid-column: 2; margin-top: 3px; color: var(--text-secondary); font-size: 11px; }
#main.fleet-owners-workspace .owner-detail-actions { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
#main.fleet-owners-workspace .owner-detail-actions .btn { min-height: 29px; padding: 4px 7px; font-size: 11px; white-space: nowrap; }
#main.fleet-owners-workspace .owner-add-form { display: flex; flex: 0 0 auto; align-items: stretch; gap: 6px; margin: 10px; }
#main.fleet-owners-workspace .owner-add-form input { flex: 1; width: 0; min-width: 0; box-sizing: border-box; font-size: 12px; }
#main.fleet-owners-workspace .owner-add-form .btn { flex: 0 0 auto; min-height: 33px; padding: 5px 7px; font-size: 11px; white-space: nowrap; }
#main.fleet-owners-workspace .owners-character-table { width: calc(100% - 20px); min-width: 0; margin: 0 10px 8px; border-collapse: collapse; table-layout: fixed; font-size: 12px; }
#main.fleet-owners-workspace .owners-character-table :is(th,td) { box-sizing: border-box; padding: 7px 6px; border-bottom: 1px solid var(--border-subtle); text-align: left; vertical-align: middle; white-space: normal; overflow-wrap: anywhere; line-height: 1.4; }
#main.fleet-owners-workspace .owners-character-table th { background: var(--panel-bg-alt); color: var(--th-text); font-size: 11px; font-weight: 650; }
#main.fleet-owners-workspace .owners-character-table th:last-child { width: 49px; text-align: right; }
#main.fleet-owners-workspace .owners-character-table td:last-child { text-align: right; }
#main.fleet-owners-workspace .owners-character-table tr:last-child td { border-bottom: 0; }
#main.fleet-owners-workspace .owners-row-menu { position: relative; display: inline-block; vertical-align: middle; }
#main.fleet-owners-workspace .owners-row-menu > summary { display: inline-flex; align-items: center; justify-content: center; min-height: 28px; min-width: 34px; box-sizing: border-box; padding: 3px 6px; border: 1px solid var(--border-subtle); border-radius: 2px; background: transparent; color: var(--text-secondary); list-style: none; font-size: 12px; cursor: pointer; white-space: nowrap; }
#main.fleet-owners-workspace .owners-row-menu > summary::-webkit-details-marker { display: none; }
#main.fleet-owners-workspace .owners-row-menu > summary:hover { color: var(--text-strong); background: var(--control-bg-hover); }
#main.fleet-owners-workspace .owners-row-menu[open] > summary { color: var(--text-strong); background: var(--panel-bg-alt); border-color: var(--border-strong); }
#main.fleet-owners-workspace .owners-row-menu > :is(button,.owners-row-menu-options) { position: absolute; top: calc(100% + 4px); right: 0; z-index: 8; min-width: 112px; padding: 7px 10px; border: 1px solid var(--border-strong); border-radius: 3px; background: var(--panel-bg); color: var(--danger-btn-text,var(--rm)); box-shadow: 0 5px 16px #0002; font: inherit; font-size: 12px; white-space: nowrap; cursor: pointer; }
#main.fleet-owners-workspace .owners-row-menu > button:hover { background: var(--danger-btn-bg); border-color: var(--danger-btn-border); }
#main.fleet-owners-workspace #ownersUnassignedList { display: flex; flex: 1 1 auto; flex-direction: column; min-width: 0; min-height: 0; }
#main.fleet-owners-workspace .owners-unassigned-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); flex: 1 1 auto; gap: 12px; align-items: start; min-width: 0; padding: 0 10px 10px; }
#main.fleet-owners-workspace .owners-unassigned-column { display: grid; grid-auto-rows: minmax(44px,auto); align-content: start; min-width: 0; }
#main.fleet-owners-workspace .owners-unassigned-column + .owners-unassigned-column { padding-left: 10px; border-left: 1px solid var(--border-subtle); }
#main.fleet-owners-workspace .owners-unassigned-row { display: grid; grid-template-columns: minmax(0,1fr) 112px; align-items: center; gap: 7px; min-width: 0; min-height: 44px; box-sizing: border-box; padding: 6px 0; border-bottom: 1px solid var(--border-subtle); }
#main.fleet-owners-workspace .owner-unassigned-name { display: flex; align-items: flex-start; gap: 6px; min-width: 0; font-size: 12px; line-height: 1.4; }
#main.fleet-owners-workspace .owner-unassigned-name > .chip { flex: 0 0 9px; width: 9px; height: 9px; margin: 4px 0 0; border-radius: 2px; }
#main.fleet-owners-workspace .owner-unassigned-name > span:not(.chip) { min-width: 0; overflow-wrap: anywhere; white-space: normal; }
#main.fleet-owners-workspace .owners-unassigned-row select { width: 112px; min-width: 0; max-width: 100%; box-sizing: border-box; min-height: 31px; padding: 5px; font-size: 11px; }
#main.fleet-owners-workspace .owner-assignment-locked { color: var(--text-secondary); font-size: 10px; line-height: 1.5; overflow-wrap: anywhere; }
#main.fleet-owners-workspace :is(.owners-directory-footer,.owners-unassigned-footer) { display: flex; align-items: center; flex: 0 0 auto; gap: 8px; min-height: 36px; box-sizing: border-box; margin-top: auto; padding: 8px 10px; border-top: 1px solid var(--border-subtle); color: var(--text-secondary); font-size: 11px; line-height: 1.5; font-variant-numeric: tabular-nums; }
#main.fleet-owners-workspace .owners-workspace .empty-state { margin: 0; padding: 30px 14px; color: var(--text-secondary); text-align: center; font-size: 13px; line-height: 1.65; }
#main.fleet-owners-workspace .owners-workspace > .hint { margin: 10px 0; }
#main.fleet-owners-workspace .owners-workspace :is(button,summary,input,select):focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
#main.fleet-owners-workspace .owners-workspace [hidden] { display: none !important; }

dialog.owners-create-dialog { width: min(560px,calc(100vw - 28px)); max-width: none; max-height: calc(100dvh - 32px); box-sizing: border-box; margin: auto; padding: 0; border: 1px solid var(--border-strong); border-radius: 4px; background: var(--panel-bg); color: var(--text-primary); box-shadow: 0 16px 52px #0004; overflow-y: auto; }
dialog.owners-create-dialog::backdrop { background: #090c0c85; }
dialog.owners-create-dialog header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 15px 20px; border-bottom: 1px solid var(--border-subtle); }
dialog.owners-create-dialog header h3 { margin: 0; color: var(--text-strong); font-size: 19px; }
dialog.owners-create-dialog header .btn { min-height: 30px; padding: 3px 8px; font-size: 16px; }
dialog.owners-create-dialog form { padding: 18px 20px 20px; }
dialog.owners-create-dialog form > label { display: block; margin-bottom: 7px; font-size: 13px; font-weight: 650; }
dialog.owners-create-dialog #newOwnerName { display: block; width: 100%; min-width: 0; box-sizing: border-box; margin: 0 0 17px; }
dialog.owners-create-dialog .hint { color: var(--text-secondary); font-size: 12px; line-height: 1.65; }
dialog.owners-create-dialog .color-grid-scroll { overflow: visible; padding: 3px; }
dialog.owners-create-dialog .color-grid { grid-template-columns: repeat(12,minmax(0,1fr)); min-width: 0; width: 100%; gap: 8px; margin: 7px 0; }
dialog.owners-create-dialog button.color-cell { display: block; width: 100%; height: 25px; min-height: 0; padding: 0; border: 1px solid var(--color-cell-border); border-radius: 2px; font-size: 0; }
dialog.owners-create-dialog button.color-cell:disabled { opacity: .25; cursor: not-allowed; }
dialog.owners-create-dialog button.color-cell.selected { outline: 2px solid var(--color-cell-selected); outline-offset: 2px; }
dialog.owners-create-dialog button.color-cell:focus-visible { outline: 2px dashed var(--text-strong); outline-offset: 2px; }
dialog.owners-create-dialog .modal-actions { margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--border-subtle); }
dialog.owners-create-dialog .modal-actions .btn { min-height: 38px; }
@media(max-width:1200px) {
  #main.fleet-owners-workspace .owners-columns { grid-template-columns: 190px minmax(0,1fr); }
  #main.fleet-owners-workspace .owners-unassigned { grid-column: 1 / -1; }
}
@media(max-width:760px) {
  #main.fleet-owners-workspace .owners-stats { gap: 6px; margin-bottom: 10px; }
  #main.fleet-owners-workspace .owners-stat { padding: 9px 10px; gap: 5px; }
  #main.fleet-owners-workspace .owners-stat strong { font-size: 21px; }
  #main.fleet-owners-workspace .owners-stat :is(label,span) { font-size: 11px; }
  #main.fleet-owners-workspace .owners-columns { grid-template-columns: minmax(0,1fr); gap: 10px; }
  #main.fleet-owners-workspace .owners-unassigned { grid-column: auto; }
  #main.fleet-owners-workspace .owners-directory-list { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); max-height: 260px; padding-bottom: 8px; }
  #main.fleet-owners-workspace button.owner-directory-row { min-height: 46px; }
  #main.fleet-owners-workspace .owner-detail-header { padding: 10px; }
  #main.fleet-owners-workspace .owners-unassigned-row { grid-template-columns: minmax(0,1fr) 106px; gap: 6px; }
  #main.fleet-owners-workspace .owners-unassigned-row select { width: 106px; }
}
@media(max-width:580px) {
  #main.fleet-owners-workspace .owners-unassigned-grid { grid-template-columns: minmax(0,1fr); gap: 0; }
  #main.fleet-owners-workspace .owners-unassigned-column + .owners-unassigned-column { padding-left: 0; border-left: 0; }
  #main.fleet-owners-workspace .owners-unassigned-row { grid-template-columns: minmax(0,1fr) 120px; }
  #main.fleet-owners-workspace .owners-unassigned-row select { width: 120px; }
}
@media(max-width:420px) {
  #main.fleet-owners-workspace .owners-stat { flex-direction: column; align-items: flex-start; }
  #main.fleet-owners-workspace .owners-stat strong { margin-left: 0; }
  #main.fleet-owners-workspace .owners-directory-list { grid-template-columns: minmax(0,1fr); max-height: 255px; }
  #main.fleet-owners-workspace .owner-detail-header { align-items: flex-start; }
  #main.fleet-owners-workspace .owner-detail-actions { justify-content: flex-end; }
  dialog.owners-create-dialog form { padding: 16px 14px; }
  dialog.owners-create-dialog header { padding: 14px; }
  dialog.owners-create-dialog .color-grid { grid-template-columns: repeat(8,minmax(0,1fr)); gap: 7px; }
}

/* No-current-record entry: a compact path from the loot log to each pilot's pay. */
#main.fleet-record-workspace .fleet-entry-guide { width: 100%; min-width: 0; }
#main.fleet-record-workspace .fleet-entry-intro { margin: 0 0 12px; }
#main.fleet-record-workspace .fleet-entry-intro :is(.fleet-entry-eyebrow,.eyebrow) { margin: 0 0 4px; color: var(--text-secondary); font-size: 10px; font-weight: 700; line-height: 1.4; letter-spacing: .1em; }
#main.fleet-record-workspace .fleet-entry-intro h2 { margin: 0; color: var(--text-strong); font-size: 32px; font-weight: 800; line-height: 1.25; letter-spacing: .01em; }
#main.fleet-record-workspace .fleet-entry-intro > p:not(.fleet-entry-eyebrow):not(.eyebrow) { margin: 6px 0 0; color: var(--text-secondary); font-size: 12px; line-height: 1.5; }
#main.fleet-record-workspace .fleet-entry-steps { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px; margin: 0 0 12px; padding: 0; list-style: none; }
#main.fleet-record-workspace .fleet-entry-steps > li { display: grid; grid-template-columns: 23px 30px minmax(0,1fr); align-items: center; gap: 9px; min-width: 0; min-height: 86px; box-sizing: border-box; padding: 11px 12px; border: 1px solid var(--border-subtle); border-radius: 3px; background: var(--panel-bg); }
#main.fleet-record-workspace .fleet-entry-step-number { display: inline-flex; align-items: center; justify-content: center; width: 23px; height: 23px; box-sizing: border-box; border: 1px solid var(--primary-btn-border); border-radius: 2px; background: var(--accent-soft); color: var(--text-strong); font-size: 12px; font-weight: 750; font-variant-numeric: tabular-nums; }
#main.fleet-record-workspace .fleet-entry-icon { display: block; width: 29px; height: 29px; color: var(--text-secondary); }
#main.fleet-record-workspace .fleet-entry-steps > li > div { min-width: 0; }
#main.fleet-record-workspace .fleet-entry-steps h3 { margin: 0 0 4px; color: var(--text-strong); font-size: 14px; font-weight: 750; line-height: 1.35; }
#main.fleet-record-workspace .fleet-entry-steps p { margin: 0; color: var(--text-secondary); font-size: 11px; line-height: 1.55; overflow-wrap: anywhere; }
#main.fleet-record-workspace .fleet-entry-panels { display: grid; grid-template-columns: minmax(0,1.38fr) minmax(0,1fr); align-items: stretch; gap: 12px; min-width: 0; }
#main.fleet-record-workspace .fleet-entry-upload { display: flex; align-items: center; justify-content: center; flex-direction: column; gap: 6px; min-width: 0; min-height: 255px; box-sizing: border-box; padding: 18px; border: 2px dashed var(--border-strong); border-radius: 4px; background: var(--panel-bg); text-align: center; cursor: pointer; }
#main.fleet-record-workspace .fleet-entry-upload > svg { display: block; flex: 0 0 auto; width: 40px; height: 40px; margin-bottom: 3px; color: var(--text-secondary); }
#main.fleet-record-workspace .fleet-entry-upload h3 { margin: 0; color: var(--text-strong); font-size: 19px; font-weight: 750; line-height: 1.35; }
#main.fleet-record-workspace .fleet-entry-upload p { margin: 0; color: var(--text-secondary); font-size: 12px; line-height: 1.5; }
#main.fleet-record-workspace .fleet-entry-upload #fleetImportFileBtn { min-width: 170px; min-height: 42px; margin-top: 5px; padding: 8px 20px; font-size: 13px; font-weight: 750; }
#main.fleet-record-workspace .fleet-entry-upload > small { display: block; color: var(--text-secondary); font-size: 10px; line-height: 1.5; }
#main.fleet-record-workspace .fleet-entry-upload:hover { border-color: var(--accent); }
#main.fleet-record-workspace .fleet-entry-upload.is-dragging { border-color: var(--primary-btn-border); border-style: solid; background: color-mix(in srgb,var(--primary-btn-bg) 12%,var(--panel-bg)); box-shadow: inset 0 0 0 2px var(--primary-btn-bg); }
#main.fleet-record-workspace .fleet-entry-upload.is-dragging > svg { color: var(--text-strong); }
#main.fleet-record-workspace .fleet-entry-result { display: flex; flex-direction: column; min-width: 0; min-height: 255px; box-sizing: border-box; padding: 13px 14px 10px; border: 1px solid var(--border-subtle); border-radius: 4px; background: var(--panel-bg); }
#main.fleet-record-workspace .fleet-entry-result > header { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 11px; }
#main.fleet-record-workspace .fleet-entry-result h3 { margin: 0; color: var(--text-strong); font-size: 14px; font-weight: 750; line-height: 1.4; }
#main.fleet-record-workspace .fleet-entry-result > :is(header,div) > span { flex: 0 0 auto; padding: 2px 6px; border-radius: 2px; color: var(--text-secondary); background: var(--panel-bg-alt); font-size: 10px; white-space: nowrap; }
#main.fleet-record-workspace .fleet-entry-result table { width: 100%; min-width: 0; border-collapse: collapse; table-layout: fixed; font-size: 11px; }
#main.fleet-record-workspace .fleet-entry-result table :is(th,td) { padding: 8px 5px; border-bottom: 1px solid var(--border-subtle); color: var(--text-secondary); font-size: 11px; line-height: 1.5; text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
#main.fleet-record-workspace .fleet-entry-result table th { background: var(--panel-bg-alt); font-size: 10px; font-weight: 650; }
#main.fleet-record-workspace .fleet-entry-result table :is(th,td):first-child { width: 26%; color: var(--text-primary); text-align: left; }
#main.fleet-record-workspace .fleet-entry-result table tbody tr:last-child td { border-bottom: 0; }
#main.fleet-record-workspace .fleet-entry-result > footer { margin-top: auto; padding-top: 9px; border-top: 1px solid var(--border-subtle); color: var(--text-secondary); font-size: 11px; line-height: 1.6; }
#main.fleet-record-workspace .fleet-entry-footer { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 12px; min-width: 0; margin-top: 11px; }
#main.fleet-record-workspace .fleet-entry-footer #fleetNewWorksheet { flex: 0 0 auto; min-height: 36px; padding: 7px 12px; border-color: var(--border); color: var(--text-primary); background: var(--panel-bg); font-size: 12px; font-weight: 500; }
#main.fleet-record-workspace .fleet-entry-footer #fleetNewWorksheet:hover { background: var(--control-bg-hover); }
#main.fleet-record-workspace .fleet-entry-footer :is(p,small,span) { min-width: 0; margin: 0; color: var(--text-secondary); font-size: 11px; line-height: 1.6; }
#main.fleet-record-workspace .fleet-entry-history { margin-top: 12px; padding: 9px 0 0; border-top: 1px solid var(--border-subtle); }
#main.fleet-record-workspace .fleet-entry-history > summary { width: fit-content; max-width: 100%; color: var(--text-secondary); font-size: 12px; line-height: 1.7; cursor: pointer; }
#main.fleet-record-workspace .fleet-entry-history #fleetHistoryEmbedded { position: static; top: auto; right: auto; width: 100%; max-height: none; margin: 0; padding: 12px 0 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; overflow: visible; }
#main.fleet-record-workspace .fleet-entry-history .fleet-history-content { padding-top: 10px; }
#main.fleet-record-workspace .fleet-entry-guide :is(button,[tabindex]):focus-visible,#main.fleet-record-workspace .fleet-entry-history > summary:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
#main.fleet-record-workspace .fleet-entry-guide [hidden] { display: none !important; }
@media(max-width:1000px) {
  #main.fleet-record-workspace .fleet-entry-panels { grid-template-columns: minmax(0,1fr); }
  #main.fleet-record-workspace .fleet-entry-upload { min-height: 230px; }
  #main.fleet-record-workspace .fleet-entry-result { min-height: 230px; }
}
@media(max-width:760px) {
  #main.fleet-record-workspace .fleet-entry-intro h2 { font-size: 27px; }
  #main.fleet-record-workspace .fleet-entry-intro > p:not(.fleet-entry-eyebrow):not(.eyebrow) { font-size: 11px; }
  #main.fleet-record-workspace .fleet-entry-steps { grid-template-columns: minmax(0,1fr); gap: 6px; }
  #main.fleet-record-workspace .fleet-entry-steps > li { grid-template-columns: 23px 27px minmax(0,1fr); gap: 8px; min-height: 67px; padding: 9px 10px; }
  #main.fleet-record-workspace .fleet-entry-icon { width: 26px; height: 26px; }
  #main.fleet-record-workspace .fleet-entry-steps h3 { margin-bottom: 2px; font-size: 13px; }
  #main.fleet-record-workspace .fleet-entry-upload { min-height: 230px; padding: 16px 12px; }
  #main.fleet-record-workspace .fleet-entry-upload h3 { font-size: 17px; }
  #main.fleet-record-workspace .fleet-entry-result { padding: 12px 10px 10px; }
  #main.fleet-record-workspace .fleet-entry-result table :is(th,td) { padding-left: 4px; padding-right: 4px; }
  #main.fleet-record-workspace .fleet-entry-footer { gap: 7px; }
  #main.fleet-record-workspace .fleet-entry-footer :is(p,small,span) { flex: 1 1 100%; }
}
.fleet-valuation-evidence table { width: 100%; min-width: 680px; table-layout: fixed; }
.fleet-valuation-evidence th:first-child { width: 110px; }
.fleet-valuation-evidence th:nth-child(2) { width: 200px; }
.fleet-valuation-evidence th:last-child { width: 150px; }
.fleet-valuation-evidence td:not(.num) { white-space: normal; overflow-wrap: anywhere; }
.fleet-valuation-evidence td small { display: block; white-space: normal; overflow-wrap: anywhere; }

/* Shared filing links stay after page content, including dynamically mounted tools. */
#siteFooter {
  position: static;
  display: flex;
  flex: 0 0 auto;
  order: 100;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 4px 24px;
  min-width: 0;
  min-height: 48px;
  margin-top: auto;
  padding: 8px 16px;
  padding-bottom: max(8px, env(safe-area-inset-bottom));
  border-top: 1px solid var(--border-subtle);
  background: var(--panel-bg);
  color: var(--text-secondary);
  font-size: 12px;
  line-height: 1.5;
}
#siteFooter a {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 28px;
  color: inherit;
  text-decoration: none;
  white-space: nowrap;
}
#siteFooter a:hover { color: var(--text-strong); text-decoration: underline; }
#siteFooter a:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
#siteFooter img { display: block; flex: 0 0 auto; object-fit: contain; }

/* Let the footer follow the map without changing the existing camera viewport. */
body[data-ui-style="endfield"].sidebar-enabled.starmap-active:has(#siteFooter) { overflow-y: auto; }
body[data-ui-style="endfield"].sidebar-enabled.starmap-active:has(#siteFooter) #app { height: auto; min-height: 100dvh; }
body[data-ui-style="endfield"].sidebar-enabled.starmap-active:has(#siteFooter) #workspaceContent {
  height: auto;
  min-height: 100dvh;
  overflow-x: clip;
  overflow-y: visible;
}
