:root { --red:#b71928; --deep:#86101c; --paper:#fffaf2; --canvas:#f6efe4; --ink:#302523; --muted:#786e68; --line:#e8d9ca; --gold:#d9a147; --green:#197757; --alert:#a75c09; }
* { box-sizing:border-box; }
html { background:var(--canvas); }
body { min-width:320px; margin:0; color:var(--ink); background:var(--canvas); font-family:"PingFang SC","Microsoft YaHei",Arial,sans-serif; }
button,input { font:inherit; } button { -webkit-tap-highlight-color:transparent; } [hidden] { display:none !important; }
.loading,.auth-screen { display:grid; min-height:100dvh; place-items:center; padding:24px; color:var(--muted); }
.auth-card { width:min(100%,420px); padding:28px 24px; border:1px solid var(--line); border-radius:18px; text-align:center; background:#fff; box-shadow:0 14px 35px #5f311818; }
.auth-seal { display:grid; overflow:hidden; width:58px; height:58px; margin:0 auto 14px; place-items:center; border:1px solid #e3656f; border-radius:50%; background:#c81728; }
.solid-red-avatar { display:block; width:100%; height:100%; border-radius:50%; background:#c81728; }
.brand-avatar { display:block; width:100%; height:100%; object-fit:contain; background:#c81728; }
.auth-card h1 { margin:0; color:var(--deep); font-size:21px; } .auth-card p { margin:12px 0 18px; color:var(--muted); line-height:1.7; font-size:14px; }
.primary-button,.secondary-button { width:100%; min-height:45px; border:0; border-radius:10px; cursor:pointer; font-weight:700; } .primary-button { color:#fff; background:linear-gradient(125deg,var(--red),#d43745); box-shadow:0 4px 12px #a3132433; } .primary-button:disabled { cursor:not-allowed; opacity:.48; box-shadow:none; } .secondary-button { color:var(--red); border:1px solid #d5a8a1; background:#fff8f6; }
.topbar { position:sticky; top:0; z-index:30; color:#fff; background:linear-gradient(112deg,var(--deep),var(--red)); box-shadow:0 3px 12px #60101c2a; }
.topbar-inner { display:flex; max-width:1180px; min-height:73px; margin:auto; padding:13px max(20px,calc((100vw - 1180px)/2)); align-items:center; justify-content:space-between; gap:15px; }
.brand { display:flex; min-width:0; align-items:center; gap:11px; } .seal { display:grid; overflow:hidden; flex:0 0 auto; width:40px; height:40px; place-items:center; border:1px solid #e3656f; border-radius:50%; background:#c81728; }
.brand h1 { overflow:hidden; margin:0; text-overflow:ellipsis; white-space:nowrap; font-size:20px; letter-spacing:.04em; } .brand p { margin:3px 0 0; color:#ffe5ba; font-size:12px; }
.user-menu { display:flex; flex:0 0 auto; align-items:center; gap:9px; } .user-name { max-width:150px; overflow:hidden; color:#ffe9c5; text-overflow:ellipsis; white-space:nowrap; font-size:13px; } .role-tag { padding:4px 7px; border:1px solid #f6cc83; border-radius:6px; color:#ffe7be; font-size:11px; } .text-button { border:0; padding:6px; cursor:pointer; color:#fff4db; background:transparent; font-size:12px; }
main { max-width:1180px; margin:0 auto; padding:25px 20px 100px; }
.tabs { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; max-width:790px; margin:0 auto 27px; } .tab { min-height:68px; padding:10px 14px; cursor:pointer; text-align:left; border:1px solid var(--line); border-radius:13px; color:var(--ink); background:#fff; } .tab strong { display:block; font-size:15px; } .tab span { display:block; margin-top:4px; color:var(--muted); font-size:12px; } .tab.active { padding:9px 13px; border:2px solid var(--red); color:var(--deep); background:#fff6ee; box-shadow:0 4px 12px #94122218; }
.section-heading { display:flex; margin:0 0 15px; align-items:baseline; justify-content:space-between; gap:15px; } .section-heading h2 { margin:0; color:#3a2824; font-size:20px; } .hint { color:var(--muted); font-size:13px; }
.gift-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:15px; } .gift-card { position:relative; overflow:hidden; padding:0; cursor:pointer; text-align:left; border:1px solid var(--line); border-radius:14px; background:#f8f0e5; transition:.18s; } .gift-card:hover { transform:translateY(-2px); box-shadow:0 9px 20px #5630151c; } .gift-card.selected { outline:3px solid var(--red); outline-offset:1px; } .gift-card img { display:block; width:100%; height:188px; padding:0; object-fit:cover; object-position:center; background:#f8f0e5; transform:scale(1.16); } .gift-card.gift-69 img { transform:none; object-fit:contain; } .gift-info { position:relative; z-index:1; padding:12px 13px 14px; background:#fff; } .gift-name { min-height:43px; margin:0; font-size:15px; font-weight:700; line-height:1.42; } .gift-spec { margin:5px 0 0; color:var(--muted); font-size:12px; }
.check { display:none; position:absolute; top:9px; right:9px; width:26px; height:26px; place-items:center; border-radius:50%; color:#fff; background:var(--red); font-size:14px; font-weight:800; box-shadow:0 2px 7px #85051655; } .selected .check { display:grid; }
.gift-summary { margin-top:20px; padding:17px 19px; border:1px solid #ebd7a4; border-left:5px solid var(--gold); border-radius:12px; background:linear-gradient(110deg,#fff9e9,#fff); } .gift-summary h3 { margin:0; color:#746038; font-size:14px; } .gift-price { margin-top:3px; color:var(--red); font-size:30px; font-weight:800; } .gift-system { margin:7px 0 0; color:var(--muted); font-size:13px; line-height:1.7; }
.quote-layout { display:grid; grid-template-columns:minmax(0,1fr) 282px; align-items:start; gap:24px; } .product-groups { min-width:0; } .product-group + .product-group { margin-top:25px; } .product-group-heading { display:flex; margin:0 0 10px; align-items:baseline; justify-content:space-between; gap:12px; } .product-group-heading h3 { margin:0; font-size:15px; } .product-group-heading span { color:var(--muted); font-size:12px; } .product-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; } .product { position:relative; display:grid; grid-template-columns:76px minmax(0,1fr); min-height:136px; gap:10px; padding:10px; border:1px solid var(--line); border-radius:12px; background:#fff; } .product:hover { border-color:#d8af76; } .product.selected { padding:9px; border:2px solid var(--red); background:#fff9f0; } .product-image-frame { width:76px; height:105px; align-self:start; display:flex; align-items:center; justify-content:center; overflow:hidden; border-radius:7px; background:#faf4eb; } .product-image-frame img { display:block; width:100%; height:100%; max-width:100%; max-height:100%; object-fit:contain; object-position:center; } .product-body { min-width:0; } .product-name { font-size:14px; font-weight:700; line-height:1.4; } .product-id { margin-top:5px; color:var(--muted); font-size:11px; } .product-toggle { width:100%; min-height:34px; margin-top:9px; cursor:pointer; touch-action:manipulation; border:1px solid #d4a49e; border-radius:7px; color:var(--red); background:#fff7f5; font-size:12px; font-weight:700; } .product.selected .product-toggle { color:#fff; border-color:var(--red); background:var(--red); } .catalog-tag { display:inline-block; margin-top:10px; padding:4px 7px; border-radius:5px; color:#786e68; background:#f7eee4; font-size:11px; } .catalog-channel-only { border:1px solid #d88f91; color:#a50f19; background:#fff1f1; font-weight:800; } .quantity-row { display:none; align-items:center; gap:7px; margin-top:8px; color:#665b54; font-size:12px; } .product.selected .quantity-row { display:flex; } .quantity { width:58px; min-height:31px; border:1px solid #d4c2b2; border-radius:6px; text-align:center; background:#fff; } .quantity:focus { outline:2px solid #cc343c33; border-color:var(--red); }
.product-image-frame.product-image-featured img { object-fit:cover; object-position:center; transform:scale(1.48); transform-origin:center; }
.quote-panel { position:sticky; top:92px; overflow:hidden; border:1px solid #e6d5c5; border-radius:14px; background:#fffdf9; box-shadow:0 7px 18px #6a392015; } .panel-title { padding:16px 16px 12px; border-bottom:1px solid #eadccf; background:#fff4e4; } .panel-title h3 { margin:0; font-size:16px; } .selected-count { display:block; margin-top:5px; color:#956827; font-size:12px; }
.bag { padding:15px 16px 12px; border-bottom:1px solid #eaded3; } .bag strong { display:block; margin-bottom:10px; font-size:14px; } .bag-options { display:grid; grid-template-columns:1fr 1fr; gap:7px; } .bag-option { position:relative; padding:9px 5px; cursor:pointer; text-align:center; border:1px solid #dcc8b4; border-radius:8px; color:#5e5045; background:#fff; font-size:12px; } .bag-option input { position:absolute; opacity:0; } .bag-option:has(input:checked) { padding:8px 4px; border:2px solid var(--red); color:var(--red); background:#fff5ee; font-weight:700; } .bag-note { margin:9px 0 0; color:var(--muted); font-size:11px; line-height:1.5; }
.submit-area { padding:16px; } .submit-area .primary-button { min-height:47px; } .submit-note { margin:8px 0 0; color:var(--muted); font-size:11px; line-height:1.55; }
.quote-result { margin:0 16px 16px; padding:14px; border-radius:10px; color:#fff; background:linear-gradient(135deg,var(--red),#8e0e1d); } .quote-result .label { font-size:12px; opacity:.86; } .quote-result .price { margin:3px 0 2px; font-size:29px; font-weight:800; } .quote-result .meta { color:#ffe0a7; font-size:11px; }
.notice { margin:0 16px 16px; padding:10px 11px; border-radius:8px; color:#80510f; border:1px solid #eed4a0; background:#fff8e8; font-size:12px; line-height:1.55; } .notice.error { color:#9c2833; border-color:#edc3c7; background:#fff2f3; } .notice.success { color:#176642; border-color:#bce4cf; background:#f0fcf5; }
.admin-top { display:flex; margin-bottom:16px; align-items:center; justify-content:space-between; gap:12px; } .admin-actions { display:flex; flex:0 0 auto; gap:8px; } .admin-actions .secondary-button { display:inline-grid; width:auto; min-height:39px; padding:8px 12px; place-items:center; text-decoration:none; white-space:nowrap; } .admin-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.4fr); gap:18px; } .admin-card { overflow:hidden; border:1px solid var(--line); border-radius:13px; background:#fff; } .admin-card h3 { margin:0; padding:14px 16px; border-bottom:1px solid var(--line); background:#fff7ef; font-size:15px; } .admin-content { padding:15px; }
.authorize-form { display:grid; gap:9px; } .field-label { color:var(--muted); font-size:12px; } .field { width:100%; min-height:39px; padding:8px 10px; border:1px solid #d9c8b7; border-radius:8px; background:#fff; } .field:focus { outline:2px solid #cb273133; border-color:var(--red); } .mini-button { min-height:35px; padding:7px 10px; cursor:pointer; border:1px solid #d4a49e; border-radius:7px; color:var(--red); background:#fff7f5; font-size:12px; font-weight:700; }
.pending-requests { margin:16px 0 14px; padding:12px; border:1px solid #edd3a8; border-radius:10px; background:#fff9eb; } .pending-requests h4,.list-heading { margin:0 0 8px; color:#694419; font-size:13px; } .list-heading { margin-top:14px; color:var(--ink); }
.list { display:grid; gap:9px; } .list-row { display:flex; padding:10px 0; align-items:center; justify-content:space-between; gap:10px; border-bottom:1px solid #f0e7de; } .list-row:last-child { border-bottom:0; } .row-name { font-size:13px; font-weight:700; } .row-id,.row-meta { margin-top:3px; color:var(--muted); font-size:11px; } .status { display:inline-block; margin-top:4px; padding:2px 5px; border-radius:4px; color:#31715a; background:#eaf8f0; font-size:10px; } .status.locked { color:#9b2e38; background:#fff0f1; }
.record { padding:10px 0; border-bottom:1px solid #f0e7de; } .record:last-child { border-bottom:0; } .record strong { font-size:12px; } .record p { margin:4px 0 0; color:var(--muted); font-size:11px; line-height:1.5; } .record .record-items { color:#665b54; }
.empty { padding:25px 12px; color:var(--muted); text-align:center; font-size:13px; }
.source-status { margin:8px 0 0; padding:8px 10px; border:1px solid #eed6ad; border-radius:8px; color:#6d552f; background:#fff8eb; font-size:11px; line-height:1.5; }
.source-status.ready { border-color:#bedfca; color:#286447; background:#f1fbf4; }
.source-status span { color:#9a6a2c; }
/* 以飞书当前打开区域的真实宽度自动调整，而不是依赖设备型号。 */
@media (max-width:960px) { .gift-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .quote-layout,.admin-grid { grid-template-columns:1fr; } .product-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .quote-panel { position:static; order:-1; } }
@media (max-width:760px) { body { min-width:0; padding-bottom:env(safe-area-inset-bottom); } .topbar-inner { min-height:58px; padding:9px max(12px,env(safe-area-inset-left)) 9px max(12px,env(safe-area-inset-right)); gap:7px; } .seal { width:31px; height:31px; font-size:17px; } .brand { gap:8px; } .brand h1 { max-width:42vw; font-size:16px; } .brand p,.user-name { display:none; } .user-menu { gap:3px; } .role-tag { padding:3px 5px; font-size:10px; } .text-button { padding:6px 4px; font-size:12px; } main { padding:14px 11px calc(26px + env(safe-area-inset-bottom)); }
  .tabs { position:sticky; top:58px; z-index:20; gap:6px; margin:0 -1px 16px; padding:8px 0; background:#f6efe4f5; } .tab { min-height:54px; padding:7px 6px; border-radius:10px; text-align:center; } .tab.active { padding:6px 5px; } .tab strong { font-size:12px; line-height:1.2; } .tab span { display:none; } .section-heading { display:block; margin:3px 2px 11px; } .section-heading h2 { font-size:18px; } .hint { display:block; margin-top:4px; font-size:11px; }
  .gift-grid { gap:9px; } .gift-card { border-radius:11px; } .gift-card img { height:138px; padding:5px; } .gift-info { padding:9px 10px 11px; } .gift-name { min-height:0; font-size:13px; } .gift-spec { font-size:11px; } .check { top:7px; right:7px; width:23px; height:23px; } .gift-summary { margin-top:14px; padding:14px; } .gift-price { font-size:26px; } .gift-system { font-size:12px; }
  #quote-section { padding-bottom:0; } .quote-layout { display:block; } .product-group + .product-group { margin-top:20px; } .product-group-heading { display:block; } .product-group-heading span { display:block; margin-top:3px; font-size:11px; } .product-grid { grid-template-columns:1fr; gap:8px; } .product { grid-template-columns:82px minmax(0,1fr); min-height:132px; padding:8px; } .product.selected { padding:7px; } .product-image-frame { width:82px; height:112px; } .product-name { font-size:14px; } .product-id { margin-top:4px; } .product-toggle { min-height:40px; margin-top:8px; font-size:13px; } .quantity { min-height:36px; width:64px; font-size:15px; }
  .quote-panel { position:static; z-index:auto; right:auto; bottom:auto; left:auto; border-radius:14px; box-shadow:0 8px 25px #4c1f2842; } .panel-title { display:flex; padding:10px 13px 7px; align-items:baseline; justify-content:space-between; gap:9px; } .panel-title h3 { font-size:14px; } .selected-count { margin:0; white-space:nowrap; font-size:11px; }
  .submit-area { padding:9px 13px 10px; } .submit-area .primary-button { min-height:42px; } .submit-note { display:none; } .quote-result { display:grid; grid-template-columns:1fr auto; margin:0 13px 10px; padding:9px 12px; align-items:center; } .quote-result .price { grid-row:1 / span 2; grid-column:2; margin:0; font-size:23px; } .quote-result .meta { margin-top:2px; } .notice { margin:0 13px 10px; padding:8px 10px; font-size:11px; }
  .admin-top { align-items:flex-start; flex-direction:column; } .admin-actions { width:100%; } .admin-actions .secondary-button { flex:1; min-height:42px; } .admin-grid { gap:12px; } .admin-content { padding:12px; } .record strong { font-size:11px; }
}
@media (max-width:380px) { .brand h1 { max-width:36vw; font-size:15px; } .text-button { font-size:11px; } .gift-card img { height:124px; } .bag { gap:6px; } .bag-option { font-size:10px; } }

/* 27 版礼盒报价：报价区不悬浮覆盖产品，确保手机端可完整勾选。 */
.gift-card img { height:242px; }
.gift-products { margin-top:15px; padding-top:13px; border-top:1px solid #eadccf; }
.gift-products h4 { margin:0 0 10px; color:#67451c; font-size:14px; }
.gift-product-grid { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:10px; }
.gift-product { display:grid; min-width:0; gap:6px; text-align:center; color:#5f5148; font-size:11px; line-height:1.45; }
.gift-product img { width:100%; height:86px; padding:4px; border:1px solid #eddfd0; border-radius:8px; object-fit:contain; background:#fff; }
.gift-product span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.minimum-callout { display:flex; margin:0 0 13px; padding:12px 14px; align-items:center; gap:12px; border:1px solid #e3b1a6; border-left:5px solid var(--red); border-radius:11px; color:#7e2830; background:#fff6f2; }
.minimum-callout strong { flex:0 0 auto; font-size:16px; }
.minimum-callout span { color:#765c52; font-size:12px; line-height:1.55; }
.minimum-callout.ready { border-color:#e0bf7c; border-left-color:var(--gold); color:#795715; background:#fff9eb; }
.selection-progress { display:none; }
.box-section { padding:15px 16px 12px; border-bottom:1px solid #eaded3; }
.box-section > strong { display:block; margin-bottom:10px; font-size:14px; }
.box-selector { display:grid; gap:10px; }
.box-option-card { position:relative; display:grid; grid-template-columns:132px minmax(0,1fr); gap:11px; min-height:128px; padding:10px; cursor:pointer; border:1px solid #dcc8b4; border-radius:10px; background:#fff; }
.box-option-card input { position:absolute; opacity:0; pointer-events:none; }
.box-option-card.selected { padding:7px; border:2px solid var(--red); background:#fff7f3; box-shadow:0 3px 10px #9c14221c; }
.box-visual { position:relative; display:grid; grid-template-rows:minmax(0,1fr) auto; overflow:hidden; min-height:128px; border-radius:8px; color:#fff; background-color:#f6efe4; box-shadow:inset 0 0 0 1px #d2a18d; font-size:12px; font-weight:800; text-align:center; }
.box-visual img { display:block; box-sizing:border-box; width:100%; height:100%; min-height:0; padding:7px 6px 3px; object-fit:contain; object-position:center; }
.box-visual::before,.box-visual::after { display:none; }
.box-visual span { position:relative; z-index:1; width:100%; padding:6px 3px; background:#8c101dcc; text-shadow:0 1px 2px #4f0610; }
.box-visual.premium span { background:#8c101dcc; }
.box-copy { min-width:0; }
.box-copy strong { display:block; color:#4b322c; font-size:13px; }
.box-copy p { margin:3px 0 0; color:#75665d; font-size:10px; line-height:1.38; }
.self-box-designs { margin:0 0 28px; padding:0 0 24px; border-bottom:1px solid var(--line); }
.self-box-design-heading { display:flex; align-items:baseline; justify-content:space-between; gap:12px; }
.self-box-design-heading h3 { margin:0; color:#4b322c; font-size:17px; }
.self-box-design-heading p { margin:0; color:var(--muted); font-size:12px; }
.self-box-design-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; margin-top:12px; }
.self-box-design { min-width:0; margin:0; overflow:hidden; border:1px solid var(--line); border-radius:13px; background:#fff; }
.self-box-design img { display:block; width:100%; aspect-ratio:1.28 / 1; object-fit:cover; background:#f6efe4; }
.self-box-design figcaption { padding:11px 12px 12px; }
.self-box-design figcaption strong { display:block; color:#4b322c; font-size:14px; }
.self-box-design figcaption span { display:block; margin-top:4px; color:var(--muted); font-size:12px; }
.box-note { margin:10px 0 0; color:var(--muted); font-size:11px; }
.confirm-button { margin-top:9px; min-height:43px; }
.confirm-button:disabled { cursor:not-allowed; opacity:.48; }
.selection-summary { padding:0 16px 16px; }
.selection-summary h4 { margin:0 -16px 12px; padding:13px 16px 10px; border-top:1px solid #eaded3; color:#51362f; font-size:14px; }
.summary-stats { display:grid; grid-template-columns:repeat(3,1fr); gap:6px; }
.summary-stats > div { display:grid; min-height:63px; padding:8px 4px; place-items:center; border:1px solid #ecdcc9; border-radius:8px; background:#fff8ef; }
.summary-stats strong { color:var(--red); font-size:18px; line-height:1.1; }
.summary-stats span { margin-top:4px; color:var(--muted); font-size:10px; }
.selected-lines { display:grid; gap:0; max-height:215px; margin-top:11px; overflow:auto; border-top:1px solid #eaded3; }
.selected-lines div { display:flex; padding:8px 0; justify-content:space-between; gap:8px; border-bottom:1px solid #f0e6dc; color:#5c4a43; font-size:11px; line-height:1.45; }
.selected-lines span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.selected-lines b { flex:0 0 auto; color:var(--red); }
.selected-lines p { margin:9px 0 0; color:var(--muted); font-size:11px; }
.result-actions { margin:0 16px 13px; }
.result-actions .secondary-button { min-height:39px; font-size:12px; }
.combination-notice { display:grid; gap:4px; margin:0 16px 13px; padding:11px 12px; border:1px solid #e8c66c; border-radius:9px; color:#785413; background:#fff8df; font-size:12px; line-height:1.55; }
.combination-notice strong { color:#9a1827; font-size:13px; }
.duplicate-result { margin:0 16px 16px; }
.duplicate-result .combination-notice { margin:0; }
.combination-notice.duplicate { border:4px solid #b81022; border-left-width:10px; background:linear-gradient(135deg,#fff0c9,#fff8e8); box-shadow:0 9px 24px #8f122536; padding:22px 20px; color:#5f3110; font-size:17px; font-weight:700; line-height:1.7; }
.combination-notice.duplicate strong { color:#a20e20; font-size:24px; line-height:1.25; }
.combination-notice.unavailable { border-color:#d7bd93; color:#755e43; background:#fffaf1; }

/* 将“本次提报”作为独立的确认卡片，与左侧产品清单明确区分。 */
#quote-section .quote-panel { border:2px solid #b81a2b; background:linear-gradient(180deg,#fff8ef 0%,#fffdf9 34%,#fff 100%); box-shadow:0 16px 34px #8f14252b, inset 0 0 0 3px #f4d9a2; }
#quote-section .panel-title { padding:17px 16px 14px; border-bottom:1px solid #8e101f; color:#fff; background:linear-gradient(125deg,#8f0c1d,#ce2637); }
#quote-section .panel-title h3 { color:#fff; letter-spacing:.04em; }
#quote-section .selected-count { color:#ffe2a6; font-weight:700; }
#quote-section .box-section { margin:12px; padding:14px; border:1px solid #ead2ae; border-radius:10px; background:#fff; }
#quote-section .box-section > strong { color:#7f1d2b; }
#quote-section .quote-result { box-shadow:0 5px 14px #8d132029; }
#quote-section .submit-area { margin-top:2px; border-top:1px solid #ead7c3; background:#fff7ee; }
#quote-section .selection-summary { margin:0 12px 12px; padding:0 14px 14px; border:1px solid #ecd7bb; border-radius:10px; background:#fff; }
#quote-section .selection-summary h4 { margin:0 -14px 12px; padding:12px 14px 10px; border-top:0; border-bottom:1px solid #ecd7bb; color:#7f1d2b; }

@media (max-width:960px) {
  .quote-panel { position:static; order:initial; margin-top:20px; }
  .gift-product-grid { grid-template-columns:repeat(5,minmax(0,1fr)); }
}
@media (max-width:760px) {
  .gift-card img { height:174px; }
  .gift-products { margin-top:12px; }
  .gift-product-grid { grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
  .gift-product img { height:76px; }
  .gift-product span { font-size:10px; }
  #quote-section { padding-bottom:0; }
  .minimum-callout { display:block; margin:0 0 10px; padding:10px 12px; }
  .minimum-callout strong { display:block; margin-bottom:4px; font-size:15px; }
  .minimum-callout span { display:block; font-size:11px; }
  .selection-progress { display:block; margin:-2px 0 11px; color:#8b5d24; font-size:12px; }
  .selection-progress b { color:var(--red); font-size:16px; }
  .quote-layout { display:block; }
  .quote-panel { position:static; z-index:auto; right:auto; bottom:auto; left:auto; margin-top:18px; border-radius:13px; box-shadow:0 7px 18px #6a392015; }
  .panel-title { display:flex; padding:13px; align-items:baseline; justify-content:space-between; gap:9px; }
  .panel-title h3 { font-size:16px; }
  .selected-count { margin:0; font-size:12px; }
  .box-section { padding:13px; }
  .box-selector { gap:9px; }
  .box-option-card { grid-template-columns:132px minmax(0,1fr); min-height:128px; }
  .box-visual { min-height:128px; font-size:12px; }
  .box-copy strong { font-size:14px; }
  .box-copy p { font-size:10px; }
  .quote-result { display:grid; grid-template-columns:minmax(0,1fr) auto; margin:0 13px 12px; padding:11px 12px; align-items:center; }
  .quote-result .price { grid-row:1 / span 2; grid-column:2; margin:0; font-size:22px; white-space:nowrap; }
  .submit-area { padding:12px 13px; }
  .result-actions { margin:0 13px 11px; }
  .combination-notice { margin:0 13px 11px; padding:10px 11px; font-size:11px; }
  .submit-area .primary-button,.confirm-button { min-height:46px; }
  .submit-note { display:block; margin:8px 0 0; font-size:11px; }
  .selection-summary { padding:0 13px 14px; }
  .selection-summary h4 { margin:0 -13px 11px; padding:12px 13px 9px; }
  .summary-stats strong { font-size:17px; }
  .selected-lines { max-height:280px; }
  #quote-section .quote-panel { margin-top:20px; box-shadow:0 12px 26px #8f14252b, inset 0 0 0 3px #f4d9a2; }
  #quote-section .panel-title { padding:14px 13px 12px; }
  #quote-section .box-section { margin:10px 13px; padding:12px; }
  #quote-section .selection-summary { margin:0 13px 13px; padding:0 13px 13px; }
  #quote-section .selection-summary h4 { margin:0 -13px 11px; padding:11px 13px 9px; }
  .self-box-designs { margin-bottom:20px; padding-bottom:18px; }
  .self-box-design-heading { display:block; }
  .self-box-design-heading h3 { font-size:16px; }
  .self-box-design-heading p { margin-top:3px; font-size:11px; }
  .self-box-design-grid { grid-template-columns:1fr; gap:10px; margin-top:10px; }
  .self-box-design img { aspect-ratio:1.3 / 1; object-fit:contain; }
}

/* 定制礼盒选择：礼盒图在上，材质和尺寸说明在下。 */
.box-option-card { grid-template-columns:1fr; gap:0; min-height:0; padding:10px; }
.box-option-card.selected { padding:8px; }
.box-visual { display:block; min-height:176px; background:#f6efe4; }
.box-visual img { width:100%; height:176px; padding:9px; object-fit:contain; object-position:center; }
.box-copy { padding:10px 3px 2px; }
.box-copy strong { font-size:14px; }
.box-copy p { margin-top:4px; font-size:11px; line-height:1.45; }

.shelf-life-note { margin:18px 0 0; padding:11px 13px; border:1px solid #ecd1a6; border-radius:10px; color:#765225; background:#fff8e9; font-size:13px; line-height:1.55; }
.shelf-life-note strong { color:#9b1828; }
.quote-shelf-life-note { margin:0 16px 12px; }
.summary-shelf-life-note { margin:12px 0 0; }
.product.has-shelf-life .product-body { padding-top:26px; }
.shelf-life-badge { position:absolute; z-index:2; top:8px; right:8px; padding:4px 7px; border:1px solid #d79a16; border-radius:999px; color:#a30d22; background:#ffd86a; box-shadow:0 2px 6px #7d001833; font-size:10px; font-weight:800; line-height:1.2; }
.finished-gift-compare { margin-top:26px; padding:18px; border:1px solid #e7d0b3; border-radius:14px; background:#fffdfa; }
.finished-gift-compare-heading { display:flex; justify-content:space-between; gap:14px; }
.finished-gift-compare-heading h3 { margin:0; color:#4a3029; font-size:17px; }
.finished-gift-compare-heading p { margin:5px 0 0; color:var(--muted); font-size:12px; line-height:1.5; }
.finished-gift-choices { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; margin-top:14px; }
.finished-gift-choice { min-height:42px; padding:7px 8px; cursor:pointer; border:1px solid #d9c7b7; border-radius:8px; color:#624940; background:#fff; font-size:12px; font-weight:700; line-height:1.35; }
.finished-gift-choice:hover,.finished-gift-choice.selected { border-color:var(--red); color:var(--red); background:#fff5f2; }
.finished-gift-placeholder { margin:14px 0 0; padding:13px; border-radius:9px; color:var(--muted); background:#faf4eb; font-size:12px; }
.finished-gift-detail { margin-top:14px; padding:13px; border:1px solid #ebdac9; border-radius:10px; background:#fff; }
.finished-gift-overview { display:grid; grid-template-columns:minmax(280px,1.35fr) minmax(260px,1fr); gap:14px; align-items:stretch; }
.finished-gift-hero { display:flex; gap:12px; align-items:center; }
.finished-gift-hero img { display:block; width:220px; height:148px; flex:0 0 auto; overflow:hidden; border-radius:8px; object-fit:contain; object-position:center; background:#f7efe4; }
.finished-gift-hero h4 { margin:0; color:#4a3029; font-size:15px; }
.finished-gift-hero p { margin:4px 0 0; color:var(--muted); font-size:12px; }
.finished-gift-price { display:block; margin-top:11px; color:var(--red); font-size:18px; line-height:1.4; }
.finished-gift-stats { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:7px; margin:0; align-content:center; }
.finished-gift-stats > div { display:grid; min-height:60px; padding:7px 5px; place-items:center; border:1px solid #edddcd; border-radius:8px; background:#fff8ef; }
.finished-gift-stats strong { color:var(--red); font-size:16px; line-height:1.2; }
.finished-gift-stats span { margin-top:3px; color:var(--muted); font-size:10px; }
.finished-gift-lines { display:grid; gap:0; max-height:240px; margin-top:13px; overflow:auto; border-top:1px solid #f0e5da; }
.finished-gift-lines div { display:flex; justify-content:space-between; gap:10px; padding:8px 2px; border-bottom:1px solid #f0e5da; color:#5d4940; font-size:12px; line-height:1.45; }
.finished-gift-lines b { flex:0 0 auto; color:var(--red); }

/* 产品图片统一使用固定画框：主体居中展示，完整保留，绝不越出卡片。 */
.product { overflow:hidden; }
.admin-actions .admin-sync-button { display:inline-grid; width:auto; min-height:39px; padding:8px 12px; place-items:center; white-space:nowrap; }

@media (max-width:760px) {
  .admin-actions .admin-sync-button { flex:1 1 100%; min-height:42px; }
  .box-option-card { grid-template-columns:1fr; min-height:0; padding:9px; }
  .box-option-card.selected { padding:7px; }
  .box-visual { min-height:164px; }
  .box-visual img { height:164px; padding:8px; }
  .box-copy { padding:10px 2px 2px; }
  .box-copy strong { font-size:15px; }
  .box-copy p { font-size:12px; }
  .quote-shelf-life-note { margin:0 13px 11px; font-size:12px; }
  .summary-shelf-life-note { margin-top:11px; font-size:12px; }
  .finished-gift-compare { margin-top:20px; padding:14px; }
  .finished-gift-compare-heading h3 { font-size:16px; }
  .finished-gift-compare-heading p { font-size:11px; }
  .finished-gift-choices { grid-template-columns:repeat(2,minmax(0,1fr)); gap:7px; margin-top:12px; }
  .finished-gift-choice { min-height:45px; font-size:12px; }
  .finished-gift-detail { padding:11px; }
  .finished-gift-overview { grid-template-columns:1fr; gap:11px; }
  .finished-gift-hero { align-items:center; }
  .finished-gift-hero img { width:148px; height:100px; }
  .finished-gift-hero h4 { font-size:14px; }
  .finished-gift-price { margin-top:7px; font-size:15px; }
  .finished-gift-stats { gap:6px; }
  .finished-gift-stats strong { font-size:14px; }
  .finished-gift-stats span { font-size:9px; }
  .finished-gift-lines { max-height:220px; }
  .combination-notice.duplicate { border-width:3px; border-left-width:8px; padding:17px 15px; font-size:15px; }
  .combination-notice.duplicate strong { font-size:21px; }
}
