/* ============================================================
   buyer-suite.css — 消费手账 / 购物清单风格
   柔和马卡龙配色、圆润贴纸卡片、手绘虚线、胶带标签、等宽价格
   默认白天（奶油纸感）；<html data-theme="dark"> 时切换为夜间手账
   与 fin-suite 的金融终端风完全不同
   ============================================================ */

:root {
    /* 语义变量：默认白天（奶油纸感） */
    --bs-bg: #fdf6ef;
    --bs-bg-2: #f6ece2;
    --bs-paper: #ffffff;
    --bs-paper-2: #fffaf4;
    --bs-ink: #3c2f2f;
    --bs-ink-soft: #7c6a63;
    --bs-ink-faint: #b3a298;
    --bs-line: #ecdccf;
    --bs-line-soft: #f3e8dd;

    --bs-coral: #ff6b6b;
    --bs-coral-soft: rgba(255, 107, 107, .13);
    --bs-peach: #ff9d6c;
    --bs-mint: #26b892;
    --bs-mint-soft: rgba(38, 184, 146, .13);
    --bs-sky: #4d96ff;
    --bs-sky-soft: rgba(77, 150, 255, .13);
    --bs-grape: #9b6bff;
    --bs-grape-soft: rgba(155, 107, 255, .13);
    --bs-sun: #f5a623;
    --bs-sun-soft: rgba(245, 166, 35, .14);
    --bs-pink: #ff7eb3;

    --bs-radius: 20px;
    --bs-radius-sm: 13px;
    --bs-mono: "SFMono-Regular", Consolas, "Liberation Mono", "Courier New", monospace;
    --bs-font: "PingFang SC", "Microsoft YaHei", "Hiragino Sans GB", sans-serif;

    /* 图表/轨道 */
    --bs-track: #f1e6da;
    --bs-hole: #ffffff;
    /* 微染色（白天下为暖灰，深色下为近白） */
    --bs-tint: rgba(60, 47, 47, .035);
    --bs-tint-2: rgba(60, 47, 47, .065);
    --bs-shadow: 0 10px 30px rgba(120, 80, 50, .10);
}

:root[data-theme="dark"] {
    /* 夜间手账：深可可底 + 提亮糖果色 */
    --bs-bg: #211a1e;
    --bs-bg-2: #2a2127;
    --bs-paper: #32282f;
    --bs-paper-2: #3a2f37;
    --bs-ink: #f6ece6;
    --bs-ink-soft: #c2aaa0;
    --bs-ink-faint: #8a746c;
    --bs-line: #4a3b42;
    --bs-line-soft: #3f3339;

    --bs-coral: #ff8585;
    --bs-coral-soft: rgba(255, 133, 133, .15);
    --bs-peach: #ffb085;
    --bs-mint: #4fd6b0;
    --bs-mint-soft: rgba(79, 214, 176, .15);
    --bs-sky: #7db3ff;
    --bs-sky-soft: rgba(125, 179, 255, .15);
    --bs-grape: #b794ff;
    --bs-grape-soft: rgba(183, 148, 255, .15);
    --bs-sun: #ffc25c;
    --bs-sun-soft: rgba(255, 194, 92, .16);
    --bs-pink: #ff9dc7;

    --bs-track: #2a2127;
    --bs-hole: #32282f;
    --bs-tint: rgba(255, 255, 255, .035);
    --bs-tint-2: rgba(255, 255, 255, .07);
    --bs-shadow: 0 12px 32px rgba(0, 0, 0, .35);
}

/* 仅在消费工具容器内接管，避免污染页头页脚 */
.buyersuite {
    background:
        radial-gradient(1100px 480px at 90% -8%, var(--bs-sky-soft), transparent 60%),
        radial-gradient(900px 420px at -8% 0%, var(--bs-sun-soft), transparent 55%),
        var(--bs-bg);
    color: var(--bs-ink);
    font-family: var(--bs-font);
    padding: 30px 0 60px;
    margin-top: -1px;
    font-size: 15px;
    line-height: 1.7;
}
.buyersuite *,
.buyersuite *::before,
.buyersuite *::after { box-sizing: border-box; }
.bs-container { max-width: 1160px; margin: 0 auto; padding: 0 20px; }

