/* web/css/pages.css —— 14 路由对应样式（表现层打磨版）
 * 保留原结构与 class 名，只补强 + 调优；不破坏 selectors 命名。
 */

/* ============================================================ */
/* index 行情                                                     */
/* ============================================================ */
.origin-bar {
  margin: var(--space-3) var(--space-4) var(--space-1);
  padding: 12px var(--space-4);
  display: flex; align-items: center; justify-content: space-between;
  background: var(--c-card);
}
.origin-label { font-size: var(--fs-md); font-weight: 600; color: var(--c-text); }
.origin-picker-inner {
  display: flex; align-items: center;
  background: var(--c-line-2); border-radius: var(--radius-pill);
  padding: 6px var(--space-3);
  cursor: pointer;
  transition: background 0.15s ease;
  min-height: 32px;
}
.origin-picker-inner:hover { background: var(--c-line); }
.origin-code { font-size: var(--fs-md); font-weight: 700; color: var(--c-primary); margin-right: 6px; font-variant-numeric: tabular-nums; }
.origin-city { font-size: var(--fs-sm); color: var(--c-ink); margin-right: 6px; }
.origin-arrow { font-size: 10px; color: var(--c-muted); }

.region-title-skel { height: 18px; width: 90px; margin-bottom: 12px; }
.row-skel { height: 20px; margin-bottom: 14px; }

.index-content { padding-bottom: var(--space-3); }
@media (min-width: 1024px) {
  .origin-bar { margin: var(--space-4) 0; padding: 14px var(--space-5); }
  .index-content { padding: 0; }
}

/* ============================================================ */
/* tools 工具首页                                                  */
/* ============================================================ */
.tools-content { padding-bottom: var(--space-3); }
.tools-edit-bar {
  display: flex; justify-content: space-between; align-items: center; gap: var(--space-3);
  margin: var(--space-3) var(--space-4) 0;
  padding: 10px var(--space-4);
  background: var(--c-card-2); color: var(--c-text);
  font-size: var(--fs-sm);
  border: 1px solid var(--c-line-strong);
  border-radius: var(--radius-card);
}
.tools-edit-bar button {
  background: var(--c-card); color: var(--c-primary);
  border: 1px solid var(--c-primary);
  padding: 0 14px; height: 32px; border-radius: 6px;
  font-size: var(--fs-sm); cursor: pointer;
  font-weight: 600;
  transition: background 0.15s ease, transform 0.12s ease;
}
.tools-edit-bar button:hover { background: var(--c-tint-primary); }
.tools-edit-bar button:active { transform: scale(0.97); }
.tools-edit-bar button:focus-visible { box-shadow: var(--shadow-focus); }

.tools-toolbar {
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--space-3);
  margin: var(--space-3) var(--space-4) var(--space-2);
}
.tools-toolbar-left {
  display: flex; flex-direction: column; gap: 2px;
}
.tools-toolbar-title {
  font-size: var(--fs-xl); font-weight: 600; color: var(--c-text);
  letter-spacing: 0.3px;
}
.tools-toolbar-sub {
  font-size: var(--fs-xs); color: var(--c-muted);
}
.tools-toolbar-right {
  display: flex; gap: 8px;
  /* 右上角常驻 ↑ 翻页 FAB（固定定位）：在按钮组右侧预留 FAB 的整条带，否则「编辑」会被压在 FAB 下面
     （实测 390×844 重叠 36×32px）。用 margin 而非父级 padding，避免挤窄左侧标题栏导致副标题换行。
     带宽随视口变化：≤599px FAB 40px + 右边距 12 = 52；≥600px FAB 44px + 右边距 16 = 60。 */
  margin-right: 52px;
}
@media (min-width: 600px) {
  .tools-toolbar-right { margin-right: 60px; }
}
/* ≥1024：工具栏右边距为 0（不再叠加 --space-4），FAB 仍距右边 16px → 再让出 12px 间隙 */
@media (min-width: 1024px) {
  .tools-toolbar-right { margin-right: 72px; }
}
.tools-edit-btn {
  height: 32px; min-width: 72px;
  padding: 0 var(--space-3);
  background: var(--c-card); color: var(--c-primary);
  border: 1px solid var(--c-primary);
  border-radius: var(--radius-pill);
  font-size: var(--fs-sm); font-weight: 600;
  cursor: pointer;
  transition: background 0.15s ease, transform 0.12s ease;
  display: inline-flex; align-items: center; gap: 4px;
}
.tools-edit-btn:hover { background: var(--c-tint-primary); }
.tools-edit-btn:active { transform: scale(0.97); }
.tools-edit-btn:focus-visible { box-shadow: var(--shadow-focus); }
.tools-edit-btn.done {
  background: var(--c-primary); color: var(--c-primary-ink);
}
.tools-edit-btn.done:hover { background: var(--c-primary-hover); }

@media (min-width: 1024px) {
  .tools-toolbar { margin: var(--space-4) 0 var(--space-3); }
  .tools-toolbar-title { font-size: var(--fs-xxl); }
}

/* ============================================================ */
/* quote SOP                                                     */
/* ============================================================ */
.steps {
  display: flex; align-items: center;
  margin: var(--space-3) 0 var(--space-4);
  padding: 0 var(--space-3);
}
.step { display: flex; flex-direction: column; align-items: center; flex-shrink: 0; }
.step-circle {
  width: 26px; height: 26px; border-radius: 50%;
  background: var(--c-line); color: var(--c-muted);
  font-size: 12px; font-weight: 600;
  display: flex; align-items: center; justify-content: center;
  transition: background 0.2s ease, color 0.2s ease;
}
.step-label { margin-top: 6px; font-size: 11px; color: var(--c-muted); letter-spacing: 0.3px; }
.step.cur .step-circle { background: var(--c-primary); color: var(--c-primary-ink); box-shadow: 0 0 0 4px var(--c-tint-primary-strong); }
.step.cur .step-label { color: var(--c-primary); font-weight: 600; }
.step.done .step-circle { background: var(--c-tint-primary-strong); color: var(--c-primary); }
.step.done .step-label { color: var(--c-ink); }
.step.tap { cursor: pointer; }
.step.tap:hover .step-circle { background: var(--c-tint-primary-strong); }
.step.tap .step-circle { border: 1px solid var(--c-primary); }
.step-line { flex: 1; height: 1px; background: var(--c-line); margin: 0 6px 22px; }

.quote-content { padding-bottom: var(--space-3); }
@media (min-width: 1024px) {
  .quote-content { padding: 0; }
  .quote-content .card { padding: var(--space-6); }
}

/* S1 */
.s1-input {
  width: 100%; min-height: 140px;
  background: var(--c-line-2); border: 1px solid var(--c-line);
  border-radius: var(--radius-card);
  padding: var(--space-3);
  font-size: var(--fs-md);
  resize: vertical;
  transition: border-color 0.15s ease, background 0.15s ease;
}
.s1-input:hover { border-color: var(--c-line-strong); }
.s1-input:focus { background: var(--c-card); border-color: var(--c-primary); }
.s1-imgs { display: flex; flex-wrap: wrap; margin-top: var(--space-3); }
.s1-img-wrap {
  position: relative;
  width: 76px; height: 76px;
  margin: 0 8px 8px 0;
  border-radius: 8px;
  overflow: hidden;
  background: var(--c-line);
}
.s1-img-wrap img { width: 100%; height: 100%; object-fit: cover; cursor: pointer; }
.s1-img-del {
  position: absolute; top: -8px; right: -8px;
  width: 20px; height: 20px;
  border-radius: 50%;
  background: var(--c-mask-strong); color: var(--c-primary-ink);
  font-size: 13px; line-height: 20px;
  text-align: center; cursor: pointer;
  transition: background 0.15s ease, transform 0.12s ease;
}
.s1-img-del:hover { background: var(--c-up); }
.s1-img-del:active { transform: scale(0.9); }
.s1-example-list { display: flex; flex-direction: column; gap: 6px; margin-top: var(--space-3); }
.s1-example {
  font-size: var(--fs-sm); color: var(--c-primary);
  text-align: right;
  cursor: pointer;
  padding: 6px 8px;
  border-radius: 6px;
  transition: background 0.15s ease;
}
.s1-example:hover { background: var(--c-tint-primary); }
.s1-example:active { background: var(--c-tint-primary-strong); }
.s1-btns { display: flex; margin-top: var(--space-4); gap: var(--space-3); }
.s1-btns .btn { flex: 1; }

/* S2 / S5 */
.badge-battery {
  margin-left: 8px; font-size: 11px; color: var(--c-accent);
  border: 1px solid var(--c-accent); border-radius: 4px;
  padding: 1px 6px; font-weight: 600;
}
.act-btns { display: flex; margin-top: var(--space-4); gap: var(--space-3); }
.act-btns .btn { flex: 1; }

/* S3 */
.gate { display: flex; flex-direction: column; align-items: center; padding: var(--space-7) var(--space-3); }
.gate-title { font-size: var(--fs-md); color: var(--c-ink); margin-bottom: var(--space-4); text-align: center; line-height: 1.7; }
.gate .btn { width: 200px; }
.quote-card {
  background: var(--c-card); border-radius: var(--radius-card);
  box-shadow: var(--shadow-card);
  padding: var(--space-4);
  margin: 0 var(--space-4) var(--space-3);
  border: 1px solid transparent;
  box-sizing: border-box;
  transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
}
.quote-card:hover { box-shadow: var(--shadow-card-hover); }
.quote-card.sel { border-color: var(--c-primary); box-shadow: 0 6px 20px var(--shadow-card-hover); }
.q-head { display: flex; align-items: center; gap: var(--space-2); flex-wrap: wrap; }
.q-airline { font-size: var(--fs-lg); font-weight: 600; color: var(--c-text); }
.q-code {
  font-size: var(--fs-sm);
  color: var(--c-primary); background: var(--c-tint-primary-strong);
  border-radius: 4px; padding: 2px 8px;
  font-weight: 600;
}
.q-sel-tag {
  font-size: 11px; font-weight: 600;
  color: var(--c-primary); border: 1px solid var(--c-primary);
  border-radius: 4px; padding: 1px 6px;
  margin-left: auto;
}
.q-line { margin-top: 6px; font-size: var(--fs-sm); color: var(--c-ink); line-height: 1.6; }
.q-price { margin-top: var(--space-3); font-size: var(--fs-sm); color: var(--c-muted); display: flex; align-items: baseline; gap: 4px; }
.q-num { font-size: var(--fs-xxl); font-weight: 700; color: var(--c-accent); font-variant-numeric: tabular-nums; line-height: 1.1; }
.q-remark {
  margin-top: var(--space-2); font-size: var(--fs-xs);
  color: var(--c-ink); background: var(--c-line-2);
  border-radius: 6px; padding: 8px 10px;
  line-height: 1.6;
  border-left: 3px solid var(--c-accent);
}
.q-book {
  display: block; width: 100%; max-width: 200px; height: 40px; line-height: 40px;
  margin: 14px auto 0;
  text-align: center;
}
@media (min-width: 1024px) {
  .quote-card { padding: var(--space-5); }
}

/* S4 calendar */
.cal-tip {
  margin-top: var(--space-3);
  text-align: center;
  font-size: var(--fs-xs);
  color: var(--c-muted);
  line-height: 1.7;
  padding: var(--space-2) var(--space-3);
  background: var(--c-tint-primary);
  border-radius: 6px;
}

/* S5 summary */
.summary {
  background: var(--c-line-2); border-radius: var(--radius-card);
  padding: var(--space-3) var(--space-4);
  margin-bottom: var(--space-4);
  border-left: 3px solid var(--c-primary);
}
.sum-row { display: flex; padding: 4px 0; gap: var(--space-3); }
.sum-k { width: 56px; font-size: var(--fs-sm); color: var(--c-muted); flex-shrink: 0; }
.sum-v { flex: 1; font-size: var(--fs-sm); color: var(--c-text); }

/* DONE */
.done { display: flex; flex-direction: column; align-items: center; padding: var(--space-7) var(--space-3); text-align: center; }
.done-check {
  width: 72px; height: 72px; border-radius: 50%;
  background: var(--c-tint-down); color: var(--c-down);
  font-size: 40px; font-weight: 600;
  display: flex; align-items: center; justify-content: center;
  animation: done-pop 0.4s cubic-bezier(0.16, 0.84, 0.44, 1);
}
@keyframes done-pop {
  0% { transform: scale(0.4); opacity: 0; }
  60% { transform: scale(1.08); }
  100% { transform: scale(1); opacity: 1; }
}
.done-text { margin-top: var(--space-4); font-size: var(--fs-lg); font-weight: 600; color: var(--c-text); line-height: 1.6; }
.done-id   { margin-top: var(--space-3); font-size: var(--fs-sm); color: var(--c-muted); word-break: break-all; }

