.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}
