@charset "utf-8";

/* ===== css/contact_fab.css ===== */
/* 20261016 右下角「聯絡我們」按鈕 + 展開選單（Templates.php、js/contact_fab.js） */
.cf-wrap{ --cf-c: var(--sp-primary, #365a9e); position:fixed; right:20px; bottom:24px; z-index:8990; display:flex; flex-direction:column; align-items:flex-end; gap:10px; font-family:inherit; }
body.op-has-cartbar .cf-wrap{ transform:translateY(-74px); transition:transform .25s; }

/* 置頂：和「聯絡我們」右緣對齊的小圓鈕（顯示 / 隱藏由 front.js 控制） */
.cf-top{ display:none; width:44px; height:44px; padding:0; border:1px solid #e2e8f0; border-radius:50%; background:#fff; color:var(--cf-c); font-size:18px; line-height:42px; text-align:center; cursor:pointer; box-shadow:0 4px 14px rgba(15,23,42,.12); transition:transform .15s, box-shadow .15s; }
.cf-top:hover{ transform:translateY(-2px); box-shadow:0 6px 18px rgba(15,23,42,.18); }

.cf-btn{ position:relative; display:inline-flex; align-items:center; gap:8px; height:48px; padding:0 20px; border:1px solid #e2e8f0; border-radius:14px; background:#fff; color:var(--cf-c); font-size:15px; font-weight:700; letter-spacing:.5px; cursor:pointer; box-shadow:0 6px 22px rgba(15,23,42,.14); transition:transform .15s, box-shadow .15s; }
.cf-btn:hover{ transform:translateY(-2px); box-shadow:0 8px 26px rgba(15,23,42,.2); }
.cf-btn[aria-expanded="true"]{ background:var(--cf-c); color:#fff; border-color:var(--cf-c); }
.cf-btn i{ font-size:17px; }
.cf-ai{ position:absolute; top:-7px; right:-6px; height:18px; padding:0 6px; border-radius:9px; background:#16a34a; color:#fff; font-size:10.5px; font-style:normal; font-weight:700; line-height:18px; letter-spacing:0; box-shadow:0 0 0 2px #fff; }

.cf-menu{ width:280px; max-width:calc(100vw - 32px); background:#fff; border-radius:16px; padding:8px; box-shadow:0 12px 40px rgba(15,23,42,.18); border:1px solid #eef2f7; transform-origin:bottom right; animation:cfIn .16s ease-out; }
.cf-menu[hidden]{ display:none; }
@keyframes cfIn{ from{ opacity:0; transform:translateY(6px) scale(.98); } to{ opacity:1; transform:none; } }
.cf-item{ display:flex; align-items:center; gap:12px; width:100%; padding:10px; border:0; border-radius:12px; background:none; text-align:left; text-decoration:none !important; color:#0f172a !important; cursor:pointer; font:inherit; }
.cf-item:hover, .cf-item:focus-visible{ background:#f1f5f9; outline:none; }
.cf-ic{ width:38px; height:38px; border-radius:11px; display:flex; align-items:center; justify-content:center; color:#fff; font-size:18px; flex:0 0 auto; }
.cf-ic.ai{ background:#16a34a; }
.cf-ic.line{ background:#06c755; }
.cf-ic.fb{ background:#0a7cff; }
.cf-ic.tel{ background:var(--cf-c); }
.cf-ic.mail{ background:#f59e0b; }
.cf-tx small{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cf-tx{ display:flex; flex-direction:column; min-width:0; }
.cf-tx b{ font-size:14.5px; font-weight:700; line-height:1.35; display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.cf-tx small{ font-size:12px; color:#64748b; line-height:1.4; margin-top:1px; }
.cf-badge{ font-style:normal; font-size:10.5px; font-weight:700; color:#15803d; background:#dcfce7; border-radius:6px; padding:1px 6px; }

/* 手機：底部有 TabBar，往上讓出空間；按鈕縮成圖示 + 短字 */
@media (max-width:767px){
	.cf-wrap{ right:14px; bottom:78px; }
	.cf-btn{ height:46px; padding:0 16px; font-size:14px; }
	.cf-top{ width:40px; height:40px; line-height:38px; font-size:16px; }
}

/* ===== css/shop_ux.css ===== */
/* 20261031 購物流程質感（桌機＋手機共用，Templates.php 全站載入，搭配 js/shop_ux.js）
   1. 空狀態插圖（undraw 圖檔）→ CSS 線條 icon：圓形淡底＋主色線條，依原本圖檔自動換對應 icon
   2. 付款 / 運送方式：下拉選單 → 可點選卡片（JS 產生，原本 select 保留做資料來源） */

:root {
	--ux-c: var(--sp-primary, #365a9e);
	--ux-soft: rgba(54, 90, 158, .08);
	--ux-line: var(--sp-border, #e2e8f0);
	--ico-cart: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='20' r='1.4'/%3E%3Ccircle cx='18' cy='20' r='1.4'/%3E%3Cpath d='M2.5 3h2.2l2.4 11.2a1.5 1.5 0 0 0 1.5 1.2h8.9a1.5 1.5 0 0 0 1.5-1.1L21 7H6'/%3E%3C/svg%3E");
	--ico-ticket: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2z'/%3E%3Cpath d='M13 5v2M13 11v2M13 17v2'/%3E%3C/svg%3E");
	--ico-receipt: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 2v20l2-1 2 1 2-1 2 1 2-1 2 1 2-1 2 1V2l-2 1-2-1-2 1-2-1-2 1-2-1-2 1z'/%3E%3Cpath d='M16 8h-6M16 12H8M13 16H8'/%3E%3C/svg%3E");
	--ico-search: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20.5 20.5-4.2-4.2'/%3E%3C/svg%3E");
	--ico-box: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 8 12 3 3 8v8l9 5 9-5z'/%3E%3Cpath d='m3 8 9 5 9-5M12 13v8'/%3E%3C/svg%3E");
	--ico-chat: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z'/%3E%3Cpath d='m12 6.8 1.2 2.4 2.6.4-1.9 1.8.5 2.6-2.4-1.3-2.4 1.3.5-2.6-1.9-1.8 2.6-.4z'/%3E%3C/svg%3E");
	--ico-lock: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='11' width='16' height='10' rx='2'/%3E%3Cpath d='M8 11V7a4 4 0 0 1 8 0v4'/%3E%3C/svg%3E");
	--ico-tool: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.8-3.8a6 6 0 0 1-7.9 7.9l-6.9 6.9a2.1 2.1 0 0 1-3-3l6.9-6.9a6 6 0 0 1 7.9-7.9z'/%3E%3C/svg%3E");
	--ico-bookmark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 21l-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z'/%3E%3C/svg%3E");
	--ico-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='18' height='18' rx='2'/%3E%3Ccircle cx='9' cy='9' r='2'/%3E%3Cpath d='m21 15-5-5L5 21'/%3E%3C/svg%3E");
	--ico-bank: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3l9 5H3z'/%3E%3Cpath d='M5 10v8M9.5 10v8M14.5 10v8M19 10v8M3 21h18'/%3E%3C/svg%3E");
	--ico-store: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 9l1.5-5h15L21 9M4 11v9h16v-9'/%3E%3Cpath d='M3 9a3 3 0 0 0 6 0 3 3 0 0 0 6 0 3 3 0 0 0 6 0M10 20v-5h4v5'/%3E%3C/svg%3E");
	--ico-card: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='5' width='20' height='14' rx='2'/%3E%3Cpath d='M2 10h20M6 15h4'/%3E%3C/svg%3E");
	--ico-truck: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 17H9.5M4.5 17H2V6h12v11M14 9h4l4 4v4h-2.5'/%3E%3Ccircle cx='7' cy='17.5' r='2'/%3E%3Ccircle cx='17' cy='17.5' r='2'/%3E%3C/svg%3E");
	--ico-bag: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 7h14l1 14H4z'/%3E%3Cpath d='M9 10V6a3 3 0 0 1 6 0v4'/%3E%3C/svg%3E");
	--ico-wallet: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 7V5a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-3'/%3E%3Cpath d='M3 6v12a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-3'/%3E%3C/svg%3E");
	--ico-cash: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='6' width='20' height='12' rx='2'/%3E%3Ccircle cx='12' cy='12' r='2.5'/%3E%3Cpath d='M6 12h.01M18 12h.01'/%3E%3C/svg%3E");
	--ico-user: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21a8 8 0 0 1 16 0'/%3E%3C/svg%3E");
	--ico-chev: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 6 6 6-6 6'/%3E%3C/svg%3E");
	--ico-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 7.5'/%3E%3C/svg%3E");
}

/* ---------- 共用：遮罩 icon ---------- */
.ux-ico {
	display: inline-block; width: 22px; height: 22px; flex: 0 0 auto;
	background: currentColor;
	-webkit-mask: var(--ico) center / contain no-repeat; mask: var(--ico) center / contain no-repeat;
}

/* ---------- 1. 空狀態：插圖 → CSS icon ---------- */
.undercon_img img, img.empty_state__img { display: none !important; }
.undercon_img, .empty_state__icon {
	--ico: var(--ico-box);
	position: relative; width: 96px; height: 96px; margin: 8px auto 22px;
	border-radius: 50%; background: var(--ux-soft);
	box-shadow: 0 0 0 10px rgba(54, 90, 158, .035);
}
.undercon_img::after, .empty_state__icon::after {
	content: ''; position: absolute; inset: 26px;
	background: var(--ux-c);
	-webkit-mask: var(--ico) center / contain no-repeat; mask: var(--ico) center / contain no-repeat;
}
/* 依原本插圖換對應 icon */
.undercon_img:has(img[src*="add_to_cart"]),       .empty_state__icon[data-ico="cart"]     { --ico: var(--ico-cart); }
.undercon_img:has(img[src*="note_list"]),         .empty_state__icon[data-ico="ticket"]   { --ico: var(--ico-ticket); }
.undercon_img:has(img[src*="shopping_app"]),      .empty_state__icon[data-ico="receipt"]  { --ico: var(--ico-receipt); }
.undercon_img:has(img[src*="people_search"]),     .empty_state__icon[data-ico="search"]   { --ico: var(--ico-search); }
.undercon_img:has(img[src*="data_processing"]),   .empty_state__icon[data-ico="box"]      { --ico: var(--ico-box); }
.undercon_img:has(img[src*="feedback"]),          .empty_state__icon[data-ico="chat"]     { --ico: var(--ico-chat); }
.undercon_img:has(img[src*="real_time_analytics"]), .empty_state__icon[data-ico="lock"]   { --ico: var(--ico-lock); }
.undercon_img:has(img[src*="bug_fixing"]),        .empty_state__icon[data-ico="tool"]     { --ico: var(--ico-tool); }
.undercon_img:has(img[src*="photos"]),            .empty_state__icon[data-ico="image"]    { --ico: var(--ico-image); }
.undercon_img:has(img[src*="no_image"]),          .empty_state__icon[data-ico="image2"]   { --ico: var(--ico-image); }
.empty_state__icon[data-ico="bookmark"] { --ico: var(--ico-bookmark); }

/* 文字：主句清楚、英文副句收小變淡 */
.undercon_chtext { font-size: 16px !important; font-weight: 700; color: #1e293b !important; letter-spacing: .5px; margin-top: 0 !important; }
.undercon_entext { font-size: 11.5px !important; color: #94a3b8 !important; letter-spacing: 1.5px !important; text-transform: uppercase; margin-top: 6px !important; font-weight: 500; }
.undercon_block { padding: 40px 20px !important; }

/* ---------- 2. 付款 / 運送：卡片選擇 ---------- */
.ux-pick-hidden { position: absolute !important; width: 1px !important; height: 1px !important; opacity: 0 !important; pointer-events: none !important; overflow: hidden !important; }
.sp-selects-row.ux-picked { display: block !important; }
.sp-selects-row.ux-picked .sp-select-col { width: auto !important; max-width: none !important; float: none !important; margin: 0 0 18px !important; padding: 0 !important; }
.sp-selects-row.ux-picked .sp-select-col:last-child { margin-bottom: 4px !important; }
.sp-selects-row.ux-picked .sp-select-label { display: block; font-size: 14px; font-weight: 700; color: #334155; margin-bottom: 10px; }

.ux-pick { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 10px; letter-spacing: .2px; }
.ux-pick b, .ux-pick small { letter-spacing: .2px; word-break: keep-all; overflow-wrap: anywhere; }
.ux-opt {
	position: relative; display: flex; align-items: center; gap: 12px; margin: 0;
	min-height: 62px; padding: 12px 40px 12px 12px; border: 1.5px solid var(--ux-line); border-radius: 12px;
	background: #fff; cursor: pointer; text-align: left; font-weight: 400;
	transition: border-color .15s, box-shadow .15s, background-color .15s;
	-webkit-tap-highlight-color: transparent;
}
.ux-opt:hover { border-color: #b8c6e0; }
.ux-opt input { position: absolute; opacity: 0; pointer-events: none; }
.ux-opt .ux-opt-ic {
	display: flex; align-items: center; justify-content: center; flex: 0 0 auto;
	width: 38px; height: 38px; border-radius: 10px; background: #f1f5f9; color: #64748b;
	transition: background-color .15s, color .15s;
}
.ux-opt .ux-opt-tx { display: flex; flex-direction: column; min-width: 0; line-height: 1.35; }
.ux-opt .ux-opt-tx b { font-size: 14.5px; font-weight: 600; color: #1e293b; }
.ux-opt .ux-opt-tx small { font-size: 12.5px; color: #64748b; margin-top: 2px; }
.ux-opt::after {
	content: ''; position: absolute; right: 12px; top: 50%; width: 20px; height: 20px; margin-top: -10px;
	border-radius: 50%; border: 1.5px solid #cbd5e1; background: #fff;
	transition: border-color .15s, background-color .15s;
}
.ux-opt.is-on { border-color: var(--ux-c); background: var(--ux-soft); box-shadow: 0 0 0 3px rgba(54, 90, 158, .1); }
.ux-opt.is-on .ux-opt-ic { background: var(--ux-c); color: #fff; }
.ux-opt.is-on::after { border-color: var(--ux-c); background: var(--ux-c); }
.ux-opt.is-on::before {
	content: ''; position: absolute; right: 16px; top: 50%; width: 12px; height: 12px; margin-top: -6px; z-index: 1;
	background: #fff; -webkit-mask: var(--ico-check) center / contain no-repeat; mask: var(--ico-check) center / contain no-repeat;
}
.ux-opt:focus-within { outline: 2px solid var(--ux-c); outline-offset: 2px; }
.ux-opt.is-dis { opacity: .45; cursor: not-allowed; }

/* ---------- 3. 數量：－ 數字 ＋（膠囊外框、圓形按鈕） ---------- */
body .clbl_con_block_select:has(.ux-qty), body .cart_lied_select:has(.ux-qty) { width: auto !important; min-width: 0; flex: 0 0 auto; }
.ux-qty {
	display: inline-flex; align-items: center; flex: 0 0 auto; gap: 2px; height: 40px; padding: 3px;
	border: 1px solid var(--ux-line); border-radius: 999px; background: #fff; letter-spacing: 0;
	box-shadow: 0 1px 2px rgba(15, 23, 42, .04);
}
.ux-qty-btn {
	display: flex; align-items: center; justify-content: center; flex: 0 0 32px;
	width: 32px; height: 32px; padding: 0; border: 0; border-radius: 50%; background: #f1f5f9; color: #334155;
	font-size: 18px; line-height: 1; font-weight: 500; cursor: pointer;
	transition: background-color .15s, color .15s; -webkit-tap-highlight-color: transparent; touch-action: manipulation;
}
.ux-qty-btn:hover { background: var(--ux-c); color: #fff; }
.ux-qty-btn:active { transform: scale(.94); }
.ux-qty-btn:disabled { color: #cbd5e1; background: transparent; cursor: not-allowed; transform: none; }
.ux-qty .ux-qty-val {
	width: 40px; height: 32px; padding: 0; margin: 0; border: 0; border-radius: 8px; box-shadow: none; outline: none;
	background: transparent; text-align: center; font-size: 15px; font-weight: 700; color: #1e293b; font-variant-numeric: tabular-nums; letter-spacing: 0;
	-moz-appearance: textfield; appearance: textfield;
}
.ux-qty .ux-qty-val::-webkit-outer-spin-button, .ux-qty .ux-qty-val::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.ux-qty .ux-qty-val:focus { background: var(--ux-soft); }
.ux-qty:focus-within { border-color: var(--ux-c); box-shadow: 0 0 0 3px rgba(54, 90, 158, .1); }
@media (max-width: 767px) {
	.ux-qty { height: 42px; }
	.ux-qty-btn { flex-basis: 34px; width: 34px; height: 34px; }
	.ux-qty .ux-qty-val { font-size: 16px; }
}

/* ---------- 4. 訂購者資訊 / 訂單備註 / 折價券 ---------- */
body .cart_send_block { background: transparent; padding: 6px 0 0; letter-spacing: .2px; }
body .cart_send_block .cart_send_block_t { font-size: 14px; font-weight: 700; color: #334155; letter-spacing: .2px; padding: 16px 0 10px; }
body .cart_send_block .cart_send_block_t:first-child { padding-top: 4px; }
body .cart_send_block .cart_send_block_c1 { padding: 0; margin: 0; }
body .cart_send_block .cart_send_block_c {
	--ico: var(--ico-user);
	gap: 14px; min-height: 64px; margin: 0; padding: 12px 16px;
	border: 1.5px solid var(--ux-line); border-radius: 12px; background: #fff;
	font-size: 14.5px; letter-spacing: .2px;
	transition: border-color .15s, box-shadow .15s, background-color .15s;
}
body .cart_send_block #tmp_dis .cart_send_block_c { --ico: var(--ico-ticket); }
body .cart_send_block .cart_send_block_c::before {
	content: ''; flex: 0 0 38px; height: 38px; border-radius: 10px;
	background: var(--ux-soft) center / 20px no-repeat;
	-webkit-mask: none; mask: none;
	box-shadow: inset 0 0 0 100px var(--ux-soft);
}
body .cart_send_block .cart_send_block_c::after {
	content: ''; position: absolute; left: 25px; top: 50%; width: 20px; height: 20px; margin-top: -10px;
	background: var(--ux-c); -webkit-mask: var(--ico) center / contain no-repeat; mask: var(--ico) center / contain no-repeat;
}
body .cart_send_block .cart_send_block_c:hover { border-color: var(--ux-c); background: #fff; box-shadow: 0 0 0 3px rgba(54, 90, 158, .08); }
body .cart_send_block .cart_send_block_c_l { flex: 1 1 auto; width: auto; min-width: 0; color: #1e293b; line-height: 1.55; letter-spacing: .2px; }
body .cart_send_block .cart_send_block_c_r {
	display: inline-flex; align-items: center; gap: 4px; width: auto; flex: 0 0 auto;
	height: 32px; padding: 0 12px; border-radius: 999px; background: var(--ux-soft);
	color: var(--ux-c); font-size: 13px; font-weight: 700; letter-spacing: .2px;
}
body .cart_send_block .cart_send_block_c_r i { font-size: 13px; }
body .cart_send_block textarea {
	width: 100%; min-height: 92px; padding: 12px 14px; resize: vertical;
	border: 1.5px solid var(--ux-line); border-radius: 12px; background: #fff;
	font-size: 14.5px; line-height: 1.6; letter-spacing: .2px; color: #1e293b; box-shadow: none;
	transition: border-color .15s, box-shadow .15s;
}
body .cart_send_block textarea::placeholder { color: #94a3b8; }
body .cart_send_block textarea:focus { outline: none; border-color: var(--ux-c); box-shadow: 0 0 0 3px rgba(54, 90, 158, .1); }
@media (max-width: 767px) {
	body .cart_send_block textarea { font-size: 16px; }
	body .cart_send_block .cart_send_block_c { padding: 12px; gap: 12px; }
	body .cart_send_block .cart_send_block_c::after { left: 21px; }
}

@media (max-width: 767px) {
	.ux-qty { height: 42px; }
	.ux-qty-btn { width: 42px; }
	.ux-pick { grid-template-columns: 1fr; gap: 8px; }
	.ux-opt { min-height: 58px; }
}

/* ---------- 5. 加入購物車小卡片提示（js/shop_ux.js cartToast） ---------- */
.ux-toast {
	position: fixed; z-index: 10050; top: 78px; right: 20px; width: 340px; max-width: calc(100vw - 24px);
	background: #fff; border-radius: 16px; box-shadow: 0 18px 50px rgba(15, 23, 42, .18), 0 2px 6px rgba(15, 23, 42, .06);
	letter-spacing: .2px; overflow: hidden;
	opacity: 0; visibility: hidden; transform: translateY(-10px) scale(.98);
	transition: opacity .22s ease, transform .22s ease, visibility 0s linear .22s;
}
.ux-toast.is-show { opacity: 1; visibility: visible; transform: none; transition: opacity .22s ease, transform .22s ease; }
.ux-toast-hd { display: flex; align-items: center; gap: 8px; padding: 12px 14px 0 16px; font-size: 14px; font-weight: 700; color: #15803d; }
.ux-toast-ok { width: 20px; height: 20px; border-radius: 50%; background: #16a34a; position: relative; flex: 0 0 20px; }
.ux-toast-ok::after { content: ''; position: absolute; inset: 4px; background: #fff; -webkit-mask: var(--ico-check) center / contain no-repeat; mask: var(--ico-check) center / contain no-repeat; }
.ux-toast-x { margin-left: auto; width: 28px; height: 28px; border: 0; border-radius: 50%; background: transparent; color: #94a3b8; font-size: 20px; line-height: 1; cursor: pointer; }
.ux-toast-x:hover { background: #f1f5f9; color: #334155; }
.ux-toast-bd { display: flex; gap: 12px; align-items: center; padding: 10px 16px 12px; }
.ux-toast-bd img { width: 56px; height: 56px; border-radius: 10px; object-fit: cover; flex: 0 0 56px; background: #f1f5f9; }
.ux-toast-tx { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.ux-toast-tx b { font-size: 14.5px; color: #1e293b; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ux-toast-tx small { font-size: 12.5px; color: #64748b; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ux-toast-tx span { font-size: 13px; color: #475569; font-variant-numeric: tabular-nums; }
.ux-toast-ft { display: flex; gap: 8px; padding: 0 16px 14px; }
.ux-toast-btn {
	flex: 1; display: inline-flex; align-items: center; justify-content: center; height: 40px; padding: 0 12px;
	border: 1.5px solid var(--ux-line); border-radius: 10px; background: #fff; color: #334155;
	font-size: 14px; font-weight: 600; letter-spacing: .2px; cursor: pointer; text-decoration: none !important;
	transition: background-color .15s, border-color .15s, color .15s;
}
.ux-toast-btn:hover { border-color: #cbd5e1; background: #f8fafc; color: #1e293b; }
.ux-toast-btn.is-main { border-color: var(--sp-cta, #f97316); background: var(--sp-cta, #f97316); color: #fff; }
.ux-toast-btn.is-main:hover { background: var(--sp-cta-dark, #ea580c); border-color: var(--sp-cta-dark, #ea580c); color: #fff; }
@media (max-width: 767px) {
	.ux-toast { top: 10px; left: 12px; right: 12px; width: auto; max-width: none; }
}

/* 有視窗開著時，浮動的聯絡我們 / 回頂端不要蓋在上面（所有寬度） */
body.modal-open .cf-wrap, body.modal-open #gotop, body.modal-open .gotop, body.modal-open .back-to-top { display: none !important; }

/* ---------- 6. 商品列表卡片 ---------- */
.v_grid .shop_pblock { border-radius: 14px; transition: box-shadow .2s ease, transform .2s ease; }
.v_grid .shop_pblock:hover { box-shadow: 0 12px 30px rgba(15, 23, 42, .1); transform: translateY(-2px); }
.shop_pname { letter-spacing: .3px; line-height: 1.5; }
.shop_price { letter-spacing: .2px; font-variant-numeric: tabular-nums; }
.shop_pbtn .prodaddv2_btn { border-radius: 999px !important; letter-spacing: .5px; }

/* ---------- 7. 商品頁：分享列、數量、按鈕 ---------- */
body .share_block { background: transparent; padding: 0; position: static; }
body .shareBtnPublic { width: 34px !important; height: 34px !important; border-radius: 50% !important; font-size: 15px !important; }
body .pro_bottom_msg { border-radius: 12px; letter-spacing: .2px; line-height: 1.8; }
body .addnums_fonts { font-size: 14px; font-weight: 600; letter-spacing: .3px; color: #334155; }
body .buy_numsmain {
	width: auto; align-items: center; gap: 2px; height: 42px; padding: 3px;
	border: 1px solid var(--ux-line); border-radius: 999px; background: #fff; overflow: visible;
	box-shadow: 0 1px 2px rgba(15, 23, 42, .04);
}
body .buy_reduce, body .buy_add {
	width: 34px; height: 34px; flex: 0 0 34px; border-radius: 50%; background: #f1f5f9; color: #334155; font-size: 18px;
}
body .buy_reduce:hover, body .buy_add:hover { background: var(--ux-c); color: #fff; }
body .buy_reduce.is-disabled { opacity: 1; color: #cbd5e1; background: transparent; }
body .buy_count { min-width: 44px; height: 34px; border: 0; font-size: 15px; font-weight: 700; color: #1e293b; letter-spacing: 0; font-variant-numeric: tabular-nums; }
body .cartbtn_block .cartaddv3_btn, body .cartbtn_block .cartaddv2_btn { border-radius: 12px !important; letter-spacing: .5px; min-height: 48px; }
body .savelater_link_btn { letter-spacing: .3px; }

/* ---------- 8. 購物車：紅利金、訂單摘要、結帳鈕 ---------- */
/* 紅利金：跟上方「訂購者資訊」同樣左右內縮，資訊精簡成 標題列(可用點數) → 輸入+按鈕 → 規則一行 → 本次折抵/剩餘 */
body .cart_list_block_li > .sp-bonus-card { margin: 4px 16px 18px; }
body .sp-bonus-card { border: 1.5px solid var(--ux-line); border-radius: 12px; overflow: hidden; letter-spacing: .2px; background: #fff; }
body .sp-bonus-card__header { display: flex; align-items: center; justify-content: space-between; gap: 10px; background: #fff; border: 0; padding: 14px 16px 10px; letter-spacing: .2px; }
body .sp-bonus-card .sbc_title { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 700; color: #334155; }
body .sp-bonus-card .sbc_title i { color: var(--ux-c); font-size: 15px; margin: 0; }
body .sp-bonus-card .sbc_have { font-size: 13px; color: #64748b; font-weight: 500; padding: 4px 10px; border-radius: 999px; background: var(--ux-soft); }
body .sp-bonus-card .sbc_have b { color: var(--ux-c); font-variant-numeric: tabular-nums; }
body .sp-bonus-card__body { padding: 0 16px 14px; }
body .sp-bonus-card .cart_point_flex { display: flex; flex-direction: row !important; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0; }
body .sp-bonus-card .cart_point_input { flex: 1 1 0; min-width: 0; width: auto !important; margin: 0 !important; }
body .sp-bonus-card .cart_point_btn { flex: 0 0 auto; width: auto !important; margin: 0 !important; }
body .sp-bonus-card .cart_point_full { flex: 1 1 100%; width: 100%; order: 3; }
@media (max-width: 767px) { body .cart_list_block_li > .sp-bonus-card { margin: 4px 12px 16px; } body .sp-bonus-card .LBM_buybtn { min-width: 76px; padding: 0 14px; } }
body .sp-bonus-card .form_v1_group { display: flex; height: 44px; border: 1.5px solid var(--ux-line); border-radius: 10px; overflow: hidden; background: #fff; transition: border-color .15s, box-shadow .15s; }
body .sp-bonus-card .form_v1_group:focus-within { border-color: var(--ux-c); box-shadow: 0 0 0 3px rgba(54, 90, 158, .1); }
body .sp-bonus-card .form_v1_input { flex: 1; min-width: 0; }
body .sp-bonus-card .form_input_v1 { width: 100%; height: 100% !important; border: 0 !important; box-shadow: none !important; border-radius: 0 !important; padding: 0 12px; font-size: 15px; font-variant-numeric: tabular-nums; }
body .sp-bonus-card .form_v2_icon { display: flex; align-items: center; padding: 0 14px; background: #f8fafc; color: #64748b; font-size: 13px; border: 0; border-left: 1px solid var(--ux-line); height: 100%; }
body .sp-bonus-card .LBM_buybtn { width: auto !important; min-width: 92px; height: 44px; padding: 0 18px; border-radius: 10px !important; display: inline-flex; align-items: center; justify-content: center; gap: 4px; letter-spacing: .5px; }
body .sp-bonus-card .sbc_rule { font-size: 12.5px; color: #94a3b8; line-height: 1.6; letter-spacing: .2px; margin-top: 2px; }
body .sp-bonus-card .sbc_rule span, body .sp-bonus-card .sbc_rule b { color: #64748b !important; font-weight: 600; }
body .sp-bonus-card .cart_point_usage { justify-content: space-between; flex-wrap: nowrap; margin-top: 12px; padding-top: 12px; border-top: 1px dashed var(--ux-line); font-size: 13.5px; color: #64748b; }
body .sp-bonus-card .cart_point_usage .cart_point_l, body .sp-bonus-card .cart_point_usage .cart_point_r { width: auto; font-weight: 500; }
body .sp-bonus-card .sbc_use { color: var(--sp-cta, #f97316); font-size: 15px; font-variant-numeric: tabular-nums; }
body .sp-bonus-card.is-empty .cart_point_flex:not(.cart_point_usage), body .sp-bonus-card.is-empty .cart_point_usage { display: none; }
body .sp-bonus-card.is-empty .sp-bonus-card__body::before { content: '目前沒有紅利金，完成訂單後即可累積'; display: block; font-size: 13px; color: #94a3b8; }

/* 只有一家店時，下方「小計」跟右邊訂單摘要重複，收起來 */
body .cart_list_block > .cart_list_block_li:only-child .subtotal { display: none; }
body .cart_list_block_li { padding-bottom: 2px; }

body .cart_all_info_topblock { letter-spacing: .2px; padding: 5px 0; }
body .cart_all_info_topblock .caib_title { color: #64748b; }
body .cart_all_info_topblock .caib_price { color: #1e293b; font-variant-numeric: tabular-nums; }
body .cart_all_info_allblock { border-radius: 12px; letter-spacing: .2px; }
body .cart_all_info_allblock .caib_price { font-variant-numeric: tabular-nums; }
body .comp_btn_block .cartaddv2_btn { width: 100% !important; min-height: 50px; border-radius: 12px !important; font-size: 16px !important; letter-spacing: 1px; }
body .comp_btn_block::after {
	content: '訂單成立後會寄送通知信，可隨時查詢訂單'; display: flex; align-items: center; justify-content: center; gap: 6px;
	margin-top: 10px; font-size: 12.5px; color: #94a3b8; letter-spacing: .3px;
}
body .clbl_con_block_info { letter-spacing: .3px; line-height: 1.5; }
body .clblcbi_price { letter-spacing: .3px; font-variant-numeric: tabular-nums; }
body .cart_list_block_li { border-radius: 14px; overflow: hidden; }
body .clbl_header_title { letter-spacing: .5px; }

/* ---------- 9. 超商門市選擇（cart_send_block_c_v1，運送方式選超商時出現） ---------- */
body .cart_send_block_c_v1 {
	position: relative; display: flex; align-items: center; gap: 14px; min-height: 64px; margin: 12px 0 4px; padding: 12px 16px;
	border: 1.5px solid var(--ux-line); border-radius: 12px; background: #fff; cursor: pointer;
	font-size: 14.5px; letter-spacing: .2px; transition: border-color .15s, box-shadow .15s;
}
body .cart_send_block_c_v1::before { content: ''; flex: 0 0 38px; height: 38px; border-radius: 10px; background: var(--ux-soft); }
body .cart_send_block_c_v1::after {
	content: ''; position: absolute; left: 25px; top: 50%; width: 20px; height: 20px; margin-top: -10px;
	background: var(--ux-c); -webkit-mask: var(--ico-store) center / contain no-repeat; mask: var(--ico-store) center / contain no-repeat;
}
body .cart_send_block_c_v1:hover { border-color: var(--ux-c); box-shadow: 0 0 0 3px rgba(54, 90, 158, .08); }
body .cart_send_block_c_v1 .cart_send_block_c_l_v1 { flex: 1 1 auto; width: auto; min-width: 0; color: #475569; font-size: 13px; line-height: 1.6; letter-spacing: .2px; }
body .cart_send_block_c_v1 .cart_send_block_c_l_v1 > div:first-child { font-size: 14.5px; font-weight: 700; color: #1e293b; margin-bottom: 2px; }
body .cart_send_block_c_v1 .cart_send_block_c_r_v1 {
	display: inline-flex; align-items: center; gap: 4px; width: auto; flex: 0 0 auto; align-self: center;
	height: 32px; padding: 0 12px; border-radius: 999px; background: var(--ux-soft);
	color: var(--ux-c); font-size: 13px; font-weight: 700; letter-spacing: .2px;
}
/* 還沒選門市：虛線框＋主色提示，看得出這步還要做 */
body .cart_send_block_c_v1:has(.cart_send_block_c_l_v1 > div:only-child) { border-style: dashed; border-color: rgba(54, 90, 158, .45); background: #fafcff; }
body .cart_send_block_c_v1:has(.cart_send_block_c_l_v1 > div:only-child) .cart_send_block_c_l_v1 > div { color: var(--ux-c); font-weight: 700; margin: 0; }
body .cart_send_block_c_v1:has(.cart_send_block_c_l_v1 > div:only-child) .cart_send_block_c_r_v1 { background: var(--ux-c); color: #fff; }
@media (max-width: 767px) {
	body .cart_send_block_c_v1 { padding: 12px; gap: 12px; }
	body .cart_send_block_c_v1::after { left: 21px; }
}

/* ===== css/shop_mobile_ux.css ===== */
/* 20261031 手機購物操作優化（Templates.php 全站載入，搭配 js/shop_mobile_ux.js）
   1. 商品列表：卡片等高、按鈕不折行、排序列橫向滑動
   2. 分類：浮動側標改成工具列按鈕 + 遮罩
   3. 快速加購視窗：改成底部面板，按鈕永遠看得到
   4. 購物車商品列：圖 | 名稱價格 | 數量 重新排版，不再重疊
   5. 聯絡我們：手機縮成圓鈕，並避開底部購買 / 結帳列（位置由 JS 算）
   6. 輸入框 16px 防 iOS 自動放大、按壓回饋 */

/* 手機專用元件，桌機不顯示 */
.smux_classbtn, .smux_classbar, .smux_mask { display: none; }

@media (max-width: 767px) {
	.smux_classbar, .smux_mask { display: block; }

	/* ---------- 共用：按壓回饋、輸入框不放大 ---------- */
	.prodaddv2_btn, .cartaddv2_btn, .cartaddv3_btn, .cartbtn_mob_l, .cartbtn_mob_r,
	.buy_add, .buy_reduce, .shop_filter_btn, .smux_classbtn, ul.shop_sort_list li a {
		-webkit-tap-highlight-color: transparent;
		touch-action: manipulation;
	}
	.prodaddv2_btn:active, .cartaddv2_btn:active, .cartaddv3_btn:active,
	.cartbtn_mob_l:active, .cartbtn_mob_r:active, .smux_classbtn:active { transform: scale(.97); }
	body input[type="text"], body input[type="tel"], body input[type="email"], body input[type="number"],
	body input[type="password"], body input[type="search"], body select, body textarea { font-size: 16px; }

	/* ---------- 1. 商品列表卡片 ---------- */
	ul.shop_selllist.v_grid > li { display: flex; }
	ul.shop_selllist.v_grid .shop_pblock { width: 100%; height: 100%; display: flex; flex-direction: column; }
	ul.shop_selllist.v_grid .shop_listcon { flex: 1 1 auto; padding: 10px 10px 0; }
	ul.shop_selllist.v_grid .shop_pname {
		font-size: 14.5px; line-height: 1.4; min-height: 2.8em;
		display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
	}
	ul.shop_selllist.v_grid .shop_price {
		display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 6px;
		font-size: 17px; margin-top: 4px;
	}
	ul.shop_selllist.v_grid .shop_price_urdel { font-size: 12px; margin: 0; }
	ul.shop_selllist.v_grid .shop_pbtn { padding: 8px 10px 12px; margin-top: auto; }
	body ul.shop_selllist .shop_pbtn .prodaddv2_btn,
	body ul.shop_selllist .shop_pbtn .linkv2_btn,
	body ul.shop_selllist .shop_pbtn .callv2_btn {
		display: flex; align-items: center; justify-content: center; gap: 4px;
		width: 100%; height: 40px; min-height: 40px; padding: 0 6px;
		font-size: 14px; letter-spacing: 0; line-height: 1; white-space: nowrap;
		border-radius: 10px;
	}
	ul.shop_selllist.v_grid .shop_isoff { height: 40px; line-height: 40px; font-size: 13px; }

	/* 排序：單行橫向滑動 */
	ul.shop_sort_list {
		display: flex; flex-wrap: nowrap; gap: 8px;
		overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none;
		margin-right: -15px; padding: 2px 15px 6px 0;
	}
	ul.shop_sort_list::-webkit-scrollbar { display: none; }
	ul.shop_sort_list li { float: none; flex: 0 0 auto; margin: 0 !important; }
	ul.shop_sort_list li a { display: block; white-space: nowrap; padding: 8px 14px; font-size: 13px; }

	/* ---------- 2. 分類抽屜入口 ---------- */
	.shop_filter_bar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
	.smux_classbtn {
		display: inline-flex; align-items: center; gap: 6px; height: 40px; padding: 0 14px;
		border: 1px solid var(--sp-border, #e2e8f0); border-radius: 10px; background: #fff;
		color: var(--sp-primary, #365a9e); font-size: 14px; font-weight: 700; cursor: pointer;
	}
	.smux_classbar { display: flex; justify-content: flex-end; margin: -6px 0 10px; }
	.smux_classbar .smux_classbtn { height: 34px; font-size: 13px; padding: 0 12px; }
	body.smux-has-classmenu .moblie_classblockicon:not(.in) { opacity: 0; visibility: hidden; pointer-events: none; }
	.smux_mask { position: fixed; inset: 0; z-index: 899; background: rgba(15, 23, 42, .4); opacity: 0; visibility: hidden; transition: opacity .2s, visibility .2s; }
	.smux_mask.show { opacity: 1; visibility: visible; }

	/* ---------- 3. 快速加購：底部面板 ---------- */
	#cartaddInfo { padding: 0 !important; }
	#cartaddInfo .modal-dialog {
		position: fixed; left: 0; right: 0; bottom: 0; margin: 0; width: 100%; max-width: none;
	}
	#cartaddInfo.fade .modal-dialog { transform: translateY(100%); transition: transform .28s ease-out; }
	#cartaddInfo.in .modal-dialog { transform: none; }
	#cartaddInfo .modal-content {
		display: flex; flex-direction: column; max-height: 88vh; max-height: 88dvh;
		border: 0; border-radius: 18px 18px 0 0; overflow: hidden; margin: 0;
	}
	#cartaddInfo .modal-header { flex: 0 0 auto; position: relative; }
	#cartaddInfo .modal-header::before {
		content: ''; position: absolute; top: 6px; left: 50%; width: 40px; height: 4px; margin-left: -20px;
		border-radius: 2px; background: rgba(255, 255, 255, .55);
	}
	#cartaddInfo .modal-content, #cartaddInfo .modal-show-con-1 { background: #fff; }
	body.modal-open .cf-wrap { display: none; }
	#cartaddInfo .modal-show-con-1 { flex: 1 1 auto; overflow-y: auto; -webkit-overflow-scrolling: touch; padding: 14px 16px; }
	#cartaddInfo .modal-new-footer {
		flex: 0 0 auto; padding: 10px 16px calc(10px + env(safe-area-inset-bottom));
		background: #fff; box-shadow: 0 -4px 14px rgba(15, 23, 42, .08);
	}
	#cartaddInfo .cartbtn_block { display: flex; gap: 10px; }
	#cartaddInfo .cartbtn_50width { flex: 1 1 0; width: auto; padding: 0; }
	#cartaddInfo .cartaddv2_btn, #cartaddInfo .cartaddv3_btn {
		height: 48px; line-height: 48px; padding: 0 6px; font-size: 15px; white-space: nowrap; letter-spacing: 0; border-radius: 12px;
	}
	/* 圖片縮小放左邊、價格放右邊，其餘全寬 */
	#cartaddinfoArea .pro_con_section > .row {
		display: grid; grid-template-columns: 96px 1fr; column-gap: 14px; align-items: center; margin: 0;
	}
	#cartaddinfoArea .pro_con_section > .row::before,
	#cartaddinfoArea .pro_con_section > .row::after { display: none; }
	#cartaddinfoArea .pro_con_section > .row > div { width: auto; padding: 0; float: none; min-width: 0; }
	#cartaddinfoArea .pro_con_section > .row > div:first-child { overflow: hidden; border-radius: 10px; }
	#cartaddinfoArea .pro_con_section > .row > div:last-child { display: contents; }
	#cartaddinfoArea .pro_con_section > .row > div:last-child > * { grid-column: 1 / -1; }
	#cartaddinfoArea .pro_con_section > .row > div:last-child > #product-price { grid-column: 2; grid-row: 1; }
	#cartaddinfoArea .pro_con_section > .row > div:first-child { grid-column: 1; grid-row: 1; }
	#cartaddinfoArea .slider-out-section { display: none; }
	#cartaddinfoArea .pro_con_section hr { display: none; }
	/* 規格、數量先選；商品說明移到最下面 */
	#cartaddinfoArea .pro_bottom_msg {
		order: 9; margin-top: 16px; padding-top: 12px; border-top: 1px dashed #e2e8f0;
		font-size: 13px; line-height: 1.6; color: #64748b;
	}
	#cartaddinfoArea .addnums_block { display: flex; align-items: center; justify-content: space-between; margin-top: 6px; }

	/* 數量加減：加大可點範圍（快速加購 + 商品頁共用） */
	.buy_numsmain { display: inline-flex; align-items: center; border-radius: 12px; overflow: hidden; }
	.buy_numsmain .buy_reduce, .buy_numsmain .buy_add { width: 44px; height: 44px; font-size: 20px; line-height: 1; }
	.buy_numsmain .buy_count { min-width: 52px; height: 44px; line-height: 44px; font-size: 17px; text-align: center; }

	/* ---------- 4. 購物車商品列 ---------- */
	body .clbl_con_block { padding: 14px 12px; align-items: flex-start; }
	body .clbl_con_block_left { width: auto; flex: 1 1 auto; min-width: 0; margin-right: 6px; }
	body .clbl_con_block_div { display: grid; grid-template-columns: 76px 1fr; column-gap: 12px; row-gap: 8px; align-items: start; }
	body .clbl_con_block_img { width: 76px; grid-row: 1 / span 2; }
	body .clbl_con_block_info { width: auto; margin-left: 0; min-width: 0; font-size: 15px; line-height: 1.45; color: #1f2937; word-break: break-word; }
	body .clbl_con_block_info .clblcbi_price { margin-top: 2px; font-size: 15px; }
	body .clbl_con_block_select { grid-column: 2; width: auto; justify-content: flex-start; }
	body .clbl_con_block_select select { min-width: 0 !important; width: 104px; height: 40px; }
	body .clbl_con_block_right_group { flex-direction: column; gap: 8px; margin-left: 0; }
	body .clbl_con_block_right_group > div { width: 36px; height: 36px; display: flex; align-items: center; justify-content: center; padding: 0; }

	/* ---------- 5. 聯絡我們：圓鈕 ---------- */
	.cf-wrap { transition: bottom .2s ease; }
	.cf-wrap .cf-btn { width: 48px; height: 48px; padding: 0; justify-content: center; border-radius: 50%; }
	.cf-wrap .cf-btn > span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
	.cf-wrap .cf-btn i { font-size: 20px; }
	.cf-wrap .cf-ai { top: -5px; right: -8px; }
}

/* ===== css/search_suggest.css ===== */
/* 20261101 前台搜尋「即時提示」下拉（搭配 js/search_suggest.js）
   全站 letter-spacing 2px 會讓文字折行，這裡一律歸零 */
.lw-sg-host { position: relative; }
.lw-sg {
	position: absolute; left: 0; right: 0; top: calc(100% + 4px); z-index: 1050;
	background: #fff; border: 1px solid #e5e7eb; border-radius: 12px;
	box-shadow: 0 12px 32px rgba(15, 23, 42, .14);
	max-height: min(460px, 70vh); overflow-y: auto; overscroll-behavior: contain;
	padding: 6px 0; text-align: left; letter-spacing: 0; line-height: 1.4;
	-webkit-overflow-scrolling: touch;
}
.lw-sg[hidden] { display: none; }
.lw-sg * { letter-spacing: 0; box-sizing: border-box; }
.lw-sg-live { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

.lw-sg-head { padding: 10px 14px 4px; font-size: 12px; font-weight: 600; color: #94a3b8; }
.lw-sg-none { padding: 10px 14px; font-size: 13.5px; color: #64748b; }

.lw-sg-opt { cursor: pointer; -webkit-tap-highlight-color: transparent; }
.lw-sg-opt.is-active, .lw-sg-opt:hover { background: #f1f5f9; }

/* 商品列：縮圖 + 名稱 + 價格 */
.lw-sg-prod { display: flex; align-items: center; gap: 12px; min-height: 56px; padding: 6px 14px; }
.lw-sg-img { width: 44px; height: 44px; flex: 0 0 44px; border-radius: 8px; object-fit: cover; background: #f3f4f6; }
.lw-sg-info { min-width: 0; flex: 1 1 auto; }
.lw-sg-name { font-size: 14.5px; color: #1f2937; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lw-sg-price { margin-top: 2px; font-size: 13.5px; font-weight: 600; color: #dc2626; }
.lw-sg-price del { margin-left: 6px; font-weight: 400; color: #94a3b8; font-size: 12px; }

/* 一般列：分類、你是不是要找、全部結果 */
.lw-sg-row, .lw-sg-all { display: flex; align-items: center; gap: 10px; min-height: 44px; padding: 8px 14px; font-size: 14.5px; color: #1f2937; }
.lw-sg-text { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lw-sg-meta { flex: 0 0 auto; font-size: 12.5px; color: #94a3b8; }
.lw-sg-all { margin-top: 4px; border-top: 1px solid #f1f5f9; color: var(--sp-primary, #4338ca); font-weight: 600; }

/* 熱門搜尋：膠囊 */
.lw-sg-chips { display: flex; flex-wrap: wrap; gap: 8px; padding: 6px 14px 10px; }
.lw-sg-chip {
	display: inline-flex; align-items: center; min-height: 36px; padding: 0 14px;
	border: 1px solid #e2e8f0; border-radius: 18px; background: #fff; font-size: 13.5px; color: #475569;
}
.lw-sg-chip.is-active, .lw-sg-chip:hover { border-color: #c7d2fe; background: #eef2ff; color: #4338ca; }

/* CSS 小圖示（不依賴 icon 字型） */
.lw-sg-ico { flex: 0 0 18px; width: 18px; height: 18px; background: #94a3b8; display: inline-block;
	-webkit-mask: var(--lw-sg-i) center / contain no-repeat; mask: var(--lw-sg-i) center / contain no-repeat; }
.lw-sg-all .lw-sg-ico { background: currentColor; }
.lw-sg-ico-search { --lw-sg-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M20 20l-3.5-3.5'/%3E%3C/svg%3E"); }
.lw-sg-ico-cat { --lw-sg-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Crect x='3' y='3' width='7' height='7' rx='1.5'/%3E%3Crect x='14' y='3' width='7' height='7' rx='1.5'/%3E%3Crect x='3' y='14' width='7' height='7' rx='1.5'/%3E%3Crect x='14' y='14' width='7' height='7' rx='1.5'/%3E%3C/svg%3E"); }
.lw-sg-ico-hint { --lw-sg-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M9 18h6M10 21h4M12 3a6 6 0 0 0-4 10.5c.7.7 1 1.5 1 2.5h6c0-1 .3-1.8 1-2.5A6 6 0 0 0 12 3z'/%3E%3C/svg%3E"); }

@media (max-width: 767px) {
	.lw-sg { max-height: 62vh; border-radius: 10px; }
	.lw-sg-prod { min-height: 60px; }
	.lw-sg-row, .lw-sg-all { min-height: 48px; }
	.lw-sg-chip { min-height: 40px; }
}

/* ===== css/auto_sales.css ===== */
/* 20261101 自動多賣：商品頁安心資訊 / 優惠 / 倒數 / 定期購、購物車組合優惠、會員中心推薦好友（js/auto_sales.js） */
.as-box{margin:14px 0 4px;display:flex;flex-direction:column;gap:10px;font-size:14px;line-height:1.55;color:#334155;}
.as-box svg{flex:0 0 16px;margin-top:3px;color:#64748b;}
.as-box a{color:#2563eb;text-decoration:underline;text-underline-offset:2px;}
.as-box small{color:#94a3b8;font-size:12px;margin-left:4px;}
.as-box b{color:#0f172a;}

.as-sale{display:flex;gap:8px;align-items:flex-start;padding:10px 12px;border-radius:10px;background:#fff1f2;border:1px solid #fecdd3;color:#9f1239;}
.as-sale svg{color:#e11d48;}
.as-sale .as-cd{color:#be123c;font-variant-numeric:tabular-nums;}

.as-offers,.as-trust{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;}
.as-offers li,.as-trust li{display:flex;gap:8px;align-items:flex-start;}
.as-offers{padding:10px 12px;border-radius:10px;background:#fffbeb;border:1px solid #fde68a;}
.as-offers svg{color:#d97706;}
.as-trust{padding:12px;border-radius:10px;background:#f8fafc;border:1px solid #e2e8f0;}
.as-trust .as-shiphint{font-style:normal;color:#059669;font-weight:600;}
.as-trust .as-note{display:block;font-style:normal;color:#b45309;font-size:12px;margin-top:2px;}

.as-social{display:flex;gap:8px;align-items:flex-start;color:#c2410c;}
.as-social svg{color:#ea580c;}
.as-upgrade{display:flex;gap:8px;align-items:flex-start;}

/* 定期購視窗 */
.as-modal{position:fixed;inset:0;z-index:9500;background:rgba(15,23,42,.45);display:flex;align-items:center;justify-content:center;padding:16px;}
.as-modal-box{position:relative;background:#fff;border-radius:14px;max-width:420px;width:100%;padding:22px 20px 18px;box-shadow:0 20px 50px rgba(15,23,42,.25);}
.as-modal-box h3{margin:0 0 8px;font-size:18px;}
.as-modal-desc{font-size:13px;color:#64748b;margin:0 0 10px;line-height:1.6;}
.as-modal-x{position:absolute;top:8px;right:10px;border:0;background:none;font-size:24px;line-height:1;color:#94a3b8;cursor:pointer;min-width:44px;min-height:44px;}
.as-sub-opts{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 12px;}
.as-sub-opt{display:flex;align-items:center;gap:6px;border:1px solid #cbd5e1;border-radius:999px;padding:8px 14px;cursor:pointer;min-height:44px;}
.as-sub-opt:has(input:checked){border-color:#2563eb;background:#eff6ff;}
.as-sub-qty{display:flex;align-items:center;gap:8px;margin-bottom:14px;font-size:14px;}
.as-sub-qty input{width:80px;padding:8px;border:1px solid #cbd5e1;border-radius:8px;}
.as-btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 18px;border:0;border-radius:10px;background:#0f172a;color:#fff;font-size:15px;cursor:pointer;}
.as-btn:disabled{opacity:.6;}
.as-modal .as-btn{width:100%;}

/* 購物車：組合優惠、結帳安心 */
.as-cart-dis .caib_title{display:flex;flex-direction:column;}
.as-cart-dis-note{display:block;font-size:12px;color:#64748b;font-weight:400;line-height:1.5;}
.as-secure{display:flex;align-items:flex-start;gap:8px;margin:10px 0;padding:10px 12px;border-radius:10px;background:#f0fdf4;border:1px solid #bbf7d0;color:#166534;font-size:13px;line-height:1.6;}
.as-secure::before{content:"";flex:0 0 16px;width:16px;height:16px;margin-top:3px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='11' width='16' height='10' rx='2'/%3E%3Cpath d='M8 11V7a4 4 0 0 1 8 0v4'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='11' width='16' height='10' rx='2'/%3E%3Cpath d='M8 11V7a4 4 0 0 1 8 0v4'/%3E%3C/svg%3E") center/contain no-repeat;}

/* 會員中心 */
.as-member{display:flex;flex-direction:column;gap:14px;margin-top:16px;}
.as-mcard{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:16px;}
.as-mcard h3{margin:0 0 8px;font-size:17px;}
.as-mcard p{margin:0 0 10px;color:#475569;font-size:14px;line-height:1.6;}
.as-mcard small{color:#94a3b8;}
.as-ref-row{display:flex;gap:8px;margin-bottom:6px;}
.as-ref-url{flex:1;min-width:0;padding:10px;border:1px solid #cbd5e1;border-radius:8px;font-size:13px;}
.as-sub-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;}
.as-sub-list li{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;border-bottom:1px dashed #e2e8f0;padding-bottom:10px;font-size:14px;}
.as-sub-list li small{color:#94a3b8;}
.as-sub-list li > span{color:#64748b;font-size:13px;}
.as-sub-act{margin-left:auto;display:flex;gap:6px;}
.as-sub-act button{min-height:36px;padding:0 12px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;cursor:pointer;}

/* 評價篩選（review_fun.php） */
.rv_chips{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 4px;width:100%;}
.rv_chip{min-height:36px;padding:0 14px;border:1px solid #cbd5e1;border-radius:999px;background:#fff;color:#334155;font-size:13px;cursor:pointer;}
.rv_chip.is-on{border-color:#0f172a;background:#0f172a;color:#fff;}
.rv_verified_note{width:100%;font-size:12px;color:#64748b;margin-top:4px;}

@media (max-width:767px){
	.as-box{font-size:13.5px;}
	.as-sub-act{margin-left:0;width:100%;}
}

/* 20261101 購物車結帳登入提示（js/checkout_login.js） */
.ck-login{display:flex;align-items:center;gap:10px;margin:0 0 12px;padding:12px 14px;border-radius:12px;background:#eff6ff;border:1px solid #bfdbfe;color:#1e3a8a;font-size:14px;line-height:1.55}
.ck-login.is-guest{background:#f0fdf4;border-color:#bbf7d0;color:#166534}
.ck-login>div{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.ck-login small{font-size:12.5px;opacity:.85}
.ck-login a{color:inherit;text-decoration:underline}
.ck-login .ck-btn{flex:0 0 auto;min-height:40px;padding:0 16px;border-radius:10px;background:#1e40af;color:#fff!important;text-decoration:none!important;display:inline-flex;align-items:center;font-weight:700;white-space:nowrap}
.ck-ico{flex:0 0 20px;width:20px;height:20px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21a8 8 0 0 1 16 0'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21a8 8 0 0 1 16 0'/%3E%3C/svg%3E") center/contain no-repeat}
@media (max-width:575px){.ck-login{flex-wrap:wrap}.ck-login .ck-btn{width:100%;justify-content:center}}

/* ===== css/loading_fx.css ===== */
/* ================================================
*  css/loading_fx.css  20261101 前台載入畫面（取代舊的黑底點點轉圈）
*  #loadingMask 仍由 plugins/ajax/ajax_fun.js 用 visibility 開關；
*  這裡讓它淡入（延遲 0.15 秒，很快就完成的請求不會閃一下）、白色霧面底、品牌色圓環
================================================ */
#loadingMask.lw-ld
{
	position: fixed;
	inset: 0;
	width: auto;
	height: auto;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 16px;
	background: rgba( 255, 255, 255, .55 );
	-webkit-backdrop-filter: blur( 6px ) saturate( 120% );
	backdrop-filter: blur( 6px ) saturate( 120% );
	z-index: 10000;
	visibility: hidden;
	opacity: 0;
	pointer-events: none; /* 淡出中不擋點擊 */
	transition: opacity .2s ease, visibility 0s linear .2s;
}
#loadingMask.lw-ld[style*="visible"]
{
	opacity: 1;
	pointer-events: auto;
	transition: opacity .25s ease .15s, visibility 0s linear 0s;
}
#loadingMask.lw-ld .lw-ld-card
{
	position: static;
	width: auto;
	min-width: 168px;
	max-width: min( 320px, 100% );
	margin: 0;
	padding: 22px 28px 18px;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 14px;
	background: #fff;
	border: 1px solid rgba( 15, 23, 42, .06 );
	border-radius: 16px;
	box-shadow: 0 12px 40px rgba( 15, 23, 42, .12 ), 0 2px 6px rgba( 15, 23, 42, .06 );
	color: #334155;
	letter-spacing: .02em;
	transform: translateY( 6px ) scale( .98 );
	transition: transform .25s ease .15s;
}
#loadingMask.lw-ld[style*="visible"] .lw-ld-card { transform: none; }
#loadingMask.lw-ld .lw-ld-ring
{
	width: 38px;
	height: 38px;
	border-radius: 50%;
	background: conic-gradient( from 0deg, rgba( 255, 138, 0, 0 ) 0deg, var( --cta-primary, #ff8a00 ) 300deg, var( --cta-primary, #ff8a00 ) 360deg );
	-webkit-mask: radial-gradient( farthest-side, transparent calc( 100% - 4px ), #000 calc( 100% - 3.5px ) );
	mask: radial-gradient( farthest-side, transparent calc( 100% - 4px ), #000 calc( 100% - 3.5px ) );
	animation: lw-ld-spin .8s linear infinite;
}
#loadingMask.lw-ld #loading_text
{
	font-size: 14px;
	line-height: 1.5;
	text-align: center;
	color: #475569;
}
@keyframes lw-ld-spin { to { transform: rotate( 360deg ); } }
@media ( prefers-reduced-motion: reduce )
{
	#loadingMask.lw-ld .lw-ld-ring { animation-duration: 2s; }
	#loadingMask.lw-ld, #loadingMask.lw-ld .lw-ld-card { transition: none; }
}

/* ===== css/retention.css ===== */
/* 20261031 留客功能：歡迎回來列、貨到通知我（js/retention_fun.js） */
.rt-bar, .rt-modal, .rt-restock-btn{ --rt-c: var(--sp-primary, #365a9e); --rt-hot: var(--sp-cta, #F97316); }

/* ── 歡迎回來列：畫面下方浮出，不推動版面 ── */
.rt-bar{ position:fixed; left:50%; bottom:16px; z-index:9000; width:min(760px, calc(100% - 24px)); transform:translate(-50%, 140%); transition:transform .35s ease; }
.rt-bar.is-in{ transform:translate(-50%, 0); }
.rt-bar-in{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:12px 44px 12px 16px; background:#fff; border:1px solid #e2e8f0; border-radius:14px; box-shadow:0 12px 32px rgba(15,23,42,.18); position:relative; }
.rt-bar-hi{ font-size:14.5px; color:#0f172a; white-space:nowrap; }
.rt-bar-chip{ display:inline-flex; align-items:center; gap:8px; max-width:100%; padding:8px 12px; border-radius:10px; background:#f1f5f9; color:#334155 !important; font-size:13.5px; text-decoration:none !important; line-height:1.4; }
.rt-bar-chip span{ overflow:hidden; text-overflow:ellipsis; }
.rt-bar-chip em{ font-style:normal; font-weight:700; color:var(--rt-c); white-space:nowrap; }
.rt-bar-chip.is-hot{ background:color-mix(in srgb, var(--rt-hot) 10%, #fff); }
.rt-bar-chip.is-hot em{ color:var(--rt-hot); }
.rt-bar-chip:hover{ filter:brightness(.97); }
.rt-bar-x{ position:absolute; top:50%; right:8px; transform:translateY(-50%); width:30px; height:30px; border:0; background:transparent; color:#94a3b8; font-size:22px; line-height:1; cursor:pointer; border-radius:8px; }
.rt-bar-x:hover{ background:#f1f5f9; color:#475569; }
@media (max-width:640px){
	/* 手機下方有購物車列與聯絡按鈕，改從上方出現 */
	.rt-bar{ bottom:auto; top:calc(8px + env(safe-area-inset-top, 0px)); transform:translate(-50%, -160%); }
	.rt-bar.is-in{ transform:translate(-50%, 0); }
	.rt-bar-in{ padding:10px 40px 10px 12px; gap:8px; }
	.rt-bar-hi{ width:100%; font-size:14px; }
	.rt-bar-chip{ width:100%; justify-content:space-between; }
}
@media (prefers-reduced-motion: reduce){ .rt-bar{ transition:none; } }

/* ── 商品頁「到貨通知我」 ── */
.rt-restock-btn{ display:flex; align-items:center; justify-content:center; gap:8px; width:100%; margin-top:10px; min-height:46px; padding:0 16px; border:1.5px solid var(--rt-c); border-radius:10px; background:#fff; color:var(--rt-c); font-size:15px; font-weight:700; cursor:pointer; }
.rt-restock-btn:hover{ background:color-mix(in srgb, var(--rt-c) 8%, #fff); }
.rt-restock-btn.is-done{ border-color:#16a34a; color:#16a34a; cursor:default; background:#f0fdf4; }

/* ── 登記視窗 ── */
.rt-modal[hidden]{ display:none !important; }
.rt-modal{ position:fixed; inset:0; z-index:9500; display:flex; align-items:center; justify-content:center; padding:16px; }
.rt-modal-mask{ position:absolute; inset:0; background:rgba(15,23,42,.5); }
.rt-modal-box{ position:relative; width:100%; max-width:400px; background:#fff; border-radius:16px; padding:24px 22px 20px; box-shadow:0 24px 60px rgba(15,23,42,.3); }
.rt-modal-box h3{ margin:0 0 6px; font-size:18px; color:#0f172a; }
.rt-modal-name{ margin:0 0 6px; font-size:14px; font-weight:600; color:#334155; }
.rt-modal-desc{ margin:0 0 14px; font-size:13px; color:#64748b; }
.rt-modal-form{ display:flex; gap:8px; }
.rt-modal-form input{ flex:1; min-width:0; height:44px; padding:0 12px; border:1px solid #cbd5e1; border-radius:10px; font-size:16px; }
.rt-modal-form input:focus{ outline:2px solid var(--rt-c); outline-offset:1px; border-color:transparent; }
.rt-modal-form button{ height:44px; padding:0 16px; border:0; border-radius:10px; background:var(--rt-c); color:#fff; font-size:15px; font-weight:700; cursor:pointer; white-space:nowrap; }
.rt-modal-form button:disabled{ opacity:.6; }
.rt-modal-msg{ margin:10px 0 0; font-size:13.5px; min-height:1em; }
.rt-modal-msg.is-ok{ color:#16a34a; } .rt-modal-msg.is-err{ color:#dc2626; }
.rt-modal-x{ position:absolute; top:10px; right:10px; width:32px; height:32px; border:0; background:transparent; font-size:24px; line-height:1; color:#94a3b8; cursor:pointer; border-radius:8px; }
.rt-modal-x:hover{ background:#f1f5f9; }

/* ===== css/smart_checkout.css ===== */
/* 20261101 購物流程：貼心小提醒、記住寄送資料、快速結帳抽屜（js/smart_checkout.js） */
.sc-box, .sc-last, .sc-sheet{ --sc-c: var(--sp-primary, #365a9e); --sc-hot: var(--sp-cta, #F97316); letter-spacing:normal; }
.sc-box *, .sc-last *, .sc-sheet *{ letter-spacing:normal; box-sizing:border-box; }

/* ── 帶入上次資料 ── */
.sc-last{ display:flex; align-items:center; gap:8px; margin:0 0 10px; padding:10px 12px; border-radius:10px; background:#f0fdf4; color:#166534; font-size:13.5px; line-height:1.5; }
.sc-last svg{ flex:0 0 16px; }
.sc-last span{ flex:1; min-width:0; }
.sc-last button{ border:0; background:transparent; color:#64748b; font-size:12.5px; text-decoration:underline; cursor:pointer; white-space:nowrap; padding:2px 4px; }

/* ── 貼心小提醒 ── */
.sc-box{ margin:0 0 12px; padding:12px 14px; border:1px solid #fde4cf; border-radius:12px; background:#fffaf5; }
.sc-hd{ display:flex; align-items:center; gap:6px; font-size:13.5px; font-weight:700; color:#c2410c; margin-bottom:8px; }
.sc-ship{ margin-bottom:8px; }
.sc-ship-t{ font-size:14px; color:#334155; margin-bottom:6px; }
.sc-ship-t b{ color:var(--sc-hot); }
.sc-ship.is-ok .sc-ship-t b{ color:#16a34a; }
.sc-bar{ height:6px; border-radius:3px; background:#fde7d3; overflow:hidden; }
.sc-bar i{ display:block; height:100%; border-radius:3px; background:var(--sc-hot); transition:width .4s ease; }
.sc-ship.is-ok .sc-bar i{ background:#16a34a; }
.sc-list{ display:flex; flex-direction:column; gap:8px; }
.sc-it{ display:flex; align-items:center; gap:10px; padding:8px; border-radius:10px; background:#fff; border:1px solid #f1f5f9; }
.sc-img{ width:52px; height:52px; flex:0 0 52px; border-radius:8px; background:#f1f5f9; overflow:hidden; display:block; }
.sc-img img{ width:100%; height:100%; object-fit:cover; display:block; }
.sc-txt{ flex:1; min-width:0; display:flex; flex-direction:column; gap:1px; line-height:1.4; }
.sc-txt small{ font-size:12px; color:#c2410c; }
.sc-txt a{ font-size:14px; color:#0f172a !important; text-decoration:none !important; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.sc-txt b{ font-size:14px; color:#0f172a; }
.sc-add{ flex:0 0 auto; min-height:38px; padding:0 14px; border:0; border-radius:9px; background:var(--sc-hot); color:#fff !important; font-size:14px; font-weight:700; cursor:pointer; display:inline-flex; align-items:center; text-decoration:none !important; white-space:nowrap; }
.sc-add.is-ghost{ background:#fff; color:var(--sc-c) !important; border:1.5px solid var(--sc-c); }
.sc-add:disabled{ background:#16a34a; cursor:default; }

/* ── 快速結帳抽屜 ── */
html.sc-lock, html.sc-lock body{ overflow:hidden; }
.sc-sheet[hidden]{ display:none !important; }
.sc-sheet{ position:fixed; inset:0; z-index:9600; display:flex; align-items:flex-end; justify-content:center; }
.sc-sheet-mask{ position:absolute; inset:0; background:rgba(15,23,42,.5); opacity:0; transition:opacity .25s ease; }
.sc-sheet-box{ position:relative; width:100%; max-width:520px; max-height:88vh; display:flex; flex-direction:column; background:#fff; border-radius:18px 18px 0 0; transform:translateY(100%); transition:transform .28s ease; padding-bottom:env(safe-area-inset-bottom, 0px); }
.sc-sheet.is-in .sc-sheet-mask{ opacity:1; }
.sc-sheet.is-in .sc-sheet-box{ transform:translateY(0); }
.sc-grip{ width:40px; height:4px; border-radius:2px; background:#e2e8f0; margin:8px auto 0; }
.sc-sheet-hd{ display:flex; align-items:center; justify-content:space-between; padding:6px 16px 4px; }
.sc-sheet-hd h3{ margin:0; font-size:17px; color:#0f172a; }
.sc-x{ width:36px; height:36px; border:0; background:transparent; font-size:26px; line-height:1; color:#94a3b8; cursor:pointer; border-radius:8px; }
.sc-x:hover{ background:#f1f5f9; }
.sc-sheet-bd{ overflow:auto; padding:6px 16px 10px; display:flex; flex-direction:column; gap:10px; }
.sc-prod{ display:flex; gap:12px; align-items:center; }
.sc-prod .sc-img{ width:64px; height:64px; flex-basis:64px; }
.sc-ok{ font-size:12.5px; color:#16a34a; font-weight:700; }
.sc-pn{ font-size:15px; color:#0f172a; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.sc-prod .sc-txt small{ color:#64748b; font-size:12.5px; }
.sc-row{ font-size:13.5px; color:#475569; padding:10px 12px; border-radius:10px; background:#f8fafc; display:flex; gap:8px; align-items:flex-start; line-height:1.5; }
.sc-row b{ color:#0f172a; }
.sc-row svg{ flex:0 0 16px; margin-top:2px; color:var(--sc-c); }
.sc-row span small{ display:block; color:#94a3b8; font-size:12px; }
.sc-sheet .sc-box{ margin:0; }
.sc-safe{ display:flex; align-items:center; gap:6px; justify-content:center; font-size:12px; color:#64748b; }
.sc-sheet-ft{ display:flex; gap:10px; padding:10px 16px 14px; border-top:1px solid #f1f5f9; }
.sc-ghost{ flex:0 0 auto; min-height:48px; padding:0 16px; border:1px solid #cbd5e1; border-radius:12px; background:#fff; color:#475569; font-size:15px; cursor:pointer; }
.sc-go{ flex:1; min-height:48px; display:flex; align-items:center; justify-content:center; border-radius:12px; background:var(--sc-hot); color:#fff !important; font-size:16px; font-weight:700; text-decoration:none !important; }
.sc-go:hover{ filter:brightness(.96); }
@media (min-width:768px){
	.sc-sheet{ align-items:center; }
	.sc-sheet-box{ border-radius:18px; transform:translateY(24px); opacity:0; transition:transform .25s ease, opacity .25s ease; }
	.sc-sheet.is-in .sc-sheet-box{ opacity:1; }
	.sc-grip{ display:none; }
}
@media (prefers-reduced-motion: reduce){ .sc-sheet-box, .sc-sheet-mask, .sc-bar i{ transition:none; } }

/* ── 20261101 購物車頁的貼心小提醒：放在已選商品下方，外觀和購物車商品明顯區隔（虛線框、較小圖、外框按鈕），避免誤認為已購買 ── */
#lwScCart{ padding:4px 15px 12px; }
.sc-box.is-cart{ margin:0; border:1.5px dashed #fdba74; background:#fffbf7; }
.sc-box.is-cart .sc-hd{ flex-wrap:wrap; }
.sc-note{ flex-basis:100%; font-size:12.5px; font-weight:400; color:#64748b; }
@media (min-width:576px){ .sc-note{ flex-basis:auto; margin-left:6px; } .sc-note::before{ content:"．"; } }
.sc-box.is-cart .sc-it{ background:transparent; border:0; border-top:1px dashed #fde4cf; border-radius:0; padding:8px 0 0; }
.sc-box.is-cart .sc-it:first-child{ border-top:0; padding-top:0; }
.sc-box.is-cart .sc-img{ width:44px; height:44px; flex-basis:44px; opacity:.92; }
.sc-box.is-cart .sc-txt a, .sc-box.is-cart .sc-txt b{ font-size:13.5px; font-weight:500; }
.sc-box.is-cart .sc-add{ min-height:36px; background:#fff; color:var(--sc-hot) !important; border:1.5px solid var(--sc-hot); }
.sc-box.is-cart .sc-add:hover{ background:#fff7ed; }
.sc-box.is-cart .sc-add:disabled{ background:#16a34a; border-color:#16a34a; color:#fff !important; }

/* 20261101 統一用 CSS 圖示（取代 ✓ / ⚠ 字元） */
.sc-ok::before{content:"";display:inline-block;vertical-align:-2px;width:13px;height:13px;margin-right:4px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/contain no-repeat;}
.lw-warn-line::before{content:"";display:inline-block;vertical-align:-3px;width:16px;height:16px;margin-right:5px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10.3 3.9 1.8 18a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0z'/%3E%3Cpath d='M12 9v4M12 17h.01'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10.3 3.9 1.8 18a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0z'/%3E%3Cpath d='M12 9v4M12 17h.01'/%3E%3C/svg%3E") center/contain no-repeat;}