/* ---------- 胶带 / 顶部条 ---------- */
.bs-tape {
    display: flex; align-items: center; gap: 12px;
    background: var(--bs-paper-2);
    border: 1px dashed var(--bs-line);
    border-radius: 999px;
    padding: 9px 18px;
    margin-bottom: 24px;
    box-shadow: var(--bs-shadow);
}
.bs-tape .bs-pin { display: flex; gap: 6px; }
.bs-tape .bs-pin i { width: 11px; height: 11px; border-radius: 50%; display: block; }
.bs-tape .bs-pin i:nth-child(1) { background: var(--bs-coral); }
.bs-tape .bs-pin i:nth-child(2) { background: var(--bs-sun); }
.bs-tape .bs-pin i:nth-child(3) { background: var(--bs-mint); }
.bs-tape .bs-path { font-family: var(--bs-mono); font-size: 12.5px; color: var(--bs-ink-soft); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bs-tape .bs-path b { color: var(--bs-mint); }
.bs-tape .bs-badge-tape { margin-left: auto; font-size: 12px; color: var(--bs-ink-soft); display: flex; align-items: center; gap: 6px; }
.bs-tape .bs-badge-tape i { width: 8px; height: 8px; border-radius: 50%; background: var(--bs-mint); }

/* ---------- 面包屑 ---------- */
.bs-crumb { font-size: 12.5px; color: var(--bs-ink-faint); margin-bottom: 16px; }
.bs-crumb a { color: var(--bs-ink-soft); text-decoration: none; }
.bs-crumb a:hover { color: var(--bs-coral); }

/* ---------- 页头 ---------- */
.bs-hero { display: flex; align-items: flex-start; gap: 18px; flex-wrap: wrap; padding: 4px 2px 26px; }
.bs-hero .bs-emoji {
    width: 62px; height: 62px; flex: 0 0 62px;
    display: grid; place-items: center; font-size: 30px;
    background: var(--bs-sun-soft);
    border: 2px solid #fff;
    border-radius: 18px;
    box-shadow: var(--bs-shadow);
    transform: rotate(-3deg);
}
.bs-hero h1 { margin: 2px 0 8px; font-size: 28px; font-weight: 800; letter-spacing: .5px; }
.bs-hero p { margin: 0; color: var(--bs-ink-soft); max-width: 780px; }
.bs-hero p b { color: var(--bs-coral); }
.bs-chips { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 14px; }
.bs-chip {
    font-size: 12px; padding: 4px 13px; border-radius: 999px; font-weight: 600;
    background: var(--bs-paper); border: 1px solid var(--bs-line); color: var(--bs-ink-soft);
}
.bs-chip.coral { background: var(--bs-coral-soft); color: var(--bs-coral); border-color: transparent; }
.bs-chip.mint { background: var(--bs-mint-soft); color: var(--bs-mint); border-color: transparent; }
.bs-chip.sky { background: var(--bs-sky-soft); color: var(--bs-sky); border-color: transparent; }
.bs-chip.sun { background: var(--bs-sun-soft); color: var(--bs-sun); border-color: transparent; }

/* ---------- 网格 ---------- */
.bs-grid { display: grid; grid-template-columns: 380px 1fr; gap: 22px; align-items: start; }
.bs-grid-rev { grid-template-columns: 1fr 380px; }
@media (max-width: 920px) { .bs-grid, .bs-grid-rev { grid-template-columns: 1fr; } }

/* ---------- 贴纸卡片 ---------- */
.bs-card {
    background: var(--bs-paper);
    border: 1px solid var(--bs-line);
    border-radius: var(--bs-radius);
    box-shadow: var(--bs-shadow);
    overflow: hidden;
}
.bs-card + .bs-card { margin-top: 22px; }
.bs-card-head {
    display: flex; align-items: center; gap: 10px;
    padding: 15px 20px;
    background: var(--bs-paper-2);
    border-bottom: 2px dashed var(--bs-line-soft);
}
.bs-card-head h2 { margin: 0; font-size: 15.5px; font-weight: 800; }
.bs-card-head .bs-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--bs-coral); }
.bs-card-head .bs-dot.mint { background: var(--bs-mint); }
.bs-card-head .bs-dot.sky { background: var(--bs-sky); }
.bs-card-head .bs-dot.sun { background: var(--bs-sun); }
.bs-card-head .bs-dot.grape { background: var(--bs-grape); }
.bs-card-head .bs-tag-en { margin-left: auto; font-family: var(--bs-mono); font-size: 11px; color: var(--bs-ink-faint); letter-spacing: 1px; }
.bs-card-body { padding: 20px; }
.bs-card-body.tight { padding: 14px 20px; }

