/* Diamond Print — 工业感店内报价工具 */
:root {
  --ink: #14212b;
  --ink-soft: #3a4a56;
  --paper: #f3f0e8;
  --panel: #ffffff;
  --line: #d5d0c4;
  --accent: #0f7a6c;
  --accent-deep: #0a544a;
  --accent-soft: #d8f0eb;
  --warn: #9a3412;
  --shadow: 0 12px 40px rgba(20, 33, 43, 0.08);
  --radius: 14px;
  /* 系统字体栈：离线可开，不依赖 Google Fonts */
  --font-display: Georgia, "Songti SC", "SimSun", serif;
  --font-body: "Segoe UI", "Leelawadee UI", "Tahoma", "PingFang SC", "Microsoft YaHei", sans-serif;
  --font-mono: Consolas, "Cascadia Mono", "Microsoft YaHei Mono", monospace;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  min-height: 100%;
}

body {
  font-family: var(--font-body);
  color: var(--ink);
  background:
    radial-gradient(1200px 500px at 10% -10%, #cfe8e3 0%, transparent 55%),
    radial-gradient(900px 420px at 100% 0%, #e8e0cf 0%, transparent 50%),
    linear-gradient(180deg, #ebe6db 0%, var(--paper) 40%, #e7e2d6 100%);
  line-height: 1.45;
}

body::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  opacity: 0.35;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='0.05'/%3E%3C/svg%3E");
  z-index: 0;
}

.app {
  position: relative;
  width: min(1100px, calc(100% - 32px));
  margin: 0 auto;
  padding: 28px 0 48px;
}

.topbar {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 28px;
  position: relative;
  z-index: 1000;
}

.brand-mark {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 8px;
}

.brand-dot {
  width: 14px;
  height: 14px;
  border-radius: 4px;
  background: linear-gradient(135deg, var(--accent), #1db8a0);
  box-shadow: 0 0 0 4px var(--accent-soft);
}

.brand-mark span {
  font-family: var(--font-display);
  font-weight: 650;
  letter-spacing: 0.02em;
  font-size: 1.05rem;
}

.topbar h1 {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 650;
  font-size: clamp(1.7rem, 3vw, 2.25rem);
  letter-spacing: -0.02em;
  line-height: 1.15;
}

.topbar .subtitle {
  margin: 8px 0 0;
  color: var(--ink-soft);
  max-width: 46ch;
}

.top-actions {
  display: flex;
  align-items: center;
  gap: 10px;
}

.lang-switch {
  display: inline-flex;
  padding: 3px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.7);
  backdrop-filter: blur(6px);
}

.lang-switch button {
  border: 0;
  background: transparent;
  color: var(--ink-soft);
  font: inherit;
  font-weight: 600;
  font-size: 0.85rem;
  padding: 6px 12px;
  border-radius: 999px;
  cursor: pointer;
}

.lang-switch button.active {
  background: var(--ink);
  color: #fff;
}

.panel {
  background: var(--panel);
  border: 1px solid rgba(213, 208, 196, 0.9);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 20px 22px 22px;
  margin-bottom: 16px;
}

.panel h2 {
  margin: 0 0 14px;
  font-size: 0.95rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--ink-soft);
}

.type-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.type-card {
  text-align: left;
  border: 1.5px solid var(--line);
  background: #faf9f5;
  border-radius: 12px;
  padding: 14px 14px 12px;
  cursor: pointer;
  transition: border-color 0.15s, transform 0.15s, background 0.15s;
  font: inherit;
  color: inherit;
}

.type-card:hover {
  border-color: #b9cfc9;
  transform: translateY(-1px);
}

.type-card.active {
  border-color: var(--accent);
  background: linear-gradient(180deg, var(--accent-soft), #fff);
  box-shadow: inset 0 0 0 1px rgba(15, 122, 108, 0.15);
}

.type-card strong {
  display: block;
  font-size: 1.02rem;
  margin-bottom: 4px;
}

.type-card small {
  color: var(--ink-soft);
  font-size: 0.82rem;
}

.form-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

label.field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: 0.9rem;
  font-weight: 600;
}

label.field span.unit {
  font-weight: 500;
  color: var(--ink-soft);
  margin-left: 4px;
}

input[type="number"],
select {
  font: inherit;
  font-family: var(--font-mono);
  font-size: 1rem;
  padding: 10px 12px;
  border-radius: 10px;
  border: 1px solid var(--line);
  background: #fff;
  color: var(--ink);
}

input[type="number"]:focus,
select:focus {
  outline: 2px solid rgba(15, 122, 108, 0.35);
  border-color: var(--accent);
}

.field-hint {
  grid-column: 1 / -1;
  margin: 0;
  color: var(--ink-soft);
  font-size: 0.86rem;
  font-weight: 500;
}

.media-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 14px;
}

