.quote-empty{padding:48px;border:1px dashed var(--line);border-radius:20px;text-align:center;display:grid;gap:18px;justify-items:center;color:var(--ink-2)}
.quote-layout{display:grid;grid-template-columns:1fr 340px;gap:32px;align-items:start}
.quote-table-wrap{overflow-x:auto}
.quote-table{width:100%;border-collapse:collapse;border-top:2px solid var(--ink);min-width:560px}
.quote-table th,.quote-table td{padding:14px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
.quote-table th{font-size:14px;color:var(--muted);font-weight:600}
.quote-table .num{text-align:right;white-space:nowrap}
.quote-product{display:flex;align-items:center;gap:12px}
.quote-product img{width:56px;height:56px;object-fit:contain;background:var(--mist);border-radius:10px;padding:4px}
.quote-product span{display:grid;line-height:1.4}.quote-product small{color:var(--muted);font-family:var(--display)}
.quote-table input{width:76px;height:40px;padding:0 10px;border:1px solid var(--line);border-radius:10px}
.quote-table input[aria-invalid="true"]{border-color:#c0392b}
.quote-table tr.is-ask td{color:var(--muted)}
.quote-remove{border:1px solid var(--line);background:#fff;border-radius:8px;padding:6px 12px;font-size:13px}
.quote-ask-note{margin-top:14px;color:var(--ink-2);font-size:14px}
.quote-summary{position:sticky;top:calc(var(--header-h) + 20px);display:grid;gap:14px;padding:24px;border:1px solid var(--line);border-radius:20px;background:var(--paper)}
.quote-total{display:flex;justify-content:space-between;align-items:baseline;padding-bottom:14px;border-bottom:1px solid var(--line)}
.quote-total strong{font-family:var(--display);font-size:24px}
.quote-summary label{display:grid;gap:6px;font-weight:600;font-size:14px}
.quote-summary input{height:46px;padding:0 14px;border:1px solid var(--line);border-radius:12px;background:#fff}
.quote-summary input[aria-invalid="true"]{border-color:#c0392b}
.quote-hint{font-size:13px;color:var(--muted)}
.quote-download{width:100%}
.quote-download:disabled{opacity:.55;cursor:default}
.quote-summary .quote-status{color:var(--aqua-ink);font-weight:600;min-height:1.4em}
@media(max-width:1024px){.quote-layout{grid-template-columns:1fr}.quote-summary{position:static}}
.quote-layout>*{min-width:0}
.quote-table-wrap{position:relative}
.quote-app{min-height:420px}

/* phones (2026-10-29 QA): each quote row becomes a small card — product on top, quantity and amounts below */
@media (max-width:720px){
  .quote-table{min-width:0}
  .quote-table thead{display:none}
  .quote-table tr{display:grid;grid-template-columns:auto 1fr auto;gap:8px 12px;align-items:center;padding:14px 0;border-bottom:1px solid var(--line)}
  .quote-table td{padding:0;border:0}
  .quote-table td:first-child{grid-column:1 / -1}
  .quote-table td.num{text-align:left}
}