/* ============================================================ */
/* space-calendar (S4 内嵌)                                        */
/* ============================================================ */
.sc { background: var(--c-card); border-radius: var(--radius-card); padding: var(--space-4); }
.sc-head { display: flex; align-items: center; justify-content: space-between; }
.sc-arrow {
  width: 36px; height: 36px; line-height: 36px;
  text-align: center; font-size: 22px;
  color: var(--c-primary); cursor: pointer;
  user-select: none;
  border-radius: 50%;
  transition: background 0.15s ease;
}
.sc-arrow:hover { background: var(--c-tint-primary); }
.sc-arrow:active { background: var(--c-tint-primary-strong); }
.sc-title { font-size: var(--fs-lg); font-weight: 600; color: var(--c-text); font-variant-numeric: tabular-nums; }
.sc-week { display: flex; margin-top: var(--space-3); }
.sc-week span { flex: 1; text-align: center; font-size: var(--fs-xs); color: var(--c-muted); }
.sc-grid { display: flex; flex-wrap: wrap; margin-top: var(--space-1); }
.sc-cell {
  width: 14.2857%; height: 48px;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  border-radius: 6px;
  box-sizing: border-box;
  cursor: pointer;
  transition: background 0.15s ease;
}
.sc-cell:hover { background: var(--c-line-2); }
.sc-cell.dim { opacity: 0.35; cursor: default; }
.sc-cell.dim:hover { background: transparent; }
.sc-cell.past .sc-day { color: var(--c-ink-faint); cursor: not-allowed; }
.sc-cell.past { cursor: not-allowed; }
.sc-cell.past:hover { background: transparent; }
.sc-cell.sel { background: var(--c-tint-primary-strong); box-shadow: inset 0 0 0 1px var(--c-primary); }
.sc-day { font-size: var(--fs-sm); color: var(--c-text); font-variant-numeric: tabular-nums; }
.sc-mark { height: 8px; margin-top: 3px; display: flex; align-items: center; justify-content: center; }
.sc-dot { width: 6px; height: 6px; border-radius: 50%; }
.dot-ample     { background: var(--c-down); }
.dot-tight     { background: var(--c-tight); }
.dot-full      { background: var(--c-up); }
.dot-cancelled { background: var(--c-cancel); }
.sc-minus { color: var(--c-text); font-size: var(--fs-sm); line-height: 8px; }
.sc-legend {
  display: flex; flex-wrap: wrap;
  margin-top: var(--space-3);
  padding-top: var(--space-3);
  border-top: 1px solid var(--c-line);
  gap: var(--space-3);
}
.lg {
  display: flex; align-items: center;
  font-size: 11px; color: var(--c-ink);
}
.lg .sc-dot, .lg .sc-minus, .lg .lg-blank { margin-right: 4px; }
.lg-blank {
  width: 6px; height: 6px; border-radius: 50%;
  border: 1px dashed var(--c-ink-faint);
}

/* ============================================================ */
/* news —— 英雄卡片列表（左图右文，整卡可点进详情）                  */
/* ============================================================ */
.news-host { padding-bottom: var(--space-5); }
.news-page-head {
  padding: var(--space-5) var(--space-4) var(--space-3);
  border-bottom: 1px solid var(--c-line);
}
.news-page-title {
  font-family: var(--font-display);
  font-size: var(--fs-display);
  font-weight: 700;
  color: var(--c-text);
  letter-spacing: -0.02em;
}
.news-page-sub { margin-top: 6px; font-size: var(--fs-sm); color: var(--c-ink); }
.news-page-desc { margin-top: var(--space-2); font-size: var(--fs-sm); color: var(--c-muted); line-height: 1.7; max-width: 640px; }

.news-list {
  padding: var(--space-3) var(--space-4);
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
.news-card {
  background: var(--c-card);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-card);
  border: 1px solid var(--c-line);
  padding: var(--space-4);
  margin: 0;                      /* .card 默认带左右外边距，这里由 .news-list 统一控制 */
  cursor: pointer;
  transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.news-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-card-hover); }
.news-card:active { transform: translateY(0); }
.news-card:focus-visible { outline: none; box-shadow: var(--shadow-focus); }

/* 英雄卡：左图 + 右文 */
.news-hero { display: flex; align-items: stretch; gap: var(--space-4); }
.news-hero-body { flex: 1; min-width: 0; display: flex; flex-direction: column; }