/* ---------- 表单 ---------- */
.bs-field { margin-bottom: 17px; }
.bs-field:last-child { margin-bottom: 0; }
.bs-field > label { display: block; font-size: 13.5px; font-weight: 700; color: var(--bs-ink-soft); margin-bottom: 8px; }
.bs-field > label .bs-hint { font-weight: 400; color: var(--bs-ink-faint); font-size: 12px; margin-left: 4px; }

.bs-input, .bs-select {
    width: 100%;
    background: var(--bs-paper-2);
    border: 2px solid var(--bs-line);
    color: var(--bs-ink);
    border-radius: var(--bs-radius-sm);
    padding: 11px 14px;
    font-size: 15px;
    font-family: var(--bs-mono);
    outline: none;
    transition: border-color .15s, box-shadow .15s;
    -webkit-appearance: none; appearance: none;
}
.bs-select {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%23b3a298' d='M6 8 0 0h12z'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 14px center;
    padding-right: 36px; cursor: pointer; font-family: var(--bs-font);
}
.bs-input:focus, .bs-select:focus { border-color: var(--bs-sky); box-shadow: 0 0 0 4px var(--bs-sky-soft); }
.bs-input::placeholder { color: var(--bs-ink-faint); }
.bs-input-wrap { position: relative; }
.bs-input-wrap .bs-unit { position: absolute; right: 14px; top: 50%; transform: translateY(-50%); color: var(--bs-ink-faint); font-size: 13px; pointer-events: none; }
.bs-input-wrap .bs-input { padding-right: 46px; }

.bs-row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 13px; }
.bs-row3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 13px; }
@media (max-width: 480px) { .bs-row2, .bs-row3 { grid-template-columns: 1fr; } }