.media-chip {
  border: 1px solid var(--line);
  background: #fff;
  color: var(--ink);
  font: inherit;
  font-weight: 600;
  padding: 8px 14px;
  border-radius: 999px;
  cursor: pointer;
}

.media-chip.active {
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
}

.compare-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.result-card {
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 14px;
  background: #fbfaf7;
  display: flex;
  flex-direction: column;
  gap: 10px;
  animation: rise 0.35s ease both;
}

.result-card.is-muted {
  opacity: 0.72;
}

.result-card header {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 8px;
}

.result-card h3 {
  margin: 0;
  font-size: 1.05rem;
}

.price-tag {
  font-family: var(--font-mono);
  color: var(--accent-deep);
  white-space: nowrap;
}

.result-card ul,
.detail-list {
  margin: 0;
  padding-left: 18px;
  color: var(--ink-soft);
  font-size: 0.92rem;
}

.btn {
  font: inherit;
  font-weight: 650;
  border-radius: 10px;
  border: 1px solid transparent;
  padding: 9px 14px;
  cursor: pointer;
  transition: background 0.15s, transform 0.15s;
}

.btn:active {
  transform: translateY(1px);
}

.btn.primary {
  background: var(--accent);
  color: #fff;
}

.btn.primary:hover {
  background: var(--accent-deep);
}

.btn.ghost {
  background: #fff;
  border-color: var(--line);
  color: var(--ink);
}

.btn.ghost:hover {
  border-color: var(--accent);
  color: var(--accent-deep);
}

.btn.subtle {
  background: transparent;
  border-color: var(--line);
  color: var(--ink-soft);
}

.reverse-box {
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px dashed var(--line);
}

.reverse-box h3 {
  margin: 0 0 12px;
  font-size: 1rem;
}

.reverse-controls {
  display: grid;
  grid-template-columns: 1.2fr 1fr 1fr auto;
  gap: 10px;
  align-items: end;
}

.reverse-result {
  margin: 12px 0 0;
  font-family: var(--font-mono);
  font-size: 1.15rem;
  font-weight: 600;
  color: var(--accent-deep);
}

.quote-panel .total-box {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
  padding: 18px 20px;
  border-radius: 12px;
  background: linear-gradient(135deg, var(--ink), #1f3644);
  color: #fff;
}

.quote-panel .total-box strong {
  font-family: var(--font-mono);
  font-size: clamp(1.5rem, 3vw, 2rem);
  letter-spacing: -0.02em;
}

.mode-tag {
  margin: 0 0 6px;
  font-weight: 700;
}

.hint {
  margin: 0;
  color: var(--ink-soft);
  font-size: 0.88rem;
}

.error {
  margin: 0;
  color: var(--warn);
  font-weight: 650;
}

.footer {
  margin-top: 20px;
  text-align: center;
  color: var(--ink-soft);
  font-size: 0.82rem;
}

dialog.settings {
  width: min(560px, calc(100% - 24px));
  border: 1px solid var(--line);
  border-radius: 16px;
  padding: 0;
  box-shadow: var(--shadow);
}

dialog.settings::backdrop {
  background: rgba(20, 33, 43, 0.45);
}

.settings-inner {
  padding: 20px;
}

.settings-inner h2 {
  margin: 0 0 6px;
  font-family: var(--font-display);
}

.settings-groups {
  display: grid;
  gap: 14px;
  margin: 16px 0;
}

.settings-group {
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 12px;
  background: #faf9f5;
}

.settings-group h3 {
  margin: 0 0 10px;
  font-size: 0.95rem;
}

.settings-fields {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}

.settings-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}