/* 配图：本地生成（内联 SVG 几何图案 + 主题化渐变底），零外链 */
.news-cover {
  flex: 0 0 auto;
  width: 132px;
  height: 132px;
  border-radius: var(--radius-sm);
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(140deg, var(--nc-a), var(--nc-b));
  color: var(--nc-ink);
  border: 1px solid var(--c-line);
}
.news-cover svg { width: 100%; height: 100%; display: block; }
/* 按文章主题配色：0 舱位包板（蓝）/ 1 带电合规（橙）/ 2 单据编号（绿）—— 日间 */
.news-cover-0 { --nc-a: #DCE8F5; --nc-b: #B6CDE6; --nc-ink: #24405C; }
.news-cover-1 { --nc-a: #FBE6D6; --nc-b: #F0C6A6; --nc-ink: #6C3A1C; }
.news-cover-2 { --nc-a: #E2EADC; --nc-b: #C3D4BA; --nc-ink: #2C4A34; }
/* 暗夜：同色相压暗底 + 提亮图案色，与深色主题协调 */
html[data-theme="dark"] .news-cover-0 { --nc-a: #17273B; --nc-b: #0B1524; --nc-ink: #9FC6EC; }
html[data-theme="dark"] .news-cover-1 { --nc-a: #2E1C11; --nc-b: #180E08; --nc-ink: #F2B88F; }
html[data-theme="dark"] .news-cover-2 { --nc-a: #16241A; --nc-b: #0B130E; --nc-ink: #ABD6B7; }

.news-title { font-family: var(--font-display); font-size: var(--fs-xl); font-weight: 700; color: var(--c-text); line-height: 1.4; }
.news-sub   { margin-top: 6px; font-size: var(--fs-sm); color: var(--c-ink); line-height: 1.65; }
.news-meta  { margin-top: auto; padding-top: var(--space-3); display: flex; align-items: center; gap: var(--space-2); flex-wrap: wrap; }
.news-date  { font-size: var(--fs-xs); color: var(--c-muted); font-variant-numeric: tabular-nums; }
.news-tag {
  font-size: var(--fs-xs);
  color: var(--c-ink);
  border: 1px solid var(--c-line-strong);
  border-radius: var(--radius-pill);
  padding: 2px 8px;
}
.news-more { margin-left: auto; font-size: var(--fs-xs); color: var(--c-muted); }

.news-compliance {
  margin: var(--space-3) var(--space-4) var(--space-5);
  padding: var(--space-3) var(--space-4);
  background: var(--c-card-2);
  border: 1px solid var(--c-line);
  border-radius: var(--radius-card);
}
.news-compliance-title { font-size: var(--fs-sm); font-weight: 700; color: var(--c-text); }
.news-compliance-text { margin-top: 4px; font-size: var(--fs-xs); color: var(--c-muted); line-height: 1.8; }

/* 移动端 <600px：左图缩为缩略图，仍是左图右文；不产生横向溢出 */
@media (max-width: 599px) {
  .news-page-head { padding: var(--space-4) var(--space-4) var(--space-3); }
  .news-page-title { font-size: var(--fs-xxl); }
  .news-hero { gap: var(--space-3); }
  .news-cover { width: 108px; height: 108px; }
  .news-title { font-size: var(--fs-lg); }
  .news-sub { font-size: var(--fs-xs); }
}
@media (min-width: 1024px) {
  .news-host { padding: 0; }
  .news-page-head { padding: var(--space-5) 0 var(--space-4); }
  .news-list { padding: var(--space-4) 0; }
  .news-cover { width: 148px; height: 148px; }
  .news-compliance { margin: var(--space-4) 0 var(--space-6); }
}

.news-detail { padding: var(--space-4); }
.news-detail h1 { font-size: var(--fs-xxl); font-weight: 600; margin: var(--space-3) 0 var(--space-2); color: var(--c-text); line-height: 1.4; }
.news-detail .subtitle { color: var(--c-ink); font-size: var(--fs-md); margin-bottom: var(--space-2); line-height: 1.6; }
.news-detail .pubdate  { color: var(--c-muted); font-size: var(--fs-sm); margin-bottom: var(--space-3); }
.news-detail hr { border: none; border-top: 1px solid var(--c-line); margin: var(--space-3) 0; }
.news-detail .paragraph { font-size: var(--fs-md); line-height: 1.85; color: var(--c-text); margin-bottom: var(--space-3); }
@media (min-width: 1024px) {
  .news-detail { padding: 0; max-width: 760px; margin: 0 auto; }
}

/* ============================================================ */
/* user                                                            */
/* ============================================================ */
.user-host { padding-bottom: var(--space-5); }
@media (min-width: 1024px) {
  .user-host { padding: 0; }
  .user-host .login-card { max-width: 520px; margin: var(--space-5) auto; }
  .user-host .user-card,
  .user-host .feature-card,
  .user-host .about-section { max-width: 760px; margin-left: auto; margin-right: auto; }
  .user-host .section { max-width: 760px; margin-left: auto; margin-right: auto; padding: 0; }
}

.login-card { display: flex; flex-direction: column; align-items: center; padding: var(--space-7) var(--space-5); text-align: center; }
.login-avatar-wrap { display: flex; flex-direction: column; align-items: center; }
.login-avatar-btn {
  width: 84px; height: 84px; padding: 0; border-radius: 50%;
  background: var(--c-line); border: 2px dashed var(--c-ink-faint);
  display: flex; align-items: center; justify-content: center;
  overflow: hidden;
  cursor: pointer;
  transition: border-color 0.15s ease, background 0.15s ease;
}
.login-avatar-btn:hover { border-color: var(--c-primary); background: var(--c-tint-primary); }
.login-avatar { width: 100%; height: 100%; object-fit: cover; }
.login-avatar-placeholder { color: var(--c-muted); font-size: 30px; }
.login-avatar-plus { color: var(--c-muted); font-size: 30px; }
.login-avatar-tip { margin-top: var(--space-2); font-size: var(--fs-sm); color: var(--c-muted); }
.login-fields { width: 100%; margin-top: var(--space-5); display: flex; flex-direction: column; gap: var(--space-3); }
.login-input {
  width: 100%; height: var(--tap-min);
  background: var(--c-line-2); border: 1px solid var(--c-line);
  border-radius: var(--radius-card);
  padding: 0 var(--space-3);
  font-size: 16px;
  transition: border-color 0.15s ease, background 0.15s ease;
}
.login-input:hover { border-color: var(--c-line-strong); }
.login-input:focus { background: var(--c-card); border-color: var(--c-primary); }
.login-btn {
  width: 100%; height: var(--tap-min);
  background: var(--c-primary); color: var(--c-primary-ink);
  border: none; border-radius: var(--radius-card);
  font-size: var(--fs-md); cursor: pointer; font-weight: 600;
  transition: background 0.15s ease, transform 0.12s ease;
}
.login-btn:hover { background: var(--c-primary-hover); }
.login-btn:active { transform: scale(0.99); }
.login-desc { font-size: var(--fs-xs); color: var(--c-muted); text-align: center; line-height: 1.7; }

.user-card {
  display: flex; align-items: center;
  padding: var(--space-5);
}
.user-avatar {
  width: 52px; height: 52px; border-radius: 50%;
  background: var(--c-primary); color: var(--c-primary-ink);
  display: flex; align-items: center; justify-content: center;
  font-size: var(--fs-lg); font-weight: 600;
  margin-right: var(--space-3);
  overflow: hidden; flex-shrink: 0;
}
.user-avatar img, .user-avatar-placeholder img { width: 100%; height: 100%; object-fit: cover; }
.user-avatar-placeholder { background: var(--c-primary); }
.user-info { flex: 1; min-width: 0; }
.user-name { font-size: var(--fs-lg); font-weight: 600; }
.user-sub  { font-size: var(--fs-sm); color: var(--c-muted); margin-top: 2px; }
.logout-btn {
  padding: 0 var(--space-3); height: 32px;
  border: 1px solid var(--c-line);
  border-radius: var(--radius-pill);
  background: var(--c-card); color: var(--c-up);
  font-size: var(--fs-sm); cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease;
}
.logout-btn:hover { background: var(--c-tint-up); border-color: var(--c-up); }
.logout-btn:active { transform: scale(0.97); }

.feature-card { padding: 0; }
.feature-row {
  display: flex; align-items: center;
  padding: 12px var(--space-5);
  min-height: var(--tap-min);
}
.feature-label { flex: 1; font-size: var(--fs-md); color: var(--c-text); }
.feature-value { color: var(--c-primary); font-size: var(--fs-md); cursor: pointer; padding: 4px 8px; border-radius: 6px; transition: background 0.15s ease; }
.feature-value:hover { background: var(--c-tint-primary); }
/* 只读展示（账号职责等）：不带 pointer / hover，避免看起来可以点 */
.role-readonly { color: var(--c-primary); font-size: var(--fs-md); font-weight: 600; }
.feature-arrow { margin-left: 4px; }

.section { padding: 0 var(--space-4); }
.section-head {
  display: flex; align-items: center; justify-content: space-between;
  margin: var(--space-3) 0 var(--space-3);
}
.section-title { font-size: var(--fs-lg); font-weight: 600; color: var(--c-text); }
.section-count { font-size: var(--fs-sm); color: var(--c-muted); }

.loading-tip, .error-tip { text-align: center; color: var(--c-muted); padding: var(--space-5); }

.empty-card {
  display: flex; flex-direction: column; align-items: center;
  padding: var(--space-7) var(--space-5);
  text-align: center;
}
.empty-card .empty-icon { font-size: 38px; margin-bottom: var(--space-3); opacity: 0.7; }
.empty-card .empty-text { color: var(--c-muted); margin-bottom: var(--space-4); }
.empty-card .empty-btn {
  padding: 0 var(--space-4); height: 36px;
  background: var(--c-primary); color: var(--c-primary-ink);
  border: none; border-radius: var(--radius-pill);
  cursor: pointer; font-size: var(--fs-sm); font-weight: 600;
  transition: background 0.15s ease, transform 0.12s ease;
}
.empty-card .empty-btn:hover { background: var(--c-primary-hover); }
.empty-card .empty-btn:active { transform: scale(0.97); }

.booking-card {
  display: flex; flex-direction: column;
  padding: var(--space-3) var(--space-5);
  cursor: pointer;
  transition: background 0.15s ease;
}
.booking-card:hover { background: var(--c-line-2); }
.booking-top {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 6px;
  gap: var(--space-3);
}
.booking-route { display: flex; align-items: center; gap: 6px; font-size: var(--fs-md); font-weight: 600; }
.route-code { color: var(--c-primary); font-variant-numeric: tabular-nums; }
.route-arrow { color: var(--c-muted); }
.booking-line { font-size: var(--fs-sm); color: var(--c-ink); margin-top: 4px; line-height: 1.6; word-break: break-word; }
.booking-label { color: var(--c-muted); margin-right: 6px; }
.booking-bottom {
  display: flex; align-items: center; justify-content: space-between;
  margin-top: var(--space-3);
}
.booking-price {
  color: var(--c-accent); font-size: var(--fs-lg); font-weight: 600;
  font-variant-numeric: tabular-nums;
}
.booking-price .price-cny { font-size: var(--fs-sm); margin-right: 2px; }
.booking-detail-link { color: var(--c-primary); font-size: var(--fs-sm); }

.about-section { margin-bottom: var(--space-4); }
.about-card { padding: var(--space-4); }
.about-row { font-size: var(--fs-sm); color: var(--c-ink); line-height: 1.7; padding: 6px 0; border-bottom: 1px dashed var(--c-line); }
.about-row:last-child { border-bottom: none; }

.page-footer {
  text-align: center; font-size: var(--fs-xs);
  color: var(--c-muted); padding: var(--space-5) 0;
}

/* ============================================================ */
/* booking-detail                                                  */
/* ============================================================ */
.booking-detail-host { padding-bottom: var(--space-5); }
@media (min-width: 1024px) {
  .booking-detail-host { padding: 0; }
  .booking-detail-host .status-banner,
  .booking-detail-host .card,
  .booking-detail-host .feedback-panel,
  .booking-detail-host .action-area,
  .booking-detail-host .page-footer { max-width: 760px; margin-left: auto; margin-right: auto; }
  .booking-detail-host .status-banner { margin: var(--space-5) auto var(--space-3); }
}

.notfound {
  margin: var(--space-7) var(--space-4);
  padding: var(--space-7) var(--space-5);
  text-align: center;
  background: var(--c-card);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-card);
}
.notfound-text { color: var(--c-muted); margin-bottom: var(--space-4); }
.notfound-btn {
  padding: 0 var(--space-5); height: 40px;
  background: var(--c-primary); color: var(--c-primary-ink);
  border: none; border-radius: var(--radius-pill); cursor: pointer; font-weight: 600;
  transition: background 0.15s ease;
}
.notfound-btn:hover { background: var(--c-primary-hover); }

.info-row { display: flex; gap: var(--space-4); margin-bottom: var(--space-3); }
.info-item { flex: 1; min-width: 0; }
.info-label { font-size: var(--fs-sm); color: var(--c-muted); }
.info-value { font-size: var(--fs-md); color: var(--c-text); margin-top: 2px; word-break: break-word; }

.route-box {
  display: flex; align-items: center; justify-content: space-between; gap: var(--space-3);
  background: var(--c-line-2); border-radius: var(--radius-card);
  padding: 14px var(--space-4);
  margin-top: var(--space-3);
  border-left: 3px solid var(--c-primary);
}
.route-point { text-align: center; }
.route-code { font-size: var(--fs-xl); font-weight: 700; color: var(--c-primary); font-variant-numeric: tabular-nums; }
.route-role { font-size: var(--fs-xs); color: var(--c-muted); margin-top: 2px; }
.route-line { flex: 1; text-align: center; color: var(--c-primary); }
.route-plane { font-size: 22px; color: var(--c-primary); }

.battery-tag {
  display: inline-block; margin-left: 8px;
  font-size: var(--fs-xs); color: var(--c-accent); font-weight: 600;
  border: 1px solid var(--c-accent); border-radius: 4px;
  padding: 1px 6px;
}
.kv-val-wrap { flex: 1; display: flex; align-items: center; min-width: 0; }
.price { color: var(--c-accent); font-weight: 600; font-variant-numeric: tabular-nums; }

.action-area {
  display: flex; flex-direction: column; gap: var(--space-3);
  padding: 0 var(--space-4);
  margin: var(--space-3) 0;
}
.action-btn {
  width: 100%; height: var(--tap-min);
  border: 1px solid transparent; border-radius: var(--radius-card);
  font-size: var(--fs-md); cursor: pointer; font-weight: 500;
  transition: background 0.15s ease, transform 0.12s ease, border-color 0.15s ease;
}
.action-btn:active { transform: scale(0.99); }
.btn-primary { background: var(--c-primary); color: var(--c-primary-ink); }
.btn-primary:hover { background: var(--c-primary-hover); }
.btn-plain   { background: var(--c-card); color: var(--c-text); border-color: var(--c-border); }
.btn-plain:hover { background: var(--c-line-2); border-color: var(--c-ink-faint); }
.btn-danger  { background: var(--c-card); color: var(--c-up); border-color: var(--c-up); }
.btn-danger:hover { background: var(--c-tint-up); }
.btn-disabled { opacity: 0.5; pointer-events: none; }

.feedback-panel {
  margin: 0 var(--space-4) var(--space-4);
  padding: var(--space-4);
  background: var(--c-card);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-card);
  border-left: 3px solid var(--c-accent);
}
.feedback-head { font-size: var(--fs-lg); font-weight: 600; margin-bottom: var(--space-3); }
.feedback-type {
  display: flex; align-items: center; justify-content: space-between;
  padding: 10px var(--space-3);
  border: 1px solid var(--c-border); border-radius: 6px;
  font-size: var(--fs-md); cursor: pointer;
  margin-bottom: var(--space-3);
  min-height: var(--tap-min);
  transition: border-color 0.15s ease;
}
.feedback-type:hover { border-color: var(--c-primary); }
.feedback-type-label { color: var(--c-muted); }
.feedback-type-value { color: var(--c-text); font-weight: 500; }
.feedback-textarea {
  width: 100%; min-height: 88px; box-sizing: border-box;
  background: var(--c-line-2); border: 1px solid var(--c-line);
  border-radius: 6px; padding: var(--space-3);
  font-size: var(--fs-md); resize: vertical;
  margin-bottom: var(--space-3);
  transition: border-color 0.15s ease, background 0.15s ease;
}
.feedback-textarea:hover { border-color: var(--c-line-strong); }
.feedback-textarea:focus { background: var(--c-card); border-color: var(--c-primary); }

/* ============================================================ */
/* tools/fenpao                                                    */
/* ============================================================ */
.fenpao-host { padding: 0 var(--space-4); }
@media (min-width: 1024px) {
  .fenpao-host { padding: 0; }
  /* M3 标注 4/5（用户：「宽度适配网页宽度」）：桌面不再把卡片钳在 720px、阶梯卡 960px 的
     居中窄列里 —— 去掉宽度上限，卡片跟随页面内容列铺满（upload / 货物信息 / 货物总数据 /
     阶梯卡四张卡同宽），只保留 .card 自带的 16px 侧边距作为内容留白。
     阶梯卡有动态换算列，同样吃满整列，不再单独放宽。 */
  .fenpao-host .card { max-width: none; }
}
.fp-result {
  background: linear-gradient(135deg, var(--c-tint-primary), var(--c-card-2));
  border-radius: var(--radius-card);
  padding: var(--space-4);
  border: 1px solid var(--c-tint-primary-strong);
}
.fp-row { display: flex; align-items: center; justify-content: space-between; padding: 8px 0; border-bottom: 1px dashed var(--c-tint-primary-strong); }
.fp-row:last-child { border-bottom: none; }
.fp-k { color: var(--c-muted); font-size: var(--fs-sm); }
.fp-v { color: var(--c-text); font-size: var(--fs-lg); font-weight: 600; font-variant-numeric: tabular-nums; }

/* ---- 工单 L：尺寸行列表（可增删，每行 件数|长|宽|高 + 红色垃圾桶）---- */
.fp-dims-title { border-bottom: none; padding-bottom: 0; }
.fp-dims { padding: 2px 0 4px; }
.fp-dim-head,
.fp-dim-row {
  display: grid;
  grid-template-columns: 54px 1fr 1fr 1fr 34px;
  gap: 5px;
  align-items: center;
  min-width: 0;
}
.fp-dim-head { padding: 0 0 4px; }
.fp-dim-h { font-size: var(--fs-xs); color: var(--c-muted); text-align: center; }
.fp-dim-h-op { color: var(--c-ink-faint); }
.fp-dim-row { padding: 3px 0; }
.fp-dim-in {
  width: 100%; min-width: 0; box-sizing: border-box;
  height: 36px; font-size: var(--fs-md);
  background: var(--c-line-2);
  border: 1px solid var(--c-line);
  border-radius: var(--radius-xs);
  padding: 0 6px;
  font-variant-numeric: tabular-nums;
}
.fp-dim-in:hover { border-color: var(--c-line-strong); }
.fp-dim-in:focus { background: var(--c-card); border-color: var(--c-primary); }
.fp-dim-in::placeholder { color: var(--c-ink-faint); font-size: var(--fs-xs); }
.fp-dim-del {
  width: 32px; height: 32px; padding: 0;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: var(--radius-pill);
  border: 1px solid var(--c-line-strong);
  background: var(--c-card);
  color: var(--c-up);                       /* 红色垃圾桶（日间 #B3352A / 暗夜 #FF7A70） */
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease, opacity 0.15s ease;
}
.fp-dim-del:hover { background: var(--c-tint-up); border-color: var(--c-up); }
.fp-dim-del:focus-visible { box-shadow: var(--shadow-focus); }
.fp-dim-del[disabled],
.fp-dim-del[aria-disabled="true"] { opacity: 0.35; cursor: not-allowed; }
.fp-dim-del[disabled]:hover { background: var(--c-card); border-color: var(--c-line-strong); }
.fp-dim-add {
  width: 100%; box-sizing: border-box;
  margin-top: 2px; height: 38px;
  border: 1px dashed var(--c-line-strong);
  background: transparent;
  color: var(--c-text);
  font-size: var(--fs-sm);
  border-radius: var(--radius-xs);
  cursor: pointer;
}
.fp-dim-add:hover { background: var(--c-tint-primary); border-color: var(--c-primary); }
.fp-dim-add:focus-visible { box-shadow: var(--shadow-focus); }
.fp-dim-unit { font-size: var(--fs-xs); color: var(--c-muted); padding: 6px 0 0; }
.fp-auto-hint { font-size: var(--fs-sm); color: var(--c-primary); padding: 2px 0 6px; }

/* ---- 工单 M6：紧凑小三格（货物信息卡 件数|毛重|体积 一行；航线卡顶部三输入共用）---- */
.fp-mini-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; padding: 2px 0 8px; }
.fp-mini-cell { min-width: 0; }
.fp-mini-lab {
  display: flex; align-items: baseline; gap: 2px;
  font-size: var(--fs-xs); color: var(--c-muted); padding-bottom: 4px;
}
.fp-mini-unit { color: var(--c-ink-faint); }
.fp-mini-in { width: 100%; box-sizing: border-box; flex: none; height: 36px; font-variant-numeric: tabular-nums; }
/* 固定占位的恢复入口区：显隐时整行高度不抖动 */
.fp-mini-cap { min-height: 24px; display: flex; align-items: center; justify-content: flex-end; }
.fp-mini-cap .fp-restore { margin-left: 0; }
/* 航线卡顶部三输入（成本/期望卖价/期望分泡比）与下方档位表的分隔 */
.fp-expect { border-bottom: 1px dashed var(--c-line); margin-bottom: 8px; }
/* M3 标注 2：期望分泡比的常驻快捷档位（50/70/80/66），落在 .fp-mini-cap 预留的 24px 里 →
   不改变行高、不引起抖动；点一下 = 写同一个输入框（走同一条 input 事件）。
   ≤599px 隐藏：手机上是 3 列窄格（约 95px）放不下 4 个胶囊，交给系统原生 datalist 选择器。 */
.fp-split-presets { display: flex; flex-wrap: wrap; gap: 4px; justify-content: flex-end; }
.fp-split-preset {
  padding: 1px 6px; min-width: 26px;
  border: 1px solid var(--c-line-strong); border-radius: var(--radius-pill);
  background: var(--c-card-2); color: var(--c-ink);
  font-size: var(--fs-xs); line-height: 1.5; cursor: pointer;
  font-variant-numeric: tabular-nums;
}
.fp-split-preset:hover { background: var(--c-tint-primary); border-color: var(--c-primary); }
.fp-split-preset:focus-visible { box-shadow: var(--shadow-focus); }
.fp-split-preset.is-on { background: var(--c-tint-primary-strong); border-color: var(--c-primary); color: var(--c-text); font-weight: 700; }
@media (max-width: 599px) { .fp-split-presets { display: none; } }

/* 「用自动值」小恢复入口（体积 / 件数合计被手改时出现） */
.fp-restore {
  flex: 0 0 auto; margin-left: 8px; padding: 3px 8px;
  border: 1px solid var(--c-line-strong); border-radius: var(--radius-pill);
  background: var(--c-card-2); color: var(--c-ink);
  font-size: var(--fs-xs); cursor: pointer; white-space: nowrap;
}
.fp-restore:hover { background: var(--c-tint-primary); border-color: var(--c-primary); }
.fp-restore:focus-visible { box-shadow: var(--shadow-focus); }

/* ---- 工单 L：上传识别卡（文件选择 / 状态行 / 解析预览）---- */
.fp-file-input {
  position: absolute; width: 1px; height: 1px;
  opacity: 0; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%);
  white-space: nowrap; border: 0; padding: 0; margin: -1px;
}
.fp-up-sub { font-size: var(--fs-xs); color: var(--c-muted); line-height: 1.5; padding: 0 0 10px; }
/* ---- M3 标注 3：拖拽落点 + 「待确认上传」区 ----
   拖拽命中区 = 整张上传识别卡（dragenter/dragover/drop 都挂在卡上），这里把入口写清楚，
   并在拖拽悬停时给高亮反馈（.is-dragover 由 JS 加在卡上，进出子节点不会抖）。 */
.fp-drop-hint {
  display: flex; align-items: center; gap: 6px;
  margin: 0 0 8px; padding: 8px 10px;
  border: 1px dashed var(--c-line-strong); border-radius: var(--radius-sm);
  background: var(--c-card-2); color: var(--c-muted);
  font-size: var(--fs-xs); line-height: 1.5;
}
.fp-drop-hint-ic { flex: 0 0 auto; font-size: var(--fs-md); line-height: 1; color: var(--c-ink-faint); }
.fp-drop-hint-tx { min-width: 0; overflow-wrap: anywhere; }
/* ---- M14：粘贴询盘文本（文本框 + 提交按钮在卡内，与拖拽 / 文件选择并列）----
   宽度 100% + border-box ⇒ 390px 不横向溢出；textarea 只允许**纵向**拉伸
   （resize: vertical —— 横向拉宽会挣出卡片），换行一律 overflow-wrap: anywhere。 */
.fp-paste { margin: 0 0 10px; }
.fp-paste-head { font-size: var(--fs-sm); font-weight: 600; color: var(--c-text); padding-bottom: 6px; }
.fp-paste-in {
  display: block; width: 100%; box-sizing: border-box;
  min-height: 64px; resize: vertical;
  padding: 8px 10px; border: 1px solid var(--c-line-strong); border-radius: var(--radius-sm);
  background: var(--c-card); color: var(--c-text);
  font-family: inherit; font-size: var(--fs-sm); line-height: 1.55;
  overflow-wrap: anywhere;
}
.fp-paste-in:focus-visible { outline: none; box-shadow: var(--shadow-focus); border-color: var(--c-primary); }
.fp-paste-in::placeholder { color: var(--c-ink-faint); }
.fp-paste-btn { margin-top: 8px; }
.fp-paste-btn[disabled] { opacity: 0.45; cursor: not-allowed; }
.fp-paste-hint { font-size: var(--fs-xs); color: var(--c-muted); line-height: 1.6; padding-top: 6px; }
/* 「或」分隔：粘贴文本路径与拖拽/文件路径之间的分界（纯排版，不承载交互） */
.fp-or-split {
  display: flex; align-items: center; gap: 8px;
  margin: 0 0 10px; color: var(--c-ink-faint); font-size: var(--fs-xs);
}
.fp-or-split::before, .fp-or-split::after {
  content: ''; flex: 1 1 auto; height: 1px; background: var(--c-line);
}
.fp-upload.is-dragover { border-color: var(--c-primary); box-shadow: var(--shadow-focus); }
.fp-upload.is-dragover .fp-drop-hint {
  border-style: solid; border-color: var(--c-primary);
  background: var(--c-tint-primary); color: var(--c-text);
}
.fp-up-btn { margin-top: 2px; }
.fp-up-status { font-size: var(--fs-sm); color: var(--c-muted); padding: 8px 0 0; line-height: 1.5; word-break: break-word; }
.fp-up-status.is-error { color: var(--c-up); }
.fp-up-status.is-ok { color: var(--c-down); }
/* 待确认区（显隐由 JS 内联 style 控制，同预览容器的纪律：这里不写 display:none） */
.fp-staged-inner {
  margin-top: 10px; padding: 10px;
  border: 1px solid var(--c-primary); border-radius: var(--radius-sm);
  background: var(--c-tint-primary);
}
.fp-staged-head { font-size: var(--fs-sm); font-weight: 600; color: var(--c-text); padding-bottom: 6px; }
.fp-staged-list { display: flex; flex-direction: column; gap: 4px; }
.fp-staged-item { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; font-size: var(--fs-xs); color: var(--c-ink); }
.fp-staged-name { font-weight: 600; word-break: break-all; }
.fp-staged-meta { color: var(--c-muted); }
.fp-staged-del {
  margin-left: auto; flex: 0 0 auto;
  width: 22px; height: 22px; padding: 0;
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--c-line-strong); border-radius: var(--radius-pill);
  background: var(--c-card); color: var(--c-up);
  font-size: 12px; line-height: 1; cursor: pointer;
}
.fp-staged-del:hover { background: var(--c-tint-up); border-color: var(--c-up); }
.fp-staged-del:focus-visible { box-shadow: var(--shadow-focus); }
.fp-staged-hint { font-size: var(--fs-xs); color: var(--c-muted); line-height: 1.6; padding-top: 8px; }
.fp-staged-btns { margin-top: 10px; }
.fp-staged-confirm[disabled] { opacity: 0.45; cursor: not-allowed; }
/* 预览容器的显隐由 JS 内联 style 控制（这里**不能**写 display:none —— 否则清空内联样式时
   又会回落到样式表的 none，预览永远不可见；浏览器验收抓到过这个坑） */
.fp-prev-inner {
  margin-top: 10px; padding: 10px;
  border: 1px solid var(--c-line-strong); border-radius: var(--radius-sm);
  background: var(--c-card-2);
}
.fp-prev-head { font-size: var(--fs-sm); font-weight: 600; color: var(--c-text); padding-bottom: 6px; }
.fp-prev-files { display: flex; flex-direction: column; gap: 4px; }
.fp-prev-file {
  display: flex; flex-wrap: wrap; align-items: center; gap: 6px;
  font-size: var(--fs-xs); color: var(--c-ink);
}
.fp-prev-mark { font-weight: 700; }
.fp-prev-file.is-ok .fp-prev-mark { color: var(--c-down); }
.fp-prev-file.is-bad .fp-prev-mark { color: var(--c-up); }
.fp-prev-name { font-weight: 600; word-break: break-all; }
.fp-prev-kind { color: var(--c-muted); }
.fp-prev-reason { flex: 1 1 100%; color: var(--c-up); line-height: 1.5; padding-left: 16px; }
.fp-prev-table {
  width: 100%; table-layout: fixed;
  margin-top: 8px; border-collapse: collapse;
  font-size: var(--fs-xs); font-variant-numeric: tabular-nums;
}
.fp-prev-table th, .fp-prev-table td {
  padding: 4px 2px; text-align: center;
  border-bottom: 1px solid var(--c-line);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.fp-prev-table th { color: var(--c-muted); font-weight: 500; background: var(--c-card); }
.fp-prev-table td { color: var(--c-text); }
.fp-prev-more, .fp-prev-empty, .fp-prev-note { font-size: var(--fs-xs); color: var(--c-muted); line-height: 1.6; padding-top: 6px; }
.fp-prev-empty { color: var(--c-up); }
/* M14：文本识别的映射表是「字段 → 值 → 来源」文字列（尺寸串比数字长），允许折行、不再省略号截断；
   .fp-prev-note 也补 overflow-wrap —— 提示里会出现长数字串/尺寸串，390px 下不能让它们撑破卡片。 */
.fp-prev-map th, .fp-prev-map td { text-align: left; white-space: normal; overflow: visible; text-overflow: clip; }
.fp-prev-map td { overflow-wrap: anywhere; }
.fp-prev-note { overflow-wrap: anywhere; }
.fp-prev-totals { font-size: var(--fs-sm); font-weight: 600; color: var(--c-text); padding-top: 8px; }
.fp-prev-btns { margin-top: 10px; }
.fp-prev-fill[disabled] { opacity: 0.45; cursor: not-allowed; }
@media (max-width: 420px) {
  .fp-dim-head, .fp-dim-row { grid-template-columns: 48px 1fr 1fr 1fr 30px; gap: 4px; }
  .fp-dim-in { font-size: var(--fs-sm); padding: 0 4px; }
  .fp-dim-del { width: 28px; height: 28px; }
  .fp-prev-table th, .fp-prev-table td { padding: 4px 1px; }
}

/* ---- 工单 M2：货物总数据条 + 比例阶梯报价卡（角色化：航线 route / 销售 sales）---- */
/* 总数据条：4 项横排，醒目大数字（卡片渐变底沿用 .fp-result） */
.fp-ladder-totals-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 6px;
}
.fp-ladder-total { min-width: 0; text-align: center; }
.fp-ladder-total-k { display: block; font-size: var(--fs-xs); color: var(--c-muted); }
.fp-ladder-total-v {
  display: block; margin-top: 2px;
  font-size: var(--fs-lg); font-weight: 700; color: var(--c-text);
  font-variant-numeric: tabular-nums;
}
/* 说明文字（M3 标注 1 → 2026-09-27 M13 隐藏）：
   .fp-ladder-sub 节点已从 fenpao.js 渲染路径中彻底下线（不再创建、不再写 textContent），
   用户标注「不用显示」。CSS 规则同步清空——避免遗留空壳/悬挂选择器/意外命中。
   历史（M3 标注 1）：挂在卡片末尾（一键复制按钮之后），用一条发丝分隔线与上方功能区隔开；
   sync() 就地更新文案。M13 起该节点与文案都不再渲染，公式/口径保留在 web/README.md。 */

/* 换算列表头（M6 表头化）：表头单元格 = 可编辑分泡比输入 + % + 右上删除 ×；行尾「＋」加列。
   M5 标注 3：表头两行——上行「分泡比 %」，下行「期望利润」子标签。
   M8 标注 1+3：下行子标签扩成**三个**标签（.fp-ladder-hconv-legend 里三个 .fp-ladder-hconv-sub：
   分泡成本 / 单kg利润 / 期望利润）。
   M9 标注「左右排布」：三标签同列头下方**横向三格**（等宽 + 居中），与单元格三值左右同序对齐。
   M7 标注 2「上方的分泡比位置居中」：% 输入在该列内水平居中——
   内边距改左右对称（原来的 14px 右侧留白是为旧右对齐输入让位），输入文字改居中。 */
.fp-ladder-hconv {
  position: relative;
  display: inline-flex; flex-direction: column; align-items: center; justify-content: center;
  min-width: 0; padding: 1px 6px;
  border: 1px solid var(--c-line-strong); border-radius: var(--radius-xs);
  background: var(--c-card-2);
  container-type: inline-size;        /* M9：窄列回落判据（内容盒 = 单元格内容盒，见 .fp-ladder-convcell） */
}
.fp-ladder-hconv:focus-within { border-color: var(--c-primary); }
.fp-ladder-hconv-row { display: flex; align-items: center; justify-content: center; width: 100%; min-width: 0; }
/* M9：三标签横向三格（分泡成本 / 单kg利润 / 期望利润）——与单元格三值同宽同列；窄列里省略号，不撑宽 */
.fp-ladder-hconv-legend {
  display: flex; flex-wrap: wrap; align-items: baseline; justify-content: center;
  column-gap: 2px;
  width: 100%; min-width: 0;
}
.fp-ladder-hconv-sub {
  flex: 1 1 0; min-width: 0; max-width: 100%;
  font-size: 10px; line-height: 1.35; color: var(--c-muted);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: center;
}
/* M9 窄列兜底：与 .fp-conv-line 同步回落三行堆叠（阈值同「内容盒 ≤ 179px」，理由见下方 .fp-ladder-convcell 一节） */
@container (max-width: 179px) {
  .fp-ladder-hconv-sub { flex-basis: 100%; }
}
.fp-ladder-hconv-in {
  width: 100%; min-width: 0; height: 24px; padding: 0 1px;
  border: none; background: transparent;
  font-size: var(--fs-xs); text-align: center; color: var(--c-text);
  font-variant-numeric: tabular-nums;
}
.fp-ladder-hconv-in:focus { outline: none; }
.fp-ladder-hconv-pct { font-size: var(--fs-xs); color: var(--c-muted); }
.fp-ladder-hconv-del {
  position: absolute; top: -6px; right: -5px;
  width: 16px; height: 16px; padding: 0;
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--c-line-strong); border-radius: var(--radius-pill);
  background: var(--c-card); color: var(--c-up);
  font-size: 10px; line-height: 1; cursor: pointer;
}
.fp-ladder-hconv-del:hover { background: var(--c-tint-up); border-color: var(--c-up); }
.fp-ladder-hconv-del:focus-visible { box-shadow: var(--shadow-focus); }
.fp-ladder-hconv-del[disabled],
.fp-ladder-hconv-del[aria-disabled="true"] { opacity: 0.35; cursor: not-allowed; }
.fp-ladder-coladd {
  width: 30px; height: 30px; padding: 0; justify-self: center;
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px dashed var(--c-line-strong); border-radius: var(--radius-pill);
  background: transparent; color: var(--c-text);
  font-size: var(--fs-md); cursor: pointer;
}
.fp-ladder-coladd:hover { background: var(--c-tint-primary); border-color: var(--c-primary); }
.fp-ladder-coladd:focus-visible { box-shadow: var(--shadow-focus); }