/* 分段选择（药丸） */
.bs-seg { display: flex; flex-wrap: wrap; gap: 8px; }
.bs-seg button {
    border: 2px solid var(--bs-line); background: var(--bs-paper-2);
    color: var(--bs-ink-soft); padding: 8px 15px; border-radius: 999px;
    font-size: 13.5px; font-weight: 600; cursor: pointer; transition: all .15s;
    font-family: var(--bs-font);
}
.bs-seg button:hover { border-color: var(--bs-ink-faint); }
.bs-seg button.active { background: var(--bs-coral); border-color: var(--bs-coral); color: #fff; }
.bs-seg.mint button.active { background: var(--bs-mint); border-color: var(--bs-mint); }
.bs-seg.sky button.active { background: var(--bs-sky); border-color: var(--bs-sky); }
.bs-seg.sun button.active { background: var(--bs-sun); border-color: var(--bs-sun); }

/* 开关（糖果） */
.bs-switch { display: flex; align-items: center; gap: 11px; cursor: pointer; user-select: none; }
.bs-switch input { display: none; }
.bs-switch .bs-sw { width: 46px; height: 26px; border-radius: 999px; background: var(--bs-line); position: relative; transition: background .15s; flex: 0 0 46px; }
.bs-switch .bs-sw::after {
    content: ""; position: absolute; top: 3px; left: 3px;
    width: 20px; height: 20px; border-radius: 50%; background: #fff;
    box-shadow: 0 2px 5px rgba(0,0,0,.2); transition: transform .15s;
}
.bs-switch input:checked + .bs-sw { background: var(--bs-mint); }
.bs-switch input:checked + .bs-sw::after { transform: translateX(20px); }
.bs-switch .bs-sw-label { font-size: 13.5px; color: var(--bs-ink-soft); }

/* 滑块 */
.bs-range { display: flex; align-items: center; gap: 13px; }
.bs-range input[type=range] { flex: 1; accent-color: var(--bs-coral); }
.bs-range .bs-range-val { min-width: 70px; text-align: right; font-family: var(--bs-mono); color: var(--bs-coral); font-size: 14px; font-weight: 700; }

/* ---------- 按钮 ---------- */
.bs-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    border: none; cursor: pointer; border-radius: 999px;
    padding: 13px 22px; font-size: 15px; font-weight: 800;
    font-family: var(--bs-font);
    transition: transform .08s, filter .15s, box-shadow .15s;
}
.bs-btn:active { transform: translateY(1px) scale(.99); }
.bs-btn-primary {
    width: 100%;
    background: linear-gradient(135deg, var(--bs-coral), var(--bs-peach));
    color: #fff;
    box-shadow: 0 8px 22px var(--bs-coral-soft);
}
.bs-btn-primary:hover { filter: brightness(1.05); }
.bs-btn-mint { background: linear-gradient(135deg, var(--bs-mint), #46c9a4); color: #fff; }
.bs-btn-ghost { background: transparent; border: 2px solid var(--bs-line); color: var(--bs-ink-soft); }
.bs-btn-ghost:hover { border-color: var(--bs-ink-faint); color: var(--bs-ink); }
.bs-btn-sm { padding: 8px 15px; font-size: 13px; }
.bs-btn:disabled { opacity: .45; cursor: not-allowed; }

/* ---------- 主结果 ---------- */
.bs-verdict {
    text-align: center; padding: 26px 22px;
    background:
        radial-gradient(420px 170px at 50% 0%, var(--bs-sun-soft), transparent 70%),
        var(--bs-paper);
    border: 1px solid var(--bs-line);
    border-radius: var(--bs-radius);
    box-shadow: var(--bs-shadow);
    margin-bottom: 22px;
}
.bs-verdict .bs-v-label { font-size: 12.5px; letter-spacing: 2px; color: var(--bs-ink-faint); margin-bottom: 8px; }
.bs-verdict .bs-v-num { font-family: var(--bs-mono); font-size: 42px; font-weight: 800; color: var(--bs-coral); line-height: 1.2; word-break: break-all; }
.bs-verdict .bs-v-num small { font-size: 16px; color: var(--bs-ink-soft); font-weight: 500; margin-left: 4px; }
.bs-verdict .bs-v-num.mint { color: var(--bs-mint); }
.bs-verdict .bs-v-num.sky { color: var(--bs-sky); }
.bs-verdict .bs-v-conclusion { display: inline-block; margin-top: 12px; font-size: 15px; font-weight: 800; padding: 6px 18px; border-radius: 999px; }
.bs-verdict .bs-v-sub { margin-top: 10px; font-size: 13px; color: var(--bs-ink-soft); }

/* ---------- 指标瓦片 ---------- */
.bs-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(148px, 1fr)); gap: 13px; margin-bottom: 22px; }
.bs-tile {
    background: var(--bs-paper); border: 1px solid var(--bs-line);
    border-radius: 16px; padding: 15px 16px;
    position: relative; overflow: hidden;
}
.bs-tile::after {
    content: ""; position: absolute; right: -14px; top: -14px;
    width: 46px; height: 46px; border-radius: 50%; background: var(--bs-tint);
}
.bs-tile .bs-tile-label { font-size: 12px; color: var(--bs-ink-faint); margin-bottom: 6px; }
.bs-tile .bs-tile-num { font-family: var(--bs-mono); font-size: 21px; font-weight: 800; color: var(--bs-ink); }
.bs-tile .bs-tile-num small { font-size: 12px; color: var(--bs-ink-soft); font-weight: 400; }
.bs-tile.coral .bs-tile-num { color: var(--bs-coral); }
.bs-tile.mint .bs-tile-num { color: var(--bs-mint); }
.bs-tile.sky .bs-tile-num { color: var(--bs-sky); }
.bs-tile.sun .bs-tile-num { color: var(--bs-sun); }
.bs-tile.grape .bs-tile-num { color: var(--bs-grape); }
.bs-tile .bs-tile-sub { font-size: 11.5px; color: var(--bs-ink-faint); margin-top: 4px; }

