/* 新版舰桥 · 页面样式（tools）：只在对应页面加载，排在 bridge.css 之后。令牌和通用组件在 bridge.css。 */

/* ==========================================================================
 * 市场与制造（工具页）：分区标签与常用入口
 * ========================================================================== */
#bridge .tools-page-hud .tools-compact-tabs { grid-area: tags; display: flex; flex-wrap: wrap; gap: 0 4px; margin-top: 6px; border-bottom: 1px solid var(--edge); }
#bridge .tools-compact-tab {
  position: relative;
  min-height: 42px;
  padding: 0 14px;
  border: 0;
  border-radius: 0;
  background: none;
  color: var(--t2);
  font-size: 15px;
  box-shadow: none;
}
#bridge .tools-compact-tab:hover { color: var(--t1); background: none; }
#bridge .tools-compact-tab.active { color: var(--am-hi); background: none; }
#bridge .tools-compact-tab.active::after { content: ""; position: absolute; left: 10px; right: 10px; bottom: -1px; height: 2px; border-radius: 2px; background: var(--am); box-shadow: 0 0 10px rgba(var(--am-rgb), 0.6); }
.tools-tab-badge { margin-left: 6px; padding: 1px 6px; border: 1px solid rgba(var(--am-rgb), 0.45); border-radius: 999px; color: var(--am); font: 600 10px/1.4 var(--font-ui); font-style: normal; vertical-align: 2px; }
#bridge .contracts-mode-tab.is-active { border-color: var(--am); background: rgba(var(--am-rgb), 0.12); color: var(--am-hi); }
#bridge .asset-estimate-copy-card.is-primary, #bridge .asset-estimate-copy-card.primary { border-color: rgba(var(--am-rgb), 0.55); background: linear-gradient(180deg, rgba(var(--am-rgb), 0.12), rgba(var(--am-rgb), 0.03)); }
@media (max-width: 760px) {
  #bridge .tools-page-hud .tools-compact-tabs { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
  #bridge .tools-compact-tab { flex: 0 0 auto; padding: 0 10px; font-size: 14px; }
}
#bridge.page-tools .workspace-shell { padding: 0 32px 32px; }
@media (max-width: 760px) { #bridge.page-tools .workspace-shell { padding: 0 12px 24px; } }

/* ---------- 市场中心（/tools#market，设计图 08）：分类 | 物品表 | 物品详情 ---------- */
#bridge .tools-market-center { grid-template-columns: minmax(220px, 260px) minmax(0, 1fr) minmax(300px, 360px); gap: 18px; }
#bridge .tools-market-side,
#bridge .tools-market-main,
#bridge .tools-market-detail,
.tools-market-shortcut {
  border: 1px solid var(--edge);
  border-radius: 14px;
  background: var(--hud-panel-bg, var(--panel-solid));
  padding: 16px;
  min-width: 0;
}
#bridge .tools-market-main { display: grid; gap: 12px; align-content: start; }
#bridge .tools-market-detail { position: sticky; top: 88px; display: grid; gap: 14px; border-color: rgba(var(--am-rgb), 0.35); }
#bridge .tools-market-main-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.tools-market-sort { display: flex; gap: 6px; }
.tools-market-sort[hidden] { display: none; }
.tools-market-sort button,
.tools-market-history-range button {
  min-height: 30px;
  padding: 0 14px;
  border: 1px solid var(--edge);
  border-radius: 999px;
  background: none;
  color: var(--t2);
  font: inherit;
  font-size: 13px;
  cursor: pointer;
}
.tools-market-sort button.active,
.tools-market-history-range button.active { border-color: rgba(var(--am-rgb), 0.7); background: rgba(var(--am-rgb), 0.12); color: var(--am-hi); }
#bridge .tools-market-type-panel-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
#bridge .tools-market-type-panel-head strong { font-family: var(--font-display); font-size: 12px; letter-spacing: 0.2em; color: var(--am); }
#bridge .tools-market-type-panel-head span { color: var(--t3); font-size: 13px; }
.tools-market-type-columns,
#bridge .tools-market-type-row {
  display: grid;
  grid-template-columns: minmax(150px, 1.6fr) repeat(2, minmax(64px, 0.8fr)) minmax(54px, 0.6fr) minmax(72px, 0.8fr) 92px;
  align-items: center;
  gap: 10px;
}
.tools-market-type-columns { padding: 0 12px 8px; border-bottom: 1px solid var(--edge); color: var(--t3); font-size: 12.5px; }
.tools-market-type-columns span:not(:first-child) { text-align: right; }
#bridge .tools-market-types { display: grid; grid-template-columns: 1fr; gap: 0; max-height: 620px; overflow: auto; }
#bridge .tools-market-type-row {
  min-height: 54px;
  padding: 8px 12px;
  border: 0;
  border-bottom: 1px solid var(--edge);
  border-radius: 0;
  background: none;
}
#bridge .tools-market-type-row:hover { background: rgba(255, 255, 255, 0.03); }
#bridge .tools-market-type-row.is-selected { background: rgba(var(--am-rgb), 0.08); box-shadow: inset 2px 0 0 var(--am); }
#bridge .tools-market-type-row > span.tools-market-type-name { display: flex; align-items: center; gap: 10px; min-width: 0; font-weight: 600; color: var(--t1); }
#bridge .tools-market-type-row > span.tools-market-type-name span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#bridge .tools-market-type-row b,
#bridge .tools-market-type-row em { font-family: var(--font-mono); font-style: normal; font-weight: 500; text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
#bridge .tools-market-type-row b.is-sell { color: var(--price-sell); }
#bridge .tools-market-type-row b.is-buy { color: var(--price-buy); }
#bridge .tools-market-type-row em { color: var(--t2); font-size: 13.5px; }
#bridge .tools-market-type-row.is-pending b { color: var(--t4); }
.tools-market-spark { width: 92px; height: 26px; }
.tools-market-spark path { fill: none; stroke-width: 1.6; vector-effect: non-scaling-stroke; }
.tools-market-spark.is-up path { stroke: var(--am); }
.tools-market-spark.is-down path { stroke: var(--cy); }
.tools-market-spark.is-empty { color: var(--t4); text-align: right; }
#bridge .tools-market-updated { color: var(--t3); font-size: 12.5px; }
#bridge .tools-market-item-title { display: flex; align-items: center; gap: 14px; }
#bridge .tools-market-item-title .tools-type-icon { width: 56px; height: 56px; border-radius: 10px; border: 1px solid var(--edge); }
#bridge .tools-market-item-title h3 { margin: 0; font-family: var(--font-serif); font-size: 26px; color: var(--t1); }
#bridge .tools-market-item-title p { margin: 4px 0 0; color: var(--t3); font-size: 13px; }
#bridge .tools-market-item-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 14px; }
#bridge .tools-market-item-stats > span { display: grid; gap: 4px; padding: 12px 14px; border: 1px solid rgba(var(--am-rgb), 0.45); border-radius: 10px; background: rgba(var(--am-rgb), 0.06); }
#bridge .tools-market-item-stats > span.is-buy { border-color: rgba(var(--cy-rgb), 0.4); background: rgba(var(--cy-rgb), 0.06); }
#bridge .tools-market-item-stats small { color: var(--t3); font-size: 12px; }
#bridge .tools-market-item-stats b { font-family: var(--font-mono); font-size: 24px; color: var(--price-sell); overflow-wrap: anywhere; }
#bridge .tools-market-item-stats .is-buy b { color: var(--price-buy); }
#bridge .tools-market-item-stats em { color: var(--t3); font-size: 12px; font-style: normal; }
.tools-market-item-station { margin: 10px 0 0; color: var(--t3); font-size: 12px; }
.tools-market-history[hidden], .tools-market-detail-actions[hidden], .tools-market-watch-form[hidden] { display: none; }
.tools-market-history header { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 10px; }
.tools-market-history header small { color: var(--t3); font-size: 12px; flex: 1; min-width: 120px; }
.tools-market-history-range { display: flex; gap: 6px; }
.tools-market-history-chart { margin-top: 10px; color: var(--am); }
.tools-market-history-chart svg { display: block; width: 100%; height: 170px; }
.tools-market-history-chart .line { fill: none; stroke: var(--am); stroke-width: 1.8; vector-effect: non-scaling-stroke; }
.tools-market-history-legend { display: flex; justify-content: space-between; gap: 8px; margin-top: 6px; color: var(--t3); font-size: 11.5px; font-family: var(--font-mono); }
.tools-market-detail-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.tools-market-watch-form { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.tools-market-watch-form label { display: flex; align-items: center; gap: 8px; color: var(--t2); font-size: 13px; }
#bridge .tools-market-watch-form input { width: 130px; min-height: 34px; padding: 0 10px; border: 1px solid var(--edge); border-radius: 8px; background: rgba(255, 255, 255, 0.03); color: var(--t1); font: inherit; }
.tools-market-watch-form small { width: 100%; color: var(--t3); font-size: 12px; }
.tools-market-watch-status { margin: 0; color: var(--am); font-size: 13px; }
.tools-market-watch-status:empty { display: none; }
.tools-market-watch-status a { color: var(--cy); margin-left: 4px; }
.tools-market-shortcuts { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-top: 18px; }
.tools-market-shortcut { display: grid; gap: 12px; align-content: start; }
.tools-market-shortcut header { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.tools-market-shortcut header small { color: var(--t3); font-size: 13px; }
#bridge .tools-market-shortcut textarea { width: 100%; min-height: 120px; padding: 10px 12px; border: 1px solid var(--edge); border-radius: 10px; background: rgba(0, 0, 0, 0.25); color: var(--t1); font-family: var(--font-mono); font-size: 13px; resize: vertical; }
.tools-market-shortcut > div:last-child { display: flex; flex-wrap: wrap; gap: 8px; }
.tools-market-lp-mini { width: 100%; border-collapse: collapse; font-size: 14px; }
.tools-market-lp-mini th { color: var(--t3); font-weight: 400; font-size: 12.5px; text-align: left; padding: 6px 4px; border-bottom: 1px solid var(--edge); }
.tools-market-lp-mini td { padding: 9px 4px; border-bottom: 1px solid var(--edge); color: var(--t1); }
.tools-market-lp-mini th:nth-child(n+3), .tools-market-lp-mini td:nth-child(n+3) { text-align: right; font-family: var(--font-mono); }
.tools-market-lp-mini td:nth-child(2) { color: var(--t2); }
@media (max-width: 1280px) {
  #bridge .tools-market-center { grid-template-columns: minmax(200px, 240px) minmax(0, 1fr); }
  #bridge .tools-market-detail { grid-column: 1 / -1; position: static; }
}
@media (max-width: 760px) {
  #bridge .tools-market-center { grid-template-columns: 1fr; }
  .tools-market-type-columns { display: none; }
  #bridge .tools-market-type-row { grid-template-columns: minmax(0, 1fr) auto auto; grid-template-areas: "name sell buy"; }
  #bridge .tools-market-type-row > em, #bridge .tools-market-type-row > .tools-market-spark { display: none; }
  .tools-market-shortcuts { grid-template-columns: 1fr; }
}

/* ---------- 制造与利润（/tools#profit，设计图 09） ---------- */
.profit-filter-bar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px; margin-bottom: 16px; }
.profit-chips { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.profit-chips button,
#bridge .profit-chips select {
  min-height: 34px;
  padding: 0 16px;
  border: 1px solid var(--edge);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.02);
  color: var(--t2);
  font: inherit;
  font-size: 14px;
  cursor: pointer;
}
.profit-chips button.active { border-color: rgba(var(--am-rgb), 0.7); background: rgba(var(--am-rgb), 0.12); color: var(--am-hi); }
#bridge [data-profit-search] { min-height: 38px; width: min(360px, 100%); padding: 0 14px; border: 1px solid var(--edge); border-radius: 10px; background: rgba(255, 255, 255, 0.02); color: var(--t1); font: inherit; }
.profit-board { display: grid; grid-template-columns: minmax(0, 1fr) minmax(300px, 380px); gap: 18px; align-items: start; }
.profit-ranking-card,
.profit-detail-card,
.profit-lower-card { padding: 18px 20px; border: 1px solid var(--edge); border-radius: 14px; background: var(--hud-panel-bg, var(--panel-solid)); min-width: 0; }
.profit-detail-card { position: sticky; top: 88px; border-color: rgba(var(--am-rgb), 0.4); }
.profit-ranking-card > header,
.profit-lower-card > header { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.profit-ranking-card > header small,
.profit-lower-card > header small { color: var(--t3); font-size: 13px; }
.profit-table { display: grid; max-height: 640px; overflow: auto; }
.profit-table-head,
.profit-table-row {
  display: grid;
  grid-template-columns: 34px minmax(140px, 1.8fr) repeat(3, minmax(64px, 0.8fr)) minmax(58px, 0.6fr) minmax(64px, 0.6fr) minmax(110px, 1fr);
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
}
.profit-table.is-lp .profit-table-head,
.profit-table.is-lp .profit-table-row { grid-template-columns: 34px minmax(160px, 2fr) repeat(5, minmax(60px, 0.8fr)); }
.profit-table-head { color: var(--t3); font-size: 12.5px; border-bottom: 1px solid var(--edge); position: sticky; top: 0; background: var(--panel-solid); z-index: 1; }
.profit-table-row { width: 100%; border: 0; border-bottom: 1px solid var(--edge); background: none; color: var(--t1); font: inherit; text-align: left; cursor: pointer; }
.profit-table-row:hover { background: rgba(255, 255, 255, 0.03); }
.profit-table-row.is-selected { background: rgba(var(--am-rgb), 0.08); box-shadow: inset 2px 0 0 var(--am); }
.profit-table-row > span { font-family: var(--font-mono); font-variant-numeric: tabular-nums; text-align: right; white-space: nowrap; font-size: 14px; }
.profit-table-head > span:nth-child(n+3) { text-align: right; }
.profit-table-row > span:first-child { color: var(--t3); text-align: left; }
.profit-table-row > span.name { display: grid; gap: 2px; text-align: left; font-family: inherit; font-weight: 600; white-space: normal; min-width: 0; }
.profit-table-row > span.name small { color: var(--t3); font-weight: 400; font-size: 12px; }
.profit-table-row > span.is-profit { color: var(--am); }
.profit-table-row > span.score { display: flex; align-items: center; gap: 8px; justify-content: flex-end; }
.profit-score { flex: 1; max-width: 90px; height: 6px; border-radius: 3px; background: rgba(255, 255, 255, 0.08); overflow: hidden; }
.profit-score i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--cy), var(--am)); }
.profit-table-caption { margin: 0 0 10px; color: var(--t3); font-size: 13px; }
.profit-detail-title { display: flex; align-items: center; gap: 14px; }
.profit-detail-title .tools-type-icon { width: 56px; height: 56px; border-radius: 10px; border: 1px solid var(--edge); }
.profit-detail-title h3 { margin: 0; font-family: var(--font-serif); font-size: 26px; color: var(--t1); }
.profit-detail-title p { margin: 4px 0 0; color: var(--t3); font-size: 13px; }
.profit-detail-body { display: grid; grid-template-columns: 130px minmax(0, 1fr); align-items: center; gap: 16px; margin-top: 16px; }
.profit-donut { width: 130px; height: 130px; }
.profit-donut circle { fill: none; stroke-width: 9; }
.profit-donut .track { stroke: rgba(var(--cy-rgb), 0.55); }
.profit-donut .value { stroke: var(--am); stroke-linecap: round; }
.profit-donut text { text-anchor: middle; fill: var(--t1); }
.profit-donut .pct { font-family: var(--font-mono); font-size: 15px; font-weight: 700; }
.profit-donut .cap { font-size: 8px; fill: var(--t3); }
.profit-detail-body dl { display: grid; gap: 8px; margin: 0; }
.profit-detail-body dl > div { display: flex; justify-content: space-between; gap: 10px; font-size: 14px; }
.profit-detail-body dt { color: var(--t3); }
.profit-detail-body dd { margin: 0; font-family: var(--font-mono); color: var(--t1); text-align: right; }
.profit-detail-body dd.is-am { color: var(--am); }
.profit-detail-body dd.is-cy { color: var(--cy); }
.profit-detail-volume { margin: 12px 0 0; font-size: 12.5px; }
.profit-detail-note { margin: 8px 0 0; color: var(--t3); font-size: 12.5px; line-height: 1.6; }
.profit-detail-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.profit-lower { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-top: 18px; }
#bridge .profit-lower-card textarea { width: 100%; min-height: 110px; padding: 10px 12px; border: 1px solid var(--edge); border-radius: 10px; background: rgba(0, 0, 0, 0.25); color: var(--t1); font-family: var(--font-mono); font-size: 13px; resize: vertical; }
.profit-lower-card > div:last-child { margin-top: 10px; }
.profit-method-list { margin: 0; padding-left: 18px; display: grid; gap: 8px; color: var(--t2); font-size: 14px; line-height: 1.6; }
[data-bp-detail]:not(:empty) { margin-top: 18px; }
@media (max-width: 1180px) {
  .profit-board { grid-template-columns: 1fr; }
  .profit-detail-card { position: static; order: -1; }
}
@media (max-width: 760px) {
  .profit-table-head { display: none; }
  .profit-table-row,
  .profit-table.is-lp .profit-table-row { grid-template-columns: 28px minmax(0, 1fr) auto; }
  .profit-table-row > span:nth-child(n+3):not(.is-profit) { display: none; }
  .profit-lower { grid-template-columns: 1fr; }
  .profit-detail-body { grid-template-columns: 1fr; justify-items: center; }
  .profit-detail-body dl { width: 100%; }
}

#bridge .contracts-filter-form select[name="sort"] { min-width: min(230px, 100%); padding-right: 30px; }