/* 档位表：比例 | 成本(只读，航线) | 卖价 | 换算单元格×N | 删。
   列数随换算列动态变化 → gridTemplateColumns 由 JS 内联（applyLadderTemplate），这里不写死。 */
.fp-ladder-head,
.fp-ladder-row {
  display: grid;
  gap: 6px;
  align-items: center;
  min-width: 0;
}
.fp-ladder-head { padding: 0 0 6px; }
.fp-ladder-h { font-size: var(--fs-xs); color: var(--c-muted); text-align: center; }
.fp-ladder-row { padding: 3px 0; border-bottom: 1px dashed var(--c-line); }
.fp-ladder-row:last-child { border-bottom: none; }
.fp-ladder-in {
  width: 100%; min-width: 0; box-sizing: border-box;
  height: 36px; font-size: var(--fs-md); text-align: center;
  background: var(--c-line-2);
  border: 1px solid var(--c-line);
  border-radius: var(--radius-xs);
  padding: 0 6px;
  font-variant-numeric: tabular-nums;
}
.fp-ladder-in:hover { border-color: var(--c-line-strong); }
.fp-ladder-in:focus { background: var(--c-card); border-color: var(--c-primary); }
.fp-ladder-in::placeholder { color: var(--c-ink-faint); font-size: var(--fs-xs); }
/* 高亮档（货物比例上下相邻两档）：加粗 + 品牌色底 */
.fp-ladder-row.is-hl .fp-ladder-in {
  font-weight: 700;
  background: var(--c-tint-primary);
  border-color: var(--c-primary);
  color: var(--c-text);
}
.fp-ladder-row.is-hl .fp-ladder-in:focus { background: var(--c-card); }
.fp-ladder-del {
  width: 32px; height: 32px; padding: 0;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: var(--radius-pill);
  border: 1px solid var(--c-line-strong);
  background: var(--c-card);
  color: var(--c-up);                       /* 红色垃圾桶（与尺寸行同款） */
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease, opacity 0.15s ease;
}
.fp-ladder-del:hover { background: var(--c-tint-up); border-color: var(--c-up); }
.fp-ladder-del:focus-visible { box-shadow: var(--shadow-focus); }
.fp-ladder-del[disabled],
.fp-ladder-del[aria-disabled="true"] { opacity: 0.35; cursor: not-allowed; }
.fp-ladder-del[disabled]:hover { background: var(--c-card); border-color: var(--c-line-strong); }