#settingsMsg {
  margin-left: auto;
  color: var(--accent-deep);
  font-weight: 650;
  font-size: 0.9rem;
}

@keyframes rise {
  from {
    opacity: 0;
    transform: translateY(6px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}

@media (max-width: 900px) {
  .type-grid,
  .compare-grid,
  .form-grid {
    grid-template-columns: 1fr;
  }

  .reverse-controls,
  .settings-fields {
    grid-template-columns: 1fr;
  }
}

/* Workflow extensions */
.steps-nav{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px;position:relative;z-index:1000}
.steps-nav button{border:1px solid var(--line);background:#fff;padding:8px 12px;border-radius:999px;cursor:pointer}
.steps-nav button.active{background:var(--accent);color:#fff;border-color:var(--accent)}
.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.field{display:flex;flex-direction:column;gap:6px;font-size:13px}
.field.full{grid-column:1/-1}
.field.field-action{justify-content:flex-end}
.field-action-spacer{display:block;min-height:1.2em;line-height:1.2}
.field.field-action .btn{width:100%;align-self:stretch}
.field input,.field select{padding:10px 12px;border:1px solid var(--line);border-radius:10px;font:inherit}
input[type="text"]:focus,
input[type="number"]:focus,
select:focus {
  outline: 2px solid rgba(15, 122, 108, 0.35);
  border-color: var(--accent);
}
.row-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}
.row-actions.confirm-primary-actions{
  display:flex;
  flex-wrap:wrap;
  justify-content:space-between;
  align-items:stretch;
  gap:12px;
  margin-top:12px;
  padding:12px;
  border-radius:12px;
  background:linear-gradient(180deg, var(--accent-soft), #eef8f5);
  border:1px solid #b7ddd5;
}
.row-actions.confirm-primary-actions .btn{min-width:160px;flex:1 1 160px;font-weight:650}
.row-actions.ship-primary-actions{
  display:flex;
  flex-wrap:wrap;
  justify-content:space-between;
  align-items:stretch;
  gap:12px;
  margin-top:16px;
  padding-top:16px;
  border-top:1px solid var(--line);
}
.row-actions.ship-primary-actions .btn{min-width:200px;flex:1 1 200px;font-weight:650}
.ship-form-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.ship-form-grid .field-span2{grid-column:span 2}
.purge-delete-error{color:#9a3412;min-height:1.2em}
@media (max-width:720px){
  .ship-form-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}
}
.btn{border:1px solid var(--line);background:#fff;padding:10px 14px;border-radius:10px;cursor:pointer}
.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}
.btn.confirm-print{
  background:#fff8e7;
  color:var(--accent-deep);
  border:2px solid var(--accent);
}
.btn.confirm-print:hover{background:#ffefc2}
.btn.danger{background:#9a3412;color:#fff;border-color:#9a3412}
.btn.subtle{background:transparent}
/* 导出忙等遮罩：fixed 全屏；浮层 1050 盖住顶栏实现充屏；忙等 1100 最上 */
.dlg-backdrop{
  position:fixed;inset:0;z-index:700;
  background:rgba(15,23,32,.35);
  pointer-events:none;
}
.dlg-backdrop.modal-active{
  pointer-events:auto;
}
.dlg-backdrop[hidden]{display:none!important;pointer-events:none!important}
.busy-overlay{
  position:fixed;inset:0;z-index:1100;
  display:flex;align-items:center;justify-content:center;
  background:rgba(15,23,32,.45);
  color:#fff;font-size:16px;font-weight:650;
  backdrop-filter:blur(2px);
  pointer-events:auto;
}
.busy-overlay[hidden]{display:none!important;pointer-events:none!important}
.busy-overlay .busy-card{
  background:#0f1720;padding:20px 28px;border-radius:14px;
  box-shadow:0 12px 40px rgba(0,0,0,.35);text-align:center;
}
.code-box{background:#0f1720;color:#d7e2ea;padding:12px;border-radius:12px;overflow:auto;font-family:var(--font-mono);font-size:12px;white-space:pre-wrap}
.qc-list label{display:flex;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}
.btn-new-order{font-size:15px;padding:12px 20px;font-weight:650}
.dlg-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:4px;flex-shrink:0}
.dlg-toolbar h3{margin:0}
/* 仅 [open] 时 display:flex，否则会盖过 dialog:not([open]){display:none}，关窗后仍挡点击 */
dialog.dlg:not([open]){display:none!important}
/* QC/Sales 浮层：div + hidden，不依赖 native dialog */
.float-panel[hidden]{display:none!important;pointer-events:none!important}
.float-panel:not([hidden]){
  position:fixed;
  top:96px;
  left:50%;
  transform:translateX(-50%);
  z-index:1050;
  margin:0;
  max-width:min(1100px,calc(100vw - 32px));
  width:calc(100% - 32px);
  max-height:calc(100vh - 108px);
  height:calc(100vh - 108px);
  min-height:360px;
  display:flex;
  flex-direction:column;
  padding:12px 16px;
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:var(--radius);
  box-shadow:0 20px 60px rgba(0,0,0,.25);
  overflow:hidden;
}
#panelPurgeScope:not([hidden]){z-index:1060}
.float-panel:not([hidden]) .dlg-toolbar,
.float-panel:not([hidden]) > .sales-top-row,
.float-panel:not([hidden]) > .filter-bar,
.float-panel:not([hidden]) > .row-actions,
.float-panel:not([hidden]) > .month-summary,
.float-panel:not([hidden]) > .code-box{flex-shrink:0}
.float-panel:not([hidden]) .table-wrap,
.float-panel:not([hidden]) .sales-table-wrap{
  flex:1;
  min-height:200px;
  max-height:none;
  overflow:auto;
  margin:2px 0 0;
}
/* 满屏：真正占满视口（Alex 充屏要求） */
.float-panel.float-fullscreen:not([hidden]),
.float-panel.dlg-wide.float-fullscreen:not([hidden]){
  inset:0;
  left:0;
  top:0;
  width:100vw;
  height:100vh;
  max-width:none!important;
  max-height:none;
  margin:0;
  border-radius:0;
  transform:none;
  padding:16px 20px;
  border:none;
}
.float-panel.float-fullscreen:not([hidden]) .table-wrap{flex:1;min-height:160px;max-height:none;overflow:auto}
.dlg-step-shortcuts{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.dlg-goto-step{font-size:12px;padding:6px 10px}
.status-cancelled{color:#b91c1c!important;background:#fee2e2!important;font-weight:700}
.data-table td.sales-amt{font-size:15px;font-weight:700;color:var(--accent-deep)}
.data-table th.col-sales{font-size:13px}
.month-summary .card .sales-big{display:block;font-size:18px;font-weight:700;margin-top:6px;color:var(--accent-deep)}
.month-summary .card .amt-line{display:block;font-size:12px;margin-top:2px;color:var(--ink-soft)}
.dlg{border:none;border-radius:16px;padding:20px;max-width:720px;width:calc(100% - 24px)}
.dlg.dlg-wide{max-width:1100px}
.dlg-toolbar-actions{display:flex;gap:8px;align-items:center;flex-shrink:0}
.version-line{margin:4px 0 0;font-size:12px;color:var(--muted,#64748b)}
.hint{font-size:13px;color:var(--muted,#64748b);margin:0 0 12px}
.price-editor{display:grid;gap:10px;max-height:280px;overflow:auto;margin:8px 0 12px}
.price-row{display:grid;grid-template-columns:90px repeat(5,1fr);gap:6px;align-items:end;font-size:12px}
.price-row input{width:100%;padding:6px 8px;border:1px solid var(--line);border-radius:8px}
.price-note{font-size:12px;color:var(--muted,#64748b);margin:2px 0 0;line-height:1.5}
.list-box{max-height:360px;overflow:auto;margin:12px 0}
.list-box button{display:block;width:100%;text-align:left;margin:4px 0;padding:8px;border:1px solid var(--line);border-radius:8px;background:#fff;cursor:pointer}
.filter-bar{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin:10px 0}
.filter-bar label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--ink-soft)}
.filter-bar input,.filter-bar select{
  min-height:34px;padding:4px 8px;border:1px solid var(--line);border-radius:8px;font:inherit;
  background:#fff;color:var(--ink);caret-color:var(--accent);
}
.filter-bar input:focus,.filter-bar select:focus{
  outline:2px solid rgba(15,122,108,.35);border-color:var(--accent);
}
.filter-bar input[type="password"]{font-family:var(--font-mono);letter-spacing:.12em;min-width:140px}
.pwd-field-wrap{display:flex;gap:6px;align-items:center}
.pwd-field-wrap input{flex:1}
.pwd-toggle{padding:4px 10px;font-size:11px;min-height:34px}
.pwd-hint{font-size:11px;color:var(--accent-deep);min-height:14px}
.table-wrap{max-height:420px;overflow:auto;margin:10px 0;border:1px solid var(--line);border-radius:10px;background:#fff}
.data-table{width:100%;border-collapse:collapse;font-size:12px}
.data-table th,.data-table td{border-bottom:1px solid var(--line);padding:8px 6px;text-align:left;vertical-align:top}
.data-table th{position:sticky;top:0;background:#f7f4ec;z-index:1;font-weight:700}
.data-table .th-sub{font-weight:500;color:var(--ink-soft);font-size:10px}
.data-table tr:hover td{background:#f3fbf8}
.data-table button.linkish{border:none;background:none;color:var(--accent-deep);cursor:pointer;font:inherit;padding:0;text-decoration:underline}
.track-missing{background:#fee2e2!important;color:#9a3412;font-weight:700}
.qc-remarks{max-width:14em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-soft);font-size:12px}
.month-summary{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px;margin:8px 0}
.month-summary .card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px}
.month-summary .card b{display:block;font-size:16px;margin-top:4px}
/* Alex 9/5：销售汇总 — 月度汇总卡片移到筛选区右上 */
.sales-top-row{
  display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;
  gap:6px 12px;margin:0 0 2px;flex-shrink:0;
}
.sales-filter-bar{flex:1 1 480px;margin:0;align-items:flex-end}
.sales-toolbar{margin:0 0 2px}
.month-summary-inline{
  flex:0 1 260px;margin:0;display:block;min-width:200px;
}
.month-summary-inline .card{padding:8px 12px;line-height:1.35}
.month-summary-inline .card .month-head{font-size:13px;font-weight:700;color:var(--ink)}
.month-summary-inline .card b{font-size:15px;margin-top:2px}
.month-summary-inline .card .sales-big{font-size:16px;margin-top:4px}
.month-summary-inline .card .amt-line{display:block;font-size:11px;margin-top:2px;line-height:1.4}
.sales-purge-pwd{position:relative;max-width:280px;padding-bottom:0}
.sales-purge-pwd .pwd-hint{
  position:absolute;left:0;top:calc(100% + 2px);min-height:0;margin:0;
  pointer-events:none;white-space:nowrap;
}

.panel-sub{margin-top:16px;padding-top:12px;border-top:1px dashed var(--line)}.panel-sub h3{margin:0 0 8px;font-size:15px}
.status-banner{
  position:fixed;top:12px;left:50%;transform:translateX(-50%);z-index:1200;
  max-width:min(640px,calc(100vw - 24px));padding:12px 20px;border-radius:12px;
  background:#0f1720;color:#e8f4ef;font-weight:650;font-size:14px;text-align:center;
  box-shadow:0 8px 32px rgba(0,0,0,.25);
  pointer-events:none;
}
.status-banner[hidden]{display:none!important}

/* 排版可读预览（店员手提友好） */
.layout-result{margin-top:16px;display:grid;gap:14px}
.layout-summary{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(140px,1fr));
  gap:10px;
  padding:14px;
  border:1px solid var(--line);
  border-radius:12px;
  background:linear-gradient(180deg,#fff 0%,#f7faf9 100%);
}
.layout-summary .stat{
  display:flex;
  flex-direction:column;
  gap:4px;
  min-width:0;
}
.layout-summary .stat .label{
  font-size:12px;
  letter-spacing:.02em;
  color:var(--ink-soft);
}
.layout-summary .stat .value{
  font-size:18px;
  font-weight:650;
  color:var(--ink);
  word-break:break-word;
}
.layout-summary .stat.accent .value{color:var(--accent-deep)}
.layout-grid{
  width:100%;
  max-width:min(100%,360px);
  margin:0 auto;
  display:grid;
  gap:5px;
  padding:12px;
  border:1px dashed var(--line);
  border-radius:12px;
  background:#fff;
  box-sizing:border-box;
  /* 按行数撑开，避免固定比例把末行挤没 */
  min-height:220px;
}
.layout-grid.is-roll{max-width:min(100%,260px)}
.layout-tile{
  border:1px solid var(--accent);
  border-radius:4px;
  background:var(--accent-soft);
  min-height:36px;
  min-width:0;
  display:block;
}
.layout-tech{border:1px solid var(--line);border-radius:12px;padding:8px 12px;background:#fff}
.layout-tech summary{cursor:pointer;font-size:13px;color:var(--ink-soft);user-select:none}
.layout-tech .code-box{margin:10px 0 4px;max-height:220px}
.layout-error{
  margin:12px 0 0;
  padding:10px 12px;
  border-radius:10px;
  background:#fef2f2;
  color:var(--warn);
  border:1px solid #fecaca;
  font-size:14px;
}

/* 出单：打印项目清单 */
.field-add-line{display:flex;align-items:flex-end}
.line-items-section{margin:14px 0 8px}
.line-items-section h3{margin:0 0 8px;font-size:15px}
.line-items-wrap{overflow:auto;max-width:100%;border:1px solid var(--line);border-radius:10px;background:#fff}
.line-items-table{min-width:960px;font-size:12px}
.line-items-table th{white-space:normal;line-height:1.25;vertical-align:bottom}
.line-items-table .th-sub{font-weight:normal;color:var(--ink-soft);font-size:11px}
.line-items-table input[type="text"],
.line-items-table input[type="number"],
.line-items-table select{
  width:100%;
  min-width:0;
  box-sizing:border-box;
  font-size:12px;
  padding:4px 6px;
}
.li-thumb-cell{text-align:center;min-width:88px}
.li-thumb-img{max-width:56px;max-height:56px;object-fit:contain;display:block;margin:0 auto 4px}
.li-thumb-ph{color:#999;font-size:11px}
.qc-track-input{
  width:100%;
  min-width:120px;
  box-sizing:border-box;
  font-size:12px;
  padding:4px 6px;
  border:1px solid var(--line);
  border-radius:6px;
}
.qc-track-input.track-save-ok{border-color:#16a34a;background:#f0fdf4}
.qc-track-input.track-save-err{border-color:var(--warn);background:#fef2f2}

/* —— 手机 / 窄屏自适应（开单） —— */
.user-chip{
  display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;
  background:#eef8f5;border:1px solid #b7ddd5;font-size:12px;color:var(--accent-deep);
  max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
@media (max-width:720px){
  .app{padding:10px 10px 28px}
  .topbar{flex-direction:column;align-items:stretch;gap:10px}
  .top-actions{display:flex;flex-wrap:wrap;gap:8px}
  .top-actions .btn{flex:1 1 calc(50% - 8px);min-height:44px;font-size:14px}
  .steps-nav button{flex:1 1 calc(50% - 8px);min-height:42px;border-radius:12px}
  .form-grid{grid-template-columns:1fr;gap:10px}
  .field input,.field select,.btn{min-height:44px;font-size:16px}
  .float-panel:not([hidden]){
    top:8px;left:0;right:0;transform:none;width:100%;max-width:100%;
    height:calc(100vh - 8px);max-height:calc(100vh - 8px);
    border-radius:12px 12px 0 0;padding:10px 10px 16px;
  }
  .dlg-toolbar{flex-wrap:wrap;gap:8px}
  .dlg-toolbar-actions{width:100%;justify-content:flex-end;flex-wrap:wrap}
  .filter-bar{gap:8px}
  .filter-bar label,.filter-bar input,.filter-bar select{width:100%}
  .sales-top-row{flex-direction:column;align-items:stretch}
  .month-summary-inline{max-width:none;flex:1 1 auto}
  .data-table{font-size:11px}
  .data-table th,.data-table td{padding:6px 4px}
  .table-wrap,.sales-table-wrap{-webkit-overflow-scrolling:touch}
  .row-actions .btn{flex:1 1 100%;min-height:44px}
  .line-items-wrap{overflow:auto}
}