/* ---------- 进度条 ---------- */
.bs-progress { height: 11px; background: var(--bs-track); border-radius: 999px; overflow: hidden; }
.bs-progress > span { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--bs-coral), var(--bs-peach)); transition: width .4s ease; }
.bs-progress.mint > span { background: linear-gradient(90deg, var(--bs-mint), #5adcb6); }
.bs-progress.sky > span { background: linear-gradient(90deg, var(--bs-sky), #83bbff); }
.bs-progress.sun > span { background: linear-gradient(90deg, var(--bs-sun), #ffce7a); }
.bs-meter-row { margin-bottom: 15px; }
.bs-meter-row:last-child { margin-bottom: 0; }
.bs-meter-top { display: flex; justify-content: space-between; font-size: 13px; margin-bottom: 7px; }
.bs-meter-top .k { color: var(--bs-ink-soft); }
.bs-meter-top .v { font-family: var(--bs-mono); font-weight: 700; color: var(--bs-ink); }

/* ---------- 表格 ---------- */
.bs-table-wrap { overflow-x: auto; border-radius: var(--bs-radius-sm); border: 1px solid var(--bs-line); }
table.bs-table { width: 100%; border-collapse: collapse; font-size: 13.5px; min-width: 460px; }
.bs-table th {
    text-align: left; padding: 12px 14px; font-size: 12.5px; color: var(--bs-ink-faint);
    background: var(--bs-paper-2); border-bottom: 2px solid var(--bs-line); white-space: nowrap;
}
.bs-table td { padding: 12px 14px; border-bottom: 1px dashed var(--bs-line-soft); color: var(--bs-ink); }
.bs-table tbody tr:last-child td { border-bottom: none; }
.bs-table tbody tr:hover { background: var(--bs-tint); }
.bs-table .num { font-family: var(--bs-mono); text-align: right; white-space: nowrap; }
.bs-table tfoot td { padding: 12px 14px; font-weight: 800; border-top: 2px solid var(--bs-line); background: var(--bs-paper-2); }
.bs-table .pos { color: var(--bs-mint); }
.bs-table .neg { color: var(--bs-coral); }

/* ---------- 徽标 ---------- */
.bs-pill {
    display: inline-flex; align-items: center; gap: 5px;
    font-size: 12px; padding: 3px 12px; border-radius: 999px; font-weight: 700;
}
.bs-pill.coral { background: var(--bs-coral-soft); color: var(--bs-coral); }
.bs-pill.mint { background: var(--bs-mint-soft); color: var(--bs-mint); }
.bs-pill.sky { background: var(--bs-sky-soft); color: var(--bs-sky); }
.bs-pill.sun { background: var(--bs-sun-soft); color: var(--bs-sun); }
.bs-pill.grape { background: var(--bs-grape-soft); color: var(--bs-grape); }
.bs-pill.gray { background: var(--bs-tint-2); color: var(--bs-ink-soft); }

/* ---------- 建议清单 ---------- */
.bs-tips { list-style: none; margin: 0; padding: 0; }
.bs-tips li { display: flex; gap: 12px; padding: 13px 0; border-bottom: 1px dashed var(--bs-line-soft); }
.bs-tips li:last-child { border-bottom: none; padding-bottom: 0; }
.bs-tips li:first-child { padding-top: 0; }
.bs-tips .bs-tip-ic {
    flex: 0 0 32px; width: 32px; height: 32px; border-radius: 10px;
    display: grid; place-items: center; font-size: 15px;
    background: var(--bs-sun-soft);
}
.bs-tips .bs-tip-ic.coral { background: var(--bs-coral-soft); }
.bs-tips .bs-tip-ic.mint { background: var(--bs-mint-soft); }
.bs-tips .bs-tip-ic.sky { background: var(--bs-sky-soft); }
.bs-tips .bs-tip-body { flex: 1; font-size: 13.8px; }
.bs-tips .bs-tip-body .t { font-weight: 800; margin-bottom: 2px; }
.bs-tips .bs-tip-body .d { color: var(--bs-ink-soft); font-size: 13px; }

/* ---------- 动态明细行 ---------- */
.bs-line-item { display: grid; grid-template-columns: 1fr 120px 38px; gap: 9px; align-items: center; margin-bottom: 9px; }
.bs-line-item.bs-line-3 { grid-template-columns: 110px 1fr 120px 38px; }
.bs-line-item .bs-del {
    width: 38px; height: 42px; border-radius: 11px; border: 2px solid var(--bs-line);
    background: transparent; color: var(--bs-ink-faint); cursor: pointer; font-size: 16px;
}
.bs-line-item .bs-del:hover { color: var(--bs-coral); border-color: var(--bs-coral); }
.bs-add-row {
    width: 100%; margin-top: 5px; padding: 10px;
    background: var(--bs-tint); border: 2px dashed var(--bs-line);
    border-radius: var(--bs-radius-sm); color: var(--bs-ink-soft); cursor: pointer; font-size: 13px;
}
.bs-add-row:hover { border-color: var(--bs-coral); color: var(--bs-coral); }

/* ---------- 空状态 ---------- */
.bs-empty { padding: 44px 24px; text-align: center; color: var(--bs-ink-faint); border: 2px dashed var(--bs-line); border-radius: var(--bs-radius); background: var(--bs-tint); }
.bs-empty .bs-empty-ic { font-size: 40px; margin-bottom: 12px; }
.bs-empty p { margin: 0; font-size: 13.8px; max-width: 440px; margin: 0 auto; }

/* ---------- 提示/FAQ ---------- */
.bs-note {
    margin-top: 24px; padding: 17px 20px;
    background: var(--bs-sky-soft);
    border: 1px solid var(--bs-line);
    border-left: 5px solid var(--bs-sky);
    border-radius: var(--bs-radius-sm);
    font-size: 13px; color: var(--bs-ink-soft);
}
.bs-note b { color: var(--bs-ink); }
.bs-note.coral { background: var(--bs-coral-soft); border-left-color: var(--bs-coral); }

.bs-faq { margin-top: 22px; }
.bs-faq details {
    background: var(--bs-paper); border: 1px solid var(--bs-line);
    border-radius: var(--bs-radius-sm); margin-bottom: 11px; overflow: hidden;
}
.bs-faq summary {
    padding: 14px 18px; cursor: pointer; font-size: 14px; font-weight: 700;
    list-style: none; display: flex; justify-content: space-between; align-items: center;
}
.bs-faq summary::-webkit-details-marker { display: none; }
.bs-faq summary::after { content: "＋"; color: var(--bs-coral); font-size: 18px; }
.bs-faq details[open] summary::after { content: "－"; }
.bs-faq details > div { padding: 0 18px 15px; color: var(--bs-ink-soft); font-size: 13.5px; }

/* ---------- 条形分布（CSS 图表） ---------- */
.bs-barchart { display: flex; flex-direction: column; gap: 12px; }
.bs-barchart .bs-bc-row { display: grid; grid-template-columns: 100px 1fr 96px; gap: 11px; align-items: center; font-size: 12.5px; }
.bs-barchart .bs-bc-row .k { color: var(--bs-ink-soft); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bs-barchart .bs-bc-row .bar { height: 17px; background: var(--bs-track); border-radius: 999px; overflow: hidden; }
.bs-barchart .bs-bc-row .bar i { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--bs-sky), #83bbff); }
.bs-barchart .bs-bc-row .bar i.coral { background: linear-gradient(90deg, var(--bs-coral), var(--bs-peach)); }
.bs-barchart .bs-bc-row .bar i.mint { background: linear-gradient(90deg, var(--bs-mint), #5adcb6); }
.bs-barchart .bs-bc-row .bar i.sun { background: linear-gradient(90deg, var(--bs-sun), #ffce7a); }
.bs-barchart .bs-bc-row .v { font-family: var(--bs-mono); color: var(--bs-ink); text-align: right; }

/* 环形图（conic-gradient） */
.bs-donut-wrap { display: flex; align-items: center; gap: 24px; flex-wrap: wrap; }
.bs-donut {
    width: 156px; height: 156px; border-radius: 50%; flex: 0 0 156px;
    display: grid; place-items: center; position: relative;
}
.bs-donut::before { content: ""; position: absolute; inset: 19px; border-radius: 50%; background: var(--bs-hole); box-shadow: inset 0 0 0 1px var(--bs-line-soft); }
.bs-donut .bs-donut-center { position: relative; text-align: center; }
.bs-donut .bs-donut-center b { font-family: var(--bs-mono); font-size: 18px; display: block; }
.bs-donut .bs-donut-center span { font-size: 11px; color: var(--bs-ink-faint); }
.bs-legend { display: flex; flex-direction: column; gap: 9px; font-size: 13px; flex: 1; min-width: 150px; }
.bs-legend .lg-row { display: flex; align-items: center; gap: 9px; color: var(--bs-ink-soft); }
.bs-legend .lg-row i { width: 12px; height: 12px; border-radius: 4px; flex: 0 0 12px; }
.bs-legend .lg-row .v { margin-left: auto; font-family: var(--bs-mono); color: var(--bs-ink); }

/* 打印优化 */
@media print {
    .buyersuite { background: #fff; color: #111; }
    .bs-card, .bs-tile, .bs-verdict { box-shadow: none; border-color: #ccc; background: #fff; }
}