/* 成本只读文本列 + 分泡比列单元格（M6：不再是行内小字行，而是栅格内单元格）。
   M7 标注 2：换算价行 fp-conv-price 已删（规则一并移除），分泡比列 % 输入居中。
   M8 标注 1+3：单元格是三个常驻数值（分泡成本 / 单kg利润 / 期望利润）。
   M9 标注「左右排布」：单元格三值由自上而下堆叠改为**同一行、左→右并排**（DOM 顺序即
   分泡成本 → 单kg利润 → 期望利润，见 fenpao.js mkConvCell）；等宽三格（flex: 1 1 0）+ 居中 +
   2px 列距。padding 7px = 列头 6px 内边距 + 1px 边框 → 单元格内容盒与列头内容盒等宽，
   三格中心正落在列头三标签（.fp-ladder-hconv-legend 的三格）下方（堆叠态用等量负外边距
   把这 7px 抵消掉，数值盒与 M8 一样占满整列，见下方 @container 一节）。
   数值不带行内前缀文字，含义靠列头标签 + 每格的 aria-label。
   高亮：附近档（.is-hl）把分泡成本 / 单kg利润 染品牌色 + 加粗；
   期望利润保持 M7 的静音小字（.fp-conv-profit 自带颜色，不被 .is-hl 的继承色覆盖）。 */
.fp-ladder-costtext {
  display: block; min-width: 0;
  font-size: var(--fs-sm); text-align: center;
  font-variant-numeric: tabular-nums;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.fp-ladder-costtext { color: var(--c-muted); }
.fp-ladder-convcell {
  display: flex; flex-wrap: wrap; align-items: baseline; justify-content: center;
  column-gap: 2px;
  min-width: 0; padding: 0 7px;
  font-size: var(--fs-sm); text-align: center;
  font-variant-numeric: tabular-nums;
  overflow: hidden;
  container-type: inline-size;        /* M9：窄列回落判据（按内容盒宽度查询） */
}
.fp-ladder-convcell { color: var(--c-text); }
.fp-conv-line {
  flex: 1 1 0; min-width: 0;
  line-height: 1.28; font-size: var(--fs-sm);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: center;
}
.fp-conv-cost { color: var(--c-muted); }
.fp-conv-perkg { color: var(--c-text); font-weight: 600; }
.fp-conv-profit { font-size: var(--fs-xs); color: var(--c-muted); }
/* M9 窄列兜底：内容盒 ≤ 179px（= 3 × 13px 制表位 8 字符「10500.00」58.6px + 两处 2px 列距 ≈ 180px，
   所以阈值写 179：179.22px 仍是横排）→ 三值回落三行堆叠（父级 flex-wrap + 子格 flex-basis: 100%），
   绝不横向溢出。阈值与 .fp-ladder-hconv-sub 的同名查询一致 —— 两处内容盒等宽，同一列宽下同步切换。
   M10（评审 r2 观察 3）：堆叠态另加 `margin: 0 -7px` 抵消单元格那 7px 内边距 —— 该内边距只为**横排态**
   与列头内容盒对齐（列头 6px 内边距 + 1px 边框）而设，堆叠态留着会把数值盒压窄 14px（M8 无内边距），
   使 11 字符的期望利润（如 -2700000.00，12px ≈ 67px）在 421–500px 被裁 ~5px。@container 规则无法给
   查询容器自身设样式，故用对称负外边距把子格的**文字盒**还原成整列宽（横排态不吃这条，几何零变化）。 */
@container (max-width: 179px) {
  .fp-conv-line { flex-basis: 100%; margin: 0 -7px; }
}
.fp-ladder-row.is-hl .fp-ladder-costtext,
.fp-ladder-row.is-hl .fp-ladder-convcell { color: var(--c-primary); font-weight: 600; }
.fp-ladder-row.is-hl .fp-conv-cost,
.fp-ladder-row.is-hl .fp-conv-perkg { color: var(--c-primary); font-weight: 700; }

/* M11 标注 1：表首「当前货物」只读行（.fp-ladder-row.fp-ladder-cur）——
   它沿用 .fp-ladder-row 的栅格模板（列宽由 JS 内联，必须与表头/档位行逐列对齐），所以**不能**加
   左右内边距或左边框（会把整行各列挤窄 7px、与表头错位）；改用底色 + 实线下边框 + 加粗数值区分档位行。
   比例格是「当前货物」小标签 + 比例值两行；成本/卖价复用 .fp-ladder-costtext 的静音居中只读样式
   （卖价额外加 .fp-ladder-cursell 提亮加粗：它是借来的关键数）；操作列是空占位（本行没有删除键）。
   门禁：销售角色成本格整格隐藏（同档位行），分泡比列三值「—」（sync 里与档位行同一处 isRoute 判断）。 */
.fp-ladder-cur {
  background: var(--c-tint-primary);
  border-bottom: 1px solid var(--c-line-strong);
  border-radius: var(--radius-xs);
}
.fp-ladder-cur-ratio { display: block; min-width: 0; text-align: center; }
.fp-ladder-cur-tag {
  display: block; font-size: 10px; line-height: 1.2; font-weight: 700; color: var(--c-primary);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.fp-ladder-cur-val {
  display: block; font-size: var(--fs-sm); font-weight: 700; color: var(--c-text);
  font-variant-numeric: tabular-nums; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.fp-ladder-cursell { color: var(--c-text); font-weight: 700; }
.fp-ladder-nop { display: block; min-width: 0; }

/* 新增档位 + 一键复制 */
.fp-ladder-add { display: flex; gap: 6px; padding-top: 8px; }
.fp-ladder-add-in { flex: 1 1 auto; }
.fp-ladder-add-btn { flex: 0 0 auto; white-space: nowrap; }
.fp-ladder-copy { margin-top: 10px; }
/* 360px 移动宽不横向溢出：总数据条转 2×2，输入框收窄（栅格模板由 JS 按 innerWidth 切换）
   M9：手机宽三值仍回落三行堆叠（与 M8 完全一致：全宽、无内边距、数字不被省略号截断）——
   这一段是**不依赖容器查询**的无条件兜底，但只管到 ≤420px；421px 以上的无 CQ 内核由文件末尾的
   `@supports not (container-type: inline-size)` 分支接管（两条合起来才覆盖全部宽度）。 */
@media (max-width: 420px) {
  .fp-ladder-totals-grid { grid-template-columns: repeat(2, 1fr); }
  .fp-mini-grid { gap: 5px; }
  .fp-mini-lab { font-size: 10px; }
  .fp-mini-in { height: 34px; font-size: var(--fs-sm); padding: 0 4px; }
  .fp-ladder-head, .fp-ladder-row { gap: 4px; }
  .fp-ladder-in { font-size: var(--fs-sm); padding: 0 4px; }
  .fp-ladder-del { width: 28px; height: 28px; }
  .fp-ladder-costtext, .fp-ladder-convcell { font-size: var(--fs-xs); }
  .fp-ladder-convcell { padding: 0; }
  .fp-conv-line { font-size: var(--fs-xs); flex-basis: 100%; margin: 0; }
  .fp-conv-profit { font-size: 10px; }
  .fp-ladder-hconv-sub { font-size: 9px; flex-basis: 100%; }
  .fp-ladder-hconv-in { height: 22px; }
  .fp-ladder-cur-tag { font-size: 9px; }
  .fp-ladder-cur-val { font-size: var(--fs-xs); }
}

/* M9 兜底第三层（评审 r1 P2-1）：**不支持容器查询**的内核（Safari/iOS < 16、Chromium < 105 系、
   部分老 XWeb）里，上面的 `@container (max-width: 179px)` 不生效，而 `@media (max-width: 420px)`
   又只管手机宽 —— 421–779px 这段空档里三值会保持横排、每格只剩十几到几十像素，数字被
   text-overflow 省略号藏掉（相对 M8 是行为回退）。这里用 @supports 精确点名这类内核：
   `not (container-type: inline-size)` 只在不解析该声明的内核里为真 —— 现代内核（支持 CQ）
   不吃这条，横排与列头对齐分毫不动；无 CQ 内核一律回落 M8 的堆叠形态（含 M10 的整列宽数值盒，
   所以不会出现「横排挤压截断」那一类；超长极值在极窄列下的省略号是 M8 就有的既有行为）。
   M10：这类内核恒为堆叠态，那 7px 内边距（只为横排态与列头对齐而设）直接归零即可 ——
   @supports 能给单元格本身上样式，不像 @container 那样只能绕道给子格设负外边距。 */
@supports not (container-type: inline-size) {
  .fp-ladder-convcell { padding: 0; }
  .fp-conv-line,
  .fp-ladder-hconv-sub { flex-basis: 100%; }
}

.chip-row { display: flex; flex-wrap: wrap; gap: 8px; padding: 8px 0; }
.chip {
  padding: 0 14px; height: 32px;
  border-radius: var(--radius-pill);
  border: 1px solid var(--c-border); background: var(--c-card);
  color: var(--c-text); font-size: var(--fs-sm);
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
  display: inline-flex; align-items: center;
}
.chip:hover { background: var(--c-tint-primary); border-color: var(--c-primary); }
.chip-active { background: var(--c-primary); color: var(--c-primary-ink); border-color: var(--c-primary); }
.chip-active:hover { background: var(--c-primary-hover); }

/* ============================================================ */
/* tools/airport                                                   */
/* ============================================================ */
.airport-host { padding-bottom: var(--space-3); }
@media (min-width: 1024px) {
  .airport-host { padding: 0; }
  .airport-host .airport-list { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--space-3); padding: 0; }
  .airport-host .airport-item { margin-bottom: 0; }
  .airport-host .airport-section-head { padding-left: 0; }
}
.search-bar {
  position: sticky; top: var(--header-h); z-index: 5;
  background: var(--c-bg);
  padding: var(--space-3) var(--space-4);
  display: flex; align-items: center; gap: 8px;
  border-bottom: 1px solid transparent;
  transition: border-color 0.15s ease;
}
.search-bar:focus-within { border-color: var(--c-line); }
.search-input {
  flex: 1; height: 40px;
  background: var(--c-card); border: 1px solid var(--c-border);
  border-radius: var(--radius-pill);
  padding: 0 16px;
  font-size: 16px;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.search-input:focus { border-color: var(--c-primary); box-shadow: 0 0 0 3px var(--c-tint-primary-strong); }
.search-clear {
  background: none; border: none;
  color: var(--c-muted); cursor: pointer;
  padding: 0 8px; height: 32px; font-size: var(--fs-sm);
  border-radius: var(--radius-pill);
  transition: background 0.15s ease;
}
.search-clear:hover { background: var(--c-line-2); }
.search-tip {
  padding: 6px var(--space-4);
  font-size: var(--fs-xs); color: var(--c-muted);
}
.airport-section-head {
  padding: var(--space-3) var(--space-4) 4px;
  font-size: var(--fs-sm); color: var(--c-muted); font-weight: 600;
  letter-spacing: 0.3px;
}
.airport-list { padding: 0 var(--space-4) var(--space-5); }
.airport-item {
  background: var(--c-card); border-radius: var(--radius-card);
  padding: 12px var(--space-3);
  margin-bottom: 8px;
  display: flex; align-items: center; gap: var(--space-3);
  box-shadow: var(--shadow-card);
  transition: box-shadow 0.15s ease, transform 0.15s ease;
}
.airport-item:hover { box-shadow: var(--shadow-card-hover); }
.airport-code { width: 56px; color: var(--c-primary); font-weight: 700; font-variant-numeric: tabular-nums; }
.airport-info { flex: 1; min-width: 0; }
.airport-name { flex: 1; font-size: var(--fs-md); line-height: 1.4; word-break: break-word; }
.airport-city { color: var(--c-muted); font-size: var(--fs-sm); margin-top: 2px; }

/* ============================================================ */
/* tools/ics-name                                                  */
/* ============================================================ */
.ics-host { padding-bottom: var(--space-3); }
@media (min-width: 1024px) {
  .ics-host { padding: 0; }
  .ics-host .card { max-width: 720px; margin-left: auto; margin-right: auto; }
}
.ics-cloud-warning {
  margin: 0 var(--space-4) var(--space-3);
  padding: 10px var(--space-3);
  background: var(--c-card-2); color: var(--c-tight);
  border-radius: var(--radius-card);
  font-size: var(--fs-sm);
  border-left: 3px solid var(--c-accent);
  line-height: 1.6;
}
.ics-result-row {
  display: flex; align-items: center;
  padding: 10px 0;
  border-bottom: 1px solid var(--c-line);
  gap: 8px;
}
.ics-result-row:last-child { border-bottom: none; }
.ics-result-line {
  flex: 1; font-size: var(--fs-sm);
  font-family: var(--font-mono);
  word-break: break-word;
}
.ics-warning {
  margin-left: 4px;
  font-size: var(--fs-xs); font-weight: 600;
  background: var(--c-accent); color: var(--c-primary-ink);
  padding: 2px 8px; border-radius: 4px;
  cursor: pointer;
  border: none;
  flex-shrink: 0;
}
.ics-copy-btn {
  background: var(--c-primary); color: var(--c-primary-ink);
  border: none; border-radius: 4px;
  padding: 0 10px; height: 28px;
  font-size: var(--fs-xs); cursor: pointer; font-weight: 600;
  flex-shrink: 0;
  transition: background 0.15s ease;
}
.ics-copy-btn:hover { background: var(--c-primary-hover); }
.ics-copy-btn:active { transform: scale(0.97); }

/* ============================================================ */
/* tools/flight                                                    */
/* ============================================================ */
.flight-host { padding: 0 var(--space-4); }
@media (min-width: 1024px) {
  .flight-host { padding: 0; }
  .flight-host .card { max-width: 760px; margin-left: auto; margin-right: auto; }
  .flight-host .flight-card { max-width: 760px; margin-left: auto; margin-right: auto; }
}
.flight-card {
  background: var(--c-card); border-radius: var(--radius-card);
  padding: var(--space-4); margin-bottom: var(--space-3);
  box-shadow: var(--shadow-card);
  transition: box-shadow 0.15s ease, transform 0.15s ease;
}
.flight-card:hover { box-shadow: var(--shadow-card-hover); }
.flight-head { display: flex; align-items: center; gap: 10px; }
.flight-no { font-size: var(--fs-lg); font-weight: 700; color: var(--c-primary); font-variant-numeric: tabular-nums; }
.flight-airline { color: var(--c-muted); font-size: var(--fs-sm); }
.flight-line { margin-top: 6px; font-size: var(--fs-sm); color: var(--c-ink); line-height: 1.7; word-break: break-word; }
.flight-times { margin-top: 4px; font-size: var(--fs-sm); color: var(--c-text); font-variant-numeric: tabular-nums; }

/* ============================================================ */
/* tools/tracking & iata & track-live                              */
/* ============================================================ */
.tracking-host,
.live-host,
.iata-host { padding: 0 var(--space-4); }
@media (min-width: 1024px) {
  .tracking-host,
  .live-host,
  .iata-host { padding: 0; }
  .tracking-host .card,
  .tracking-host .tip-line,
  .tracking-host .hero-tip,
  .live-host .live-card,
  .live-host .hero-tip,
  .live-host .tip-line,
  .iata-host .card,
  .iata-host .iata-card { max-width: 760px; margin-left: auto; margin-right: auto; }
  .live-host .live-card { margin-left: auto; margin-right: auto; margin-bottom: var(--space-3); }
  .live-host .live-card-head .live-card-title,
  .live-host .live-card-tag { font-size: var(--fs-md); }
}
.track-card, .live-card, .iata-card {
  background: var(--c-card); border-radius: var(--radius-card);
  padding: var(--space-4); margin-bottom: var(--space-3);
  box-shadow: var(--shadow-card);
  transition: box-shadow 0.15s ease;
}
.track-card:hover, .live-card:hover, .iata-card:hover { box-shadow: var(--shadow-card-hover); }
.track-card-head, .live-card-head, .iata-card-head {
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--space-2);
}
.track-card-title, .live-card-title, .iata-card-title {
  font-size: var(--fs-md); font-weight: 600;
  line-height: 1.5;
  word-break: break-word;
}
.track-card-tag, .live-card-tag {
  font-size: var(--fs-xs); color: var(--c-muted);
  background: var(--c-line); border-radius: 4px; padding: 2px 8px;
  white-space: nowrap;
}
.live-card-tag { background: var(--c-tint-primary-strong); color: var(--c-primary); font-weight: 600; }
.track-card-desc, .live-card-desc, .iata-card-desc {
  font-size: var(--fs-sm); color: var(--c-ink);
  line-height: 1.7; margin: 8px 0;
}
.live-card-meta, .track-card-meta {
  font-size: var(--fs-xs); color: var(--c-muted);
  margin-top: 4px;
  word-break: break-all;
  overflow-wrap: anywhere;
  max-width: 100%;
  font-family: var(--font-mono);
}
.card-link-btn {
  margin-top: var(--space-3);
  background: var(--c-card); color: var(--c-primary);
  border: 1px solid var(--c-primary);
  border-radius: var(--radius-pill);
  padding: 0 14px; height: 32px;
  font-size: var(--fs-sm); cursor: pointer; font-weight: 600;
  transition: background 0.15s ease, transform 0.12s ease;
}
.card-link-btn:hover { background: var(--c-tint-primary); }
.card-link-btn:active { transform: scale(0.97); }

.hero-tip {
  background: var(--c-tint-primary);
  color: var(--c-ink);
  border-radius: var(--radius-card);
  padding: var(--space-3) var(--space-4);
  margin: 0 var(--space-4) var(--space-3);
  font-size: var(--fs-sm); line-height: 1.7;
  border-left: 3px solid var(--c-primary);
}
@media (min-width: 1024px) {
  .hero-tip { margin: 0 0 var(--space-3); }
}

/* ============================================================ */
/* 货物轨迹查询：多单号输入 + 结果卡片 + 航司 logo 条                 */
/* ============================================================ */
.tk-input {
  width: 100%;
  min-height: 84px;
  padding: var(--space-3);
  border-radius: var(--radius-sm);
  border: 1px solid var(--c-border);
  background: var(--c-input, var(--c-card));
  color: var(--c-text);
  font-family: inherit;
  font-size: var(--fs-md);
  line-height: 1.6;
  resize: vertical;
}
.tk-input:focus { outline: 2px solid var(--c-primary); outline-offset: -1px; }
.tk-hint { margin: var(--space-2) 0 var(--space-3); font-size: var(--fs-sm); color: var(--c-text-2, #86909C); }

/* ---- 加载中 ---- */
.tk-loading { text-align: center; padding: var(--space-5) var(--space-4); }
.tk-spinner {
  width: 28px; height: 28px; margin: 0 auto var(--space-3);
  border: 2px solid var(--c-border); border-top-color: var(--c-primary);
  border-radius: 50%; animation: tk-spin 0.8s linear infinite;
}
@keyframes tk-spin { to { transform: rotate(360deg); } }
.tk-loading-title { font-weight: 600; color: var(--c-text); }
.tk-loading-sub { margin-top: var(--space-1); font-size: var(--fs-sm); color: var(--c-text-2, #86909C); }
.tk-elapsed { margin-top: var(--space-2); font-size: var(--fs-sm); color: var(--c-text-2, #86909C); font-variant-numeric: tabular-nums; }

.tk-notice { text-align: center; }
.tk-notice-title { font-weight: 600; color: var(--c-text); }
.tk-notice-sub { margin-top: var(--space-1); font-size: var(--fs-sm); color: var(--c-text-2, #86909C); }
.tk-notice-error .tk-notice-title { color: #d54941; }

/* ---- 没识别成单号的段 ---- */
.tk-rejected { border-left: 3px solid #e6a23c; }
.tk-rejected-title { font-size: var(--fs-sm); font-weight: 600; color: #e6a23c; margin-bottom: var(--space-2); }
.tk-rejected-item { font-size: var(--fs-sm); color: var(--c-text-2, #86909C); line-height: 1.7; }

/* ---- 结果卡片 ---- */
.tk-card {
  background: var(--c-card);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-card);
  margin-bottom: var(--space-3);
  padding: var(--space-4);
  border-left: 3px solid var(--c-border);
}
.tk-tone-done { border-left-color: #2fb87a; }
.tk-tone-partial { border-left-color: #e6a23c; }
.tk-tone-transit { border-left-color: #3b82f6; }
.tk-tone-muted { border-left-color: var(--c-border); }

.tk-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-3); }
.tk-card-left { min-width: 0; }
.tk-awb {
  font-size: var(--fs-lg); font-weight: 700; letter-spacing: 0.02em;
  color: var(--c-text); font-variant-numeric: tabular-nums;
}
.tk-meta { margin-top: 2px; font-size: var(--fs-sm); color: var(--c-text-2, #86909C); }

.tk-badge {
  flex: none; text-align: center; padding: 4px 10px; border-radius: 999px;
  font-size: var(--fs-sm); font-weight: 600; line-height: 1.35;
  background: var(--c-bg-sub, rgba(0,0,0,0.06)); color: var(--c-text-2, #86909C);
}
.tk-badge-done { background: rgba(47,184,122,0.14); color: #2fb87a; }
.tk-badge-partial { background: rgba(230,162,60,0.16); color: #e6a23c; }
.tk-badge-transit { background: rgba(59,130,246,0.14); color: #3b82f6; }
.tk-badge-sub { display: block; font-size: 11px; font-weight: 500; opacity: 0.85; font-variant-numeric: tabular-nums; }

.tk-card-err {
  margin-top: var(--space-2); padding: var(--space-2);
  background: rgba(213,73,65,0.08); border-radius: var(--radius-sm);
  font-size: var(--fs-sm); color: #d54941; line-height: 1.6; word-break: break-word;
}

.tk-card-toggle {
  margin-top: var(--space-2); padding-top: var(--space-2);
  border-top: 1px dashed var(--c-border);
  font-size: var(--fs-sm); color: var(--c-primary);
}

/* ---- 轨迹时间线 ---- */
.tk-timeline { max-height: 320px; overflow-y: auto; margin-bottom: var(--space-3); }
.tk-tl-row {
  display: flex; align-items: baseline; gap: var(--space-2);
  padding: 6px 0; border-bottom: 1px solid var(--c-border);
}
.tk-tl-row:last-child { border-bottom: none; }
.tk-tl-time {
  flex: none; width: 96px; font-size: var(--fs-sm);
  color: var(--c-text-2, #86909C); font-variant-numeric: tabular-nums;
}
.tk-tl-mid { flex: 1; min-width: 0; font-size: var(--fs-sm); color: var(--c-text); }
.tk-tl-loc {
  display: inline-block; margin-right: 6px; padding: 0 6px;
  border-radius: 4px; background: rgba(0,0,0,0.08);
  font-weight: 600; font-size: var(--fs-xs, 11px); letter-spacing: 0.04em;
}
.tk-tl-desc { word-break: break-word; }
.tk-tl-pcs { flex: none; font-size: var(--fs-sm); color: var(--c-text-2, #86909C); font-variant-numeric: tabular-nums; }
.tk-card-empty { padding: var(--space-3) 0; font-size: var(--fs-sm); color: var(--c-text-2, #86909C); }

.tk-detail-link {
  display: inline-block; padding-top: var(--space-2);
  border-top: 1px dashed var(--c-border); width: 100%;
  color: var(--c-primary); font-size: var(--fs-sm); text-decoration: none;
}
.tk-detail-link:hover { text-decoration: underline; }

/* ---- 底部航司 logo 条 ---- */
.tk-carriers { margin-top: var(--space-5); padding-top: var(--space-4); border-top: 1px solid var(--c-border); }
.tk-carriers-title { font-size: var(--fs-sm); color: var(--c-text-2, #86909C); margin-bottom: var(--space-3); }
.tk-carrier-row { display: flex; flex-wrap: wrap; gap: var(--space-3); }
.tk-carriers-empty { font-size: var(--fs-sm); color: var(--c-text-2, #86909C); }
.tk-tile {
  width: 100px; text-align: center;
  background: var(--c-card); border-radius: var(--radius-card);
  box-shadow: var(--shadow-card); padding: var(--space-3) var(--space-2);
}
/* 7 家 logo 的宽高比从 1.44（Emirates 方形）到 8.42（大韩长条）差了近 6 倍。
   若直接给 img 固定高度：宽幅的会被按宽度压成十几像素高（看着太小），
   而高的又会把格子撑高，导致下方「航司名 + 二字码」不在一条基线上。
   所以图框固定高度、logo 在框内等比缩放（object-fit:contain），
   格子高度统一、文字对齐，logo 又能撑满可用宽度。 */
.tk-logo-box {
  height: 54px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 6px;
  /* 所有 logo 统一走浅色衬底，视觉一致。新加坡航空的 logo 本身是品牌深蓝底，
     衬底上呈现为一块深蓝色标 —— 与敦豪的黄底色标同一类，不另开特例。 */
  background: #fff;
  border-radius: 6px;
  padding: 5px 8px;
  box-sizing: border-box;
}
.tk-tile-logo {
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
  display: block;
}
.tk-logo-box .tk-tile-fallback { margin-bottom: 0; height: 100%; }
.tk-tile-fallback {
  height: 40px; margin-bottom: 6px; display: flex; align-items: center; justify-content: center;
  border-radius: var(--radius-sm); background: rgba(0,0,0,0.08);
  font-weight: 700; letter-spacing: 0.04em; color: var(--c-text-2, #86909C);
}
.tk-tile-name {
  font-size: 11px; color: var(--c-text-2, #86909C); line-height: 1.3;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.tk-tile-code { margin-top: 2px; font-size: var(--fs-sm); font-weight: 700; color: var(--c-text); letter-spacing: 0.04em; }

@media (min-width: 1024px) {
  .tk-input, .tk-results, .tk-carriers { max-width: 760px; margin-left: auto; margin-right: auto; }
}

/* ============================================================ */
/* 桌面端：SOP 双栏（仅在 ≥1024 启用）                              */
/* ============================================================ */
@media (min-width: 1024px) {
  .quote-split {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 320px;
    gap: var(--space-5);
    align-items: start;
  }
  .quote-split .quote-summary-card { position: sticky; top: calc(var(--header-h) + var(--space-3)); }
}

/* ============================================================ */
/* 首页（#/index）：纯对话 —— 英雄区 + 对话线程                    */
/* ============================================================ */
/* 首页容器把「顶部 navbar + 页头」之外的高度吃满且不多 1px：
   -1px = .nav-header 的 1px 底描边；配合 .page-body-full{padding-bottom:0} 后，
   52(nav) + 45(页头) + 高度 = 100dvh，文档不再有冗余滚动。
   纵向 flex：① 价格滚动条（定高）② 英雄+对话（吃满剩余）。
   注意：这里**不能**用 touch-action:none（旧翻页器为了拦截滑动才加），否则对话区无法触摸滚动。 */
.home-chat-host {
  position: relative;
  display: flex;
  flex-direction: column;
  height: calc(100vh - var(--nav-h-mobile) - var(--header-h) - 1px);   /* fallback */
  height: calc(100dvh - var(--nav-h-mobile) - var(--header-h) - 1px);
  overflow: hidden;
}
@media (min-width: 600px) {
  .home-chat-host {
    height: calc(100vh - var(--nav-h) - var(--header-h) - 1px);
    height: calc(100dvh - var(--nav-h) - var(--header-h) - 1px);
  }
}
/* 首页对话区吃满剩余高度，不需要 page-body 的底部留白（否则多出 16px 冗余滚动） */
.page-body.page-body-full { padding-bottom: 0; }

.home-chat-inner {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  min-height: 0;
}

/* ============================================================ */
/* 价格滚动条（首页 marquee，右→左无缝循环）                        */
/* 底色自带（日间 --c-card-2 浅中灰 / 暗夜 #1F1F1F）+ 1px 底描边；   */
/* 文字/涨跌色全部用主题令牌，两套主题对比度均 ≥4.5:1（见交付报告）   */
/* ============================================================ */
.price-ticker {
  flex: 0 0 auto;
  height: 36px;
  overflow: hidden;
  background: var(--c-card-2);
  border-bottom: 1px solid var(--c-line-strong);
  display: flex;
  align-items: center;
}
.price-ticker-viewport {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: hidden;
  display: flex;
  align-items: center;
}
.price-ticker-track {
  display: flex;
  align-items: center;
  width: max-content;
  will-change: transform;
  backface-visibility: hidden;
  animation-name: price-ticker-scroll;
  animation-timing-function: linear;
  animation-iteration-count: infinite;
  animation-duration: 240s;   /* JS 会按「单份宽度 ÷ 52px/s」改写 */
}
/* 无缝：track 无 gap，间距做在副本内部（含尾部 padding-right），-50% 正好等于一份宽 */
.price-ticker-copy {
  display: flex;
  align-items: center;
  gap: 18px;
  padding-right: 18px;
  white-space: nowrap;
}
@keyframes price-ticker-scroll {
  from { transform: translate3d(0, 0, 0); }
  to   { transform: translate3d(-50%, 0, 0); }
}
.price-ticker-note {
  padding: 0 var(--space-4);
  font-size: var(--fs-xs);
  color: var(--c-muted);
}
.pt-item {
  display: inline-flex;
  align-items: baseline;
  gap: 5px;
  text-decoration: none;
  font-size: var(--fs-sm);
  line-height: 1;
  padding: 2px 4px;
  border-radius: var(--radius-xs);
  transition: background 0.15s ease;
}
.pt-item:hover { background: var(--c-tint-primary); text-decoration: none; }
.pt-item:focus-visible { outline: none; box-shadow: var(--shadow-focus); }
.pt-origin { font-family: var(--font-mono); font-weight: 700; color: var(--c-text); }
.pt-colon { color: var(--c-muted); }
.pt-region { color: var(--c-muted); }
.pt-airport { font-family: var(--font-mono); font-weight: 600; color: var(--c-text); }
.pt-price { font-variant-numeric: tabular-nums; font-weight: 600; }
.pt-arrow { font-weight: 700; }
.pt-up   { color: var(--c-up); }
.pt-down { color: var(--c-down); }
.pt-flat { color: var(--c-ink); }
.pt-group-sep { color: var(--c-muted); padding: 0 6px; }
/* 桌面 hover 暂停（便于阅读/点击） */
@media (hover: hover) {
  .price-ticker:hover .price-ticker-track,
  .price-ticker:focus-within .price-ticker-track { animation-play-state: paused; }
}
/* reduced-motion：停止动画，改成可手动横滚查看（内容仍然完整可读） */
@media (prefers-reduced-motion: reduce) {
  .price-ticker-track { animation: none; }
  .price-ticker-viewport { overflow-x: auto; }
}
@media (max-width: 599px) {
  .price-ticker { height: 32px; }
  .pt-item { font-size: var(--fs-xs); }
  .price-ticker-copy { gap: 14px; padding-right: 14px; }
}

.hero {
  position: relative;
  flex-shrink: 0;
  height: 38%;
  min-height: 220px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  border-bottom: 1px solid var(--c-line);
  opacity: 1;
  transition: height 280ms cubic-bezier(.22, .61, .36, 1),
              min-height 280ms cubic-bezier(.22, .61, .36, 1),
              opacity 280ms cubic-bezier(.22, .61, .36, 1),
              border-color 280ms cubic-bezier(.22, .61, .36, 1);
}
.home-chat-inner.chat-started .hero {
  height: 0 !important;
  min-height: 0 !important;
  opacity: 0;
  border-bottom-color: transparent;
  pointer-events: none;
}
@media (prefers-reduced-motion: reduce) {
  .home-chat-inner .hero { transition: none; }
}
.hero-glow {
  position: absolute;
  width: 320px; height: 320px;
  border-radius: 50%;
  background: radial-gradient(circle, var(--c-primary) 0%, transparent 70%);
  filter: blur(40px);
  opacity: 0.18;
  pointer-events: none;
}
html[data-theme="dark"] .hero-glow {
  opacity: 0.28;
  filter: blur(60px);
}
.hero-halo {
  position: absolute;
  width: 180px; height: 180px;
  border-radius: 50%;
  border: 1px solid var(--c-line-strong);
  background: radial-gradient(circle at 50% 50%, var(--c-card) 0%, transparent 70%);
  box-shadow: var(--shadow-glow);
  pointer-events: none;
}
.hero-inner {
  position: relative;
  z-index: 1;
  text-align: center;
  padding: 0 var(--space-4);
  max-width: 520px;
}
.hero-brand {
  font-family: var(--font-display);
  font-size: 11px;
  font-weight: 600;
  color: var(--c-muted);
  letter-spacing: 0.24em;
  text-transform: uppercase;
  margin-bottom: var(--space-3);
}
.hero-tagline {
  font-family: var(--font-display);
  font-size: 28px;
  font-weight: 700;
  color: var(--c-text);
  letter-spacing: -0.02em;
  line-height: 1.25;
  margin-bottom: var(--space-3);
}
.hero-sub {
  font-size: var(--fs-sm);
  color: var(--c-ink);
  letter-spacing: 0.02em;
}
@media (max-width: 599px) {
  .hero { height: 32%; min-height: 180px; }
  .hero-tagline { font-size: 22px; }
  .hero-glow { width: 220px; height: 220px; }
  .hero-halo { width: 130px; height: 130px; }
}

/* 对话区 */
.chat {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-height: 0;
}
.chat-scroll {
  flex: 1;
  overflow-y: auto;
  padding: var(--space-3) var(--space-4);
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
.chat-bubble {
  max-width: 88%;
  padding: var(--space-3) var(--space-4);
  border-radius: 16px;
  line-height: 1.55;
  font-size: var(--fs-md);
  position: relative;
  word-break: break-word;
}
.chat-bubble-user {
  background: var(--c-card);
  border: 1px solid var(--c-line-strong);
  color: var(--c-text);
  align-self: flex-end;
  border-bottom-right-radius: 4px;
}
.chat-bubble-ai {
  background: var(--c-card);
  border: 1px solid var(--c-line);
  color: var(--c-text);
  align-self: flex-start;
  border-bottom-left-radius: 4px;
}
.chat-bubble-intro {
  border-style: dashed;
}
.chat-bubble-text { white-space: pre-wrap; }
.chat-thinking {
  color: var(--c-muted);
  font-style: italic;
}

/* 卡片 */
.chat-card {
  margin-top: var(--space-3);
  padding-top: var(--space-3);
  border-top: 1px solid var(--c-line);
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.chat-card-title {
  font-family: var(--font-display);
  font-size: var(--fs-md);
  font-weight: 700;
  color: var(--c-text);
  letter-spacing: -0.005em;
}
.chat-card-title-2 { margin-top: var(--space-2); }
.chat-card-list { display: flex; flex-direction: column; gap: 4px; }
.chat-card-row { display: flex; gap: var(--space-3); font-size: var(--fs-sm); padding: 4px 0; border-bottom: 1px dashed var(--c-line); }
.chat-card-row:last-child { border-bottom: none; }
.chat-card-k { width: 80px; color: var(--c-muted); flex-shrink: 0; }
.chat-card-v { flex: 1; color: var(--c-text); font-variant-numeric: tabular-nums; }
.chat-card-foot {
  font-size: var(--fs-xs);
  color: var(--c-muted);
  padding-top: var(--space-2);
  border-top: 1px dashed var(--c-line);
}
.chat-empty { color: var(--c-muted); font-size: var(--fs-sm); }

/* 报价卡 */
.chat-quote-row {
  padding: var(--space-2) 0;
  border-bottom: 1px solid var(--c-line);
}
.chat-quote-row:last-of-type { border-bottom: none; }
.chat-quote-head { display: flex; gap: 8px; align-items: baseline; }
.chat-quote-airline { font-family: var(--font-display); font-weight: 700; color: var(--c-text); }
.chat-quote-flight { font-family: var(--font-mono); font-size: var(--fs-sm); color: var(--c-ink); }
.chat-quote-line { font-size: var(--fs-sm); color: var(--c-ink); margin-top: 2px; }
.chat-quote-price { font-size: var(--fs-lg); font-weight: 700; color: var(--c-text); margin-top: 4px; font-variant-numeric: tabular-nums; }
.chat-quote-remark { font-size: var(--fs-xs); color: var(--c-ink); margin-top: 4px; padding: 6px 8px; background: var(--c-card-2); border-radius: 6px; }
.chat-quote-cta { margin-top: var(--space-3); align-self: flex-start; }

/* 价格区 */
.chat-region-block { padding: var(--space-2) 0; border-bottom: 1px dashed var(--c-line); }
.chat-region-block:last-child { border-bottom: none; }
.chat-region-name { font-family: var(--font-display); font-weight: 600; font-size: var(--fs-sm); color: var(--c-text); margin-bottom: 4px; }
.chat-price-row { display: flex; gap: var(--space-2); padding: 4px 0; font-size: var(--fs-sm); }
.chat-price-airport { width: 56px; color: var(--c-text); font-weight: 600; }
.chat-price-value { flex: 1; text-align: right; font-variant-numeric: tabular-nums; }
.chat-price-trend { width: 16px; text-align: right; }

/* 三字码 */
.chat-airport-row { display: flex; gap: 8px; padding: 4px 0; border-bottom: 1px dashed var(--c-line); font-size: var(--fs-sm); align-items: baseline; }
.chat-airport-row:last-child { border-bottom: none; }
.chat-airport-code { font-family: var(--font-mono); font-weight: 700; color: var(--c-text); width: 44px; }
.chat-airport-name { flex: 1; color: var(--c-text); }
.chat-airport-meta { color: var(--c-muted); font-size: var(--fs-xs); }

/* 航班 */
.chat-flight-row { display: flex; gap: 8px; padding: 4px 0; border-bottom: 1px dashed var(--c-line); font-size: var(--fs-sm); align-items: baseline; flex-wrap: wrap; }
.chat-flight-row:last-child { border-bottom: none; }
.chat-flight-no { font-family: var(--font-mono); font-weight: 700; color: var(--c-text); width: 70px; }
.chat-flight-line { color: var(--c-text); font-weight: 500; }
.chat-flight-time { color: var(--c-ink); font-family: var(--font-mono); }
.chat-flight-days { color: var(--c-muted); font-size: var(--fs-xs); width: 100%; }

/* HS */
.chat-hs-row { display: flex; justify-content: space-between; padding: 4px 0; border-bottom: 1px dashed var(--c-line); font-size: var(--fs-sm); }
.chat-hs-row:last-child { border-bottom: none; }
.chat-hs-line { color: var(--c-text); flex: 1; }
.chat-hs-code { color: var(--c-ink); font-family: var(--font-mono); }

/* 分泡 */
.chat-fenpao-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--space-2); }
.chat-fenpao-cell { padding: var(--space-2) var(--space-3); background: var(--c-card-2); border-radius: 8px; }
.chat-fenpao-k { font-size: var(--fs-xs); color: var(--c-muted); }
.chat-fenpao-v { font-family: var(--font-mono); font-weight: 700; color: var(--c-text); margin-top: 2px; font-variant-numeric: tabular-nums; }

/* 轨迹 */
.chat-track-row { padding: var(--space-2) 0; }
.chat-track-no { font-family: var(--font-mono); font-size: 18px; font-weight: 700; color: var(--c-text); letter-spacing: 0.04em; }
.chat-track-more { margin-top: var(--space-2); }

/* 资讯 */
.chat-news-row {
  padding: var(--space-2) 0;
  border-bottom: 1px dashed var(--c-line);
  cursor: pointer;
}
.chat-news-row:last-child { border-bottom: none; }
.chat-news-title { font-weight: 600; color: var(--c-text); font-size: var(--fs-sm); }
.chat-news-sub { font-size: var(--fs-xs); color: var(--c-ink); margin-top: 2px; }
.chat-news-date { font-size: var(--fs-xs); color: var(--c-muted); margin-top: 4px; }

/* unknown 能力列表 */
.chat-cap-list { display: flex; flex-direction: column; gap: 6px; }
.chat-cap-row { font-size: var(--fs-sm); color: var(--c-ink); padding: 4px 0; }

/* 输入区 */
.chat-composer {
  flex-shrink: 0;
  padding: var(--space-3) var(--space-4);
  background: var(--c-bg);
  border-top: 1px solid var(--c-line);
  position: relative;     /* 创建 stacking context，避免被 z-index=150 的 scroll-fab 遮住 */
  z-index: 200;
}
.chat-input-wrap {
  position: relative;
  display: flex;
  align-items: flex-end;
  gap: var(--space-2);
  background: var(--c-card);
  border: 1px solid var(--c-line-strong);
  border-radius: 18px;
  padding: 6px 6px 6px var(--space-3);
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.chat-input-wrap:focus-within {
  border-color: var(--c-text);
  box-shadow: 0 0 0 3px var(--c-tint-primary-strong);
}
.chat-input {
  flex: 1;
  background: transparent;
  border: none;
  outline: none;
  resize: none;
  font-family: inherit;
  font-size: var(--fs-md);
  color: var(--c-text);
  line-height: 1.5;
  max-height: 120px;
  padding: 6px 0;
}
.chat-input::placeholder { color: var(--c-ink-faint); }
.chat-send {
  width: 36px;
  height: 36px;
  flex-shrink: 0;
  border-radius: 50%;
  background: var(--c-primary);
  color: var(--c-primary-ink);
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.15s ease, transform 0.06s ease;
}
.chat-send:hover { background: var(--c-primary-hover); }
.chat-send:active { transform: scale(0.94); }
/* 发送中（等待回复）：视觉降权 + aria-busy 已置位；重复点击不会重复提交同一条文本 */
.chat-send.is-busy { opacity: 0.55; }
.chat-send:focus-visible { box-shadow: var(--shadow-focus); }
.chat-send svg { width: 18px; height: 18px; }
.chat-send svg path:first-of-type { transform: rotate(180deg); transform-origin: center; }
/* arrow up icon was reused upside-down for "send" */
.chat-send svg { transform: rotate(180deg); }

.chat-pills {
  display: flex;
  gap: 8px;
  margin-top: var(--space-3);
  flex-wrap: wrap;
}
.chat-pill {
  height: 32px;
  padding: 0 14px;
  border-radius: 999px;
  background: transparent;
  color: var(--c-text);
  border: 1px solid var(--c-line-strong);
  font-family: var(--font-display);
  font-size: var(--fs-sm);
  font-weight: 500;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease;
}
.chat-pill:hover { background: var(--c-tint-primary); border-color: var(--c-text); }
.chat-pill:active { transform: scale(0.98); }
.chat-pill:focus-visible { box-shadow: var(--shadow-focus); }

/* ============================================================ */
/* price（#/price）：始发港 + 区域行情（原首页「屏 2」独立成页）      */
/* 规格：本页不放任何上下滚动浮标（右上 ↑ / 右下 ↓ 都无）            */
/* ============================================================ */
.price-origin-bar {
  flex-shrink: 0;
  margin: var(--space-3) var(--space-4) var(--space-1);
}
.price-scroll {
  padding: var(--space-2) var(--space-4) var(--space-5);
}
.region-list { display: flex; flex-direction: column; gap: var(--space-3); }
.region-card { margin: 0; padding: var(--space-4); }
.region-header {
  display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-3);
  margin-bottom: var(--space-2);
}
.region-name { font-family: var(--font-display); font-weight: 700; font-size: var(--fs-md); color: var(--c-text); }
.region-count { font-size: var(--fs-xs); color: var(--c-muted); }
.price-row {
  display: flex; align-items: baseline; gap: var(--space-3);
  padding: 9px 0;
  border-bottom: 1px dashed var(--c-line);
  font-size: var(--fs-md);
}
.price-row:last-child { border-bottom: none; }
.price-airport { width: 56px; flex-shrink: 0; font-family: var(--font-mono); font-weight: 700; color: var(--c-text); }
.price-value { flex: 1; text-align: right; font-variant-numeric: tabular-nums; }
.price-trend { width: 18px; text-align: right; font-weight: 700; }
@media (min-width: 1024px) {
  .price-origin-bar { margin: var(--space-4) 0 var(--space-1); }
  .price-scroll { padding: 0 0 var(--space-5); }
  .region-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-4); align-items: start; }
}

/* ============================================================ */
/* tools 卡片底图（纯装饰层；数据见文件末尾 ==CARD-ART== 标记块）    */
/* 结构：.tool-card-art（底图，右侧 58%） → .tool-card::before      */
/*      （卡片底色→透明的遮罩，保证左侧文字对比度） → .tool-name/   */
/*      .tool-desc（z-index 2，最上层）                            */
/* ============================================================ */
.tool-card {
  /* 遮罩基色 = 卡片底色（日间 --c-card #FFFFFF；暗夜 #121212） */
  --card-art-rgb: 255, 255, 255;
  /* 遮罩「全不透明」段终点 = 底图可见带起点。
     取值依据「该档位实测最右侧字形占卡宽」（避免文字被半透明底图压对比度）：
       ≤599px  : 字形 ≤87.8% → 90%
       600–1023: 字形 =73.0%  → 77%
       ≥1024px : 字形 42–62%（随卡片宽度变化）→ 分段 54% / 64%
     数值越小，右侧可见的底图带越宽（用户诉求：左侧别再整片透明）。 */
  --card-art-solid: 84%;
  --card-art-opacity: 1;
  --card-art-w: 62%;
  /* 日间底图是暖纸色（≈#FAF9F5），与白卡片仅差 2%，轻微提对比让它可辨 */
  --card-art-filter: contrast(1.08) saturate(1.22);
}

/* 暗夜：遮罩基色改为卡片底色；底图略压暗，避免纯黑底上过曝 */
html[data-theme="dark"] .tool-card { --card-art-rgb: 18, 18, 18; --card-art-opacity: .92; --card-art-filter: none; }
@media (prefers-color-scheme: dark) {
  html:not([data-theme]) .tool-card { --card-art-rgb: 18, 18, 18; --card-art-opacity: .92; --card-art-filter: none; }
}
/* 编辑态卡片底色是 --c-tint-primary，遮罩同步换色 */
.tool-card.edit { --card-art-rgb: 241, 241, 241; }
html[data-theme="dark"] .tool-card.edit { --card-art-rgb: 32, 32, 32; }
@media (prefers-color-scheme: dark) {
  html:not([data-theme]) .tool-card.edit { --card-art-rgb: 32, 32, 32; }
}

/* 遮罩「全不透明」段终点 = 可见图带起点。取值 = 该档位实测「最右字形占卡宽」+ 余量；
   数值越小 → 右侧可见底图带越宽。文字侧的下界由 padding 保证：
   四列卡片文本框右界 = 卡宽-16px（<600px 为 -12px），窄卡最多只能到 (卡宽-padding)/卡宽。
   各档实测最右字形（标题/简介，占卡宽）：600px 档 85.9/83.8；640px 89.7/85.0；
   680px 83.7/79.3；768px 73.0/69.2；820px 67.9/64.3；1024px(侧栏展开) 79.1/71.0；
   1024px(折叠) 61.6/55.2；1280px(展开) 58.3/52.3；1440px(折叠) 42.4/38.0 */
@media (min-width: 680px)  { .tool-card { --card-art-solid: 74%; } }
/* ≥740：卡片 ≥165px，实测标题 77.3→69.2%、简介 73.2→68%，可再放宽 */
@media (min-width: 740px)  { .tool-card { --card-art-solid: 68%; } }
@media (min-width: 820px)  { .tool-card { --card-art-solid: 66%; } }
/* ≥1024 起底图加宽到 64%（art 左边界仍在卡宽 36% > 35% 的「偏右」要求内） */
@media (min-width: 1024px) { .tool-card { --card-art-w: 68%; } }
/* ≥1280 兜底 = 侧栏展开（卡片 ≥243px，标题 ≤58.3%） */
@media (min-width: 1280px) { .tool-card { --card-art-solid: 56%; } }
/* 侧栏折叠 → 卡片更宽 → 遮罩不透明段可以更短，可见图带更宽（用户诉求的主要收益点） */
@media (min-width: 1024px) { .app-sidebar.is-collapsed ~ div .tool-card { --card-art-solid: 58%; } }
@media (min-width: 1280px) { .app-sidebar.is-collapsed ~ div .tool-card { --card-art-solid: 48%; } }

/* 底图：绝对定位覆盖卡片右侧，左透明 → 右渐显 */
.tool-card-art {
  position: absolute;
  top: 0; right: 0; bottom: 0;
  width: var(--card-art-w);
  height: 100%;
  border-radius: inherit;
  background-repeat: no-repeat;
  background-size: cover;
  background-position: right center;
  pointer-events: none;
  z-index: 0;
  opacity: var(--card-art-opacity);
  filter: var(--card-art-filter);
  /* 底图自身的淡出：原来 0% 全透明 → 50% 处才到 .75，导致即使遮罩放行，
     图片左侧仍是「洗白」的。改成左边缘就留 35% 不透明、70% 处已全实，
     可见带里的画面才是清楚的。 */
  -webkit-mask-image: linear-gradient(to right, rgba(0, 0, 0, .35) 0%, rgba(0, 0, 0, .8) 35%, #000 70%);
  mask-image: linear-gradient(to right, rgba(0, 0, 0, .35) 0%, rgba(0, 0, 0, .8) 35%, #000 70%);
  -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
  -webkit-mask-size: 100% 100%; mask-size: 100% 100%;
}

/* 遮罩：卡片底色（不透明）→ 透明，压在底图之上、文字之下 */
.tool-card::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  border-radius: inherit;
  background: linear-gradient(to right,
    rgba(var(--card-art-rgb), 1) 0%,
    rgba(var(--card-art-rgb), 1) var(--card-art-solid),
    rgba(var(--card-art-rgb), 0) 100%);
}

/* 文字压在最上层，保证可读 */
.tool-card .tool-name,
.tool-card .tool-desc { position: relative; z-index: 2; }
.tool-card .move-btns { z-index: 3; }

/* ==CARD-ART-BEGIN== （由 scripts/gen-card-art.js 生成，勿手改） */
.tool-card[data-key="fenpao"] .tool-card-art{ background-image: url("data:image/webp;base64,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"); }
.tool-card[data-key="airport"] .tool-card-art{ background-image: url("data:image/webp;base64,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"); }
.tool-card[data-key="icsName"] .tool-card-art{ background-image: url("data:image/webp;base64,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"); }
.tool-card[data-key="quote"] .tool-card-art{ background-image: url("data:image/webp;base64,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"); }
.tool-card[data-key="flight"] .tool-card-art{ background-image: url("data:image/webp;base64,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"); }
.tool-card[data-key="track"] .tool-card-art{ background-image: url("data:image/webp;base64,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"); }
.tool-card[data-key="trackLive"] .tool-card-art{ background-image: url("data:image/webp;base64,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"); }
.tool-card[data-key="feedback"] .tool-card-art{ background-image: url("data:image/webp;base64,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"); }
.tool-card[data-key="iata"] .tool-card-art{ background-image: url("data:image/webp;base64,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"); }
/* ==CARD-ART-END== */

/* ===== 数据管理（仅管理员，#/admin/data）=====
   表格式整包编辑器：模块页签 + 每行一张卡（字段栅格）+ 底部整包保存。 */
.adm-tabs { display: flex; gap: var(--space-2); padding: 0 var(--space-4) var(--space-3); flex-wrap: wrap; }
.adm-tab {
  padding: 7px 14px; border-radius: 999px; font-size: var(--fs-sm);
  background: transparent; color: var(--c-text-2);
  border: 1px solid var(--c-border); cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease;
}
.adm-tab-active { background: var(--c-primary); color: #fff; border-color: var(--c-primary); }
.adm-meta { padding: 0 var(--space-4) var(--space-3); }
.adm-list { display: flex; flex-direction: column; gap: var(--space-3); margin-top: var(--space-3); }
.adm-card { background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--radius-2); padding: var(--space-4); }
.adm-row-head { font-size: var(--fs-sm); color: var(--c-text-2); font-weight: 600; padding-top: var(--space-2); }
.adm-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: var(--space-3); }
.adm-cell { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.adm-label { font-size: var(--fs-xs); color: var(--c-text-2); }
.adm-input {
  width: 100%; padding: 8px 10px; font-size: var(--fs-md);
  color: var(--c-text); background: var(--c-bg);
  border: 1px solid var(--c-border); border-radius: var(--radius-1);
  font-family: inherit;
}
.adm-textarea { min-height: 64px; resize: vertical; }
.adm-input:focus { outline: none; border-color: var(--c-primary); }
.adm-ops { display: flex; justify-content: flex-end; margin-top: var(--space-3); }
.adm-savebar { position: sticky; bottom: 0; padding-bottom: calc(var(--space-4) + env(safe-area-inset-bottom)); background: var(--c-bg); }

/* ===== 「各登记价 · 分泡成本与利润」价目表卡（聊天内）=====
   行序由服务端按登记价升序排好（成本固定时价格越低利润越薄，最该先看到），
   前端只排版不算数；is-loss / is-thin 是纯视觉提示，不参与判定。 */
.chat-card-head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-2); }
.chat-ratio-basis {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(88px, 1fr));
  gap: var(--space-2); padding: var(--space-3) 0;
  border-bottom: 1px solid var(--c-border);
}
.chat-ratio-basis-cell { text-align: center; }
.chat-ratio-basis-k { font-size: var(--fs-xs); color: var(--c-text-2); }
.chat-ratio-basis-v { font-size: var(--fs-md); font-weight: 600; color: var(--c-text); margin-top: 2px; }
.chat-ratio-list { display: flex; flex-direction: column; }
.chat-ratio-row {
  display: flex; align-items: center; justify-content: space-between; gap: var(--space-3);
  padding: var(--space-3) 0; border-bottom: 1px solid var(--c-border);
}
.chat-ratio-row:last-child { border-bottom: none; }
.chat-ratio-left { min-width: 0; }
.chat-ratio-airline { font-size: var(--fs-md); color: var(--c-text); }
.chat-ratio-route { font-size: var(--fs-xs); color: var(--c-text-2); margin-top: 2px; }
.chat-ratio-right { text-align: right; white-space: nowrap; }
.chat-ratio-sell { font-size: var(--fs-md); font-weight: 600; color: var(--c-text); }
.chat-ratio-kv { font-size: var(--fs-xs); color: var(--c-text-2); margin-top: 2px; }
.chat-ratio-kv.is-profit { color: var(--c-primary); }
.chat-ratio-row.is-loss .chat-ratio-kv.is-profit { color: var(--c-danger, #e5484d); }
.chat-ratio-row.is-loss { background: rgba(229, 72, 77, 0.06); }
.chat-ratio-row.is-thin { background: rgba(255, 193, 7, 0.06); }
