/* ============ 空想士多 · 样式 ============ */
:root{
  --brand:#F97316; --brand-2:#EA580C; --brand-weak:#FDBA74;
  --brand-bg:#FFF3EA; --brand-line:#FFE0C7;
  --bg:#F4F5F7; --card:#FFFFFF; --line:#EAECF0; --line-2:#F1F3F5;
  --text:#17181C; --text-2:#6A7280; --text-3:#9CA3AF;
  --ok:#10B981; --ok-bg:#E7F8F1;
  --warn:#F59E0B; --warn-bg:#FEF4E2;
  --danger:#EF4444; --danger-bg:#FDECEC;
  --info:#3B82F6; --info-bg:#EAF1FE;
  --radius:16px; --radius-s:12px;
  --shadow:0 1px 2px rgba(16,24,40,.05),0 4px 14px rgba(16,24,40,.06);
  --shadow-lg:0 8px 30px rgba(16,24,40,.14);
  --topbar-h:56px; --tabbar-h:62px;
  --safe-b:env(safe-area-inset-bottom,0px);
}
[data-theme="dark"]{
  --bg:#0E1013; --card:#171A20; --line:#262B34; --line-2:#1E222A;
  --text:#F1F3F6; --text-2:#9AA3B2; --text-3:#6B7280;
  --brand-bg:rgba(249,115,22,.13); --brand-line:rgba(249,115,22,.3);
  --ok-bg:rgba(16,185,129,.12); --warn-bg:rgba(245,158,11,.12);
  --danger-bg:rgba(239,68,68,.12); --info-bg:rgba(59,130,246,.12);
  --shadow:0 1px 2px rgba(0,0,0,.25),0 4px 14px rgba(0,0,0,.3);
  --shadow-lg:0 8px 30px rgba(0,0,0,.5);
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{font-size:16px}
body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","HarmonyOS Sans SC","Microsoft YaHei",sans-serif;
  background:var(--bg);color:var(--text);
  line-height:1.5;-webkit-font-smoothing:antialiased;
}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
input,select,textarea{font:inherit;color:inherit}
svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
::placeholder{color:var(--text-3)}

/* ============ App 骨架 ============ */
#app{max-width:560px;margin:0 auto;min-height:100dvh;position:relative}
#topbar{
  position:sticky;top:0;z-index:20;height:var(--topbar-h);
  display:flex;align-items:center;gap:10px;padding:0 16px;
  background:color-mix(in srgb,var(--bg) 86%,transparent);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid transparent;
}
#topbar.scrolled{border-bottom-color:var(--line)}
#topbar h1{font-size:18px;font-weight:700;letter-spacing:.2px}
#topbar .sub{font-size:12px;color:var(--text-3);font-weight:400}
.topbar-actions{margin-left:auto;display:flex;gap:4px}
.icon-btn{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;color:var(--text-2)}
.icon-btn:active{background:var(--line-2)}

#view{padding:12px 16px calc(var(--tabbar-h) + var(--safe-b) + 130px)}

#tabbar{
  position:fixed;bottom:0;left:50%;transform:translateX(-50%);
  width:100%;max-width:560px;height:calc(var(--tabbar-h) + var(--safe-b));
  padding-bottom:var(--safe-b);
  display:flex;background:color-mix(in srgb,var(--card) 92%,transparent);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border-top:1px solid var(--line);z-index:30;
}
.tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--text-3)}
.tab svg{width:23px;height:23px;transition:transform .15s}
.tab span{font-size:10.5px;font-weight:500}
.tab.active{color:var(--brand)}
.tab.active svg{transform:translateY(-1px)}

/* FAB */
#fabWrap{position:fixed;bottom:calc(var(--tabbar-h) + var(--safe-b) + 18px);left:50%;transform:translateX(-50%);width:100%;max-width:560px;pointer-events:none;z-index:25}
#fab{
  position:absolute;right:18px;bottom:0;pointer-events:auto;
  width:52px;height:52px;border-radius:50%;
  background:linear-gradient(135deg,var(--brand),var(--brand-2));
  color:#fff;display:grid;place-items:center;
  box-shadow:0 6px 18px rgba(234,88,12,.38);
}
#fab svg{width:24px;height:24px}
#fab:active{transform:scale(.94)}

/* ============ 通用组件 ============ */
.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px}
.card + .card{margin-top:12px}
.section-title{font-size:13px;font-weight:600;color:var(--text-2);margin:20px 2px 10px;display:flex;align-items:center;gap:6px}
.section-title .more{margin-left:auto;font-size:12px;color:var(--brand);font-weight:500}

.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;white-space:nowrap}
.badge::before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}
.badge.ok{background:var(--ok-bg);color:var(--ok)}
.badge.warn{background:var(--warn-bg);color:var(--warn)}
.badge.danger{background:var(--danger-bg);color:var(--danger)}
.badge.info{background:var(--info-bg);color:var(--info)}
.badge.brand{background:var(--brand-bg);color:var(--brand)}
.badge.plain{background:var(--line-2);color:var(--text-2)}
.badge.plain::before{display:none}

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:10px 16px;border-radius:12px;font-size:14px;font-weight:600;
  background:var(--line-2);color:var(--text);transition:filter .12s;
}
.btn:active{filter:brightness(.93)}
.btn svg{width:16px;height:16px}
.btn-primary{background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;box-shadow:0 3px 10px rgba(234,88,12,.28)}
.btn-danger{background:var(--danger);color:#fff}
.btn-ghost{background:transparent;color:var(--text-2);font-weight:500}
.btn-block{width:100%}
.btn-sm{padding:6px 12px;font-size:12.5px;border-radius:10px}
.btn[disabled]{opacity:.45;pointer-events:none}

/* 空状态 */
.empty{padding:44px 20px;text-align:center;color:var(--text-3)}
.empty .eicon{font-size:40px;margin-bottom:10px;opacity:.8}
.empty p{font-size:13.5px}
.empty .sub{font-size:12px;color:var(--text-3);margin-top:4px}

/* 搜索框 */
.searchbar{
  display:flex;align-items:center;gap:8px;background:var(--card);
  border-radius:12px;padding:9px 12px;margin-bottom:12px;box-shadow:var(--shadow);
}
.searchbar svg{width:16px;height:16px;color:var(--text-3)}
.searchbar input{flex:1;border:none;outline:none;background:none;font-size:14px;color:var(--text)}
.searchbar input::placeholder{color:var(--text-3)}

/* 列表卡片 */
.list-card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 14px 4px}

/* 年月筛选条 */
.filter-bar{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.filter-month{flex:1;min-width:0;display:flex;align-items:center;gap:8px;background:var(--card);border-radius:12px;padding:9px 12px;box-shadow:var(--shadow)}
.filter-month svg{width:16px;height:16px;color:var(--text-3);flex-shrink:0}
.filter-month input{flex:1;min-width:0;border:none;outline:none;background:none;font-size:14px;color:var(--text);font-family:inherit}
.filter-sep{font-size:12px;color:var(--text-3);flex-shrink:0}
.filter-clear{display:inline-flex;align-items:center;gap:4px;padding:9px 12px;border-radius:12px;border:none;background:var(--brand-bg);color:var(--brand);font-size:13px;font-weight:600;flex-shrink:0}
.filter-clear svg{width:14px;height:14px}

/* 寄售汇总卡 */
.summary-card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px;margin-top:14px}
.summary-head{font-size:13px;font-weight:600;color:var(--text-2);display:flex;align-items:center;gap:6px;margin-bottom:10px}
.summary-head svg{width:15px;height:15px}
.summary-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.sum-cell{background:var(--line-2);border-radius:10px;padding:12px 8px;text-align:center}
.sum-cell .v{font-size:19px;font-weight:800;letter-spacing:-.3px}
.sum-cell .v.income{color:var(--ok)}
.sum-cell .l{font-size:11px;color:var(--text-3);margin-top:3px}
.list-card .row{
  display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line-2);
}
.list-card .row:last-child{border-bottom:none}
.list-card .row:active{background:var(--line-2);margin:0 -8px;padding-left:8px;padding-right:8px;border-radius:10px}
.row-main{flex:1;min-width:0}
.row-title{font-size:15px;font-weight:600;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.row-title .badge{flex-shrink:0}
.row-sub{font-size:12px;color:var(--text-2);margin-top:2px;display:flex;gap:10px;flex-wrap:wrap}
.row-sub b{color:var(--text);font-weight:600}
.row-right{text-align:right;flex-shrink:0;max-width:33%;min-width:0}
.row-right .amt{font-size:15px;font-weight:700}
.row-right .note{font-size:11px;color:var(--text-3);margin-top:2px}
.chevron{color:var(--text-3);opacity:.6}
.chevron svg{width:16px;height:16px}

/* 统计卡（总览） */
.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.stat-card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:13px 14px;position:relative;overflow:hidden}
.stat-card .label{font-size:12px;color:var(--text-2)}
.stat-card .value{font-size:22px;font-weight:800;margin-top:4px;letter-spacing:-.3px}
.stat-card .value small{font-size:12px;font-weight:600;color:var(--text-3)}
.stat-card .trend{font-size:11px;margin-top:3px;color:var(--text-3)}
.stat-card.primary{background:linear-gradient(135deg,#F97316,#EA580C);color:#fff;box-shadow:0 6px 16px rgba(234,88,12,.3)}
.stat-card.primary .label,.stat-card.primary .trend{color:rgba(255,255,255,.85)}
.stat-card .sicon{position:absolute;right:12px;top:12px;opacity:.16}
.stat-card .sicon svg{width:30px;height:30px}

/* 商品卡片 avatar：无背景无圆角（2026-08-31 用户要求图标不带背景、不要圆角裁切） */
.p-avatar{
  width:18%;aspect-ratio:1/1;flex-shrink:0;
  display:grid;place-items:center;font-size:22px;
  background:none;
  overflow:hidden;
}
/* 图片原尺寸显示：不放大不裁切，超出容器才等比缩小。
   img 用绝对定位+inset:0+margin:auto：脱离 grid 布局流，max-height 百分比相对确定高度的包含块才可靠（grid 单行 auto 高度下百分比会失效导致竖图溢出裁切——已实测复现） */
.p-avatar{position:relative}
.p-avatar img{position:absolute;inset:0;margin:auto;max-width:100%;max-height:100%;width:auto;height:auto;display:block}
.big-avatar{position:relative}
.big-avatar img{position:absolute;inset:0;margin:auto;max-width:100%;max-height:100%;width:auto;height:auto;display:block}
.stock-bar{height:5px;border-radius:99px;background:var(--line-2);margin-top:7px;overflow:hidden}
.stock-bar i{display:block;height:100%;border-radius:99px;background:var(--brand);transition:width .3s}
.stock-bar i.low{background:var(--warn)}
.stock-bar i.out{background:var(--danger)}

/* 店铺财务条 */
.fin-row{display:flex;gap:6px;margin-top:12px;padding-top:12px;border-top:1px dashed var(--line)}
.fin-cell{flex:1;text-align:center}
.fin-cell .v{font-size:15px;font-weight:700}
.fin-cell .v.income{color:var(--ok)}
.fin-cell .v.pending{color:var(--brand)}
.fin-cell .l{font-size:11px;color:var(--text-3);margin-top:2px}

/* 活动 */
.ev-date{
  width:52px;flex-shrink:0;text-align:center;border-radius:12px;
  background:var(--brand-bg);color:var(--brand);padding:8px 0;
}
.ev-date .d{font-size:20px;font-weight:800;line-height:1.1}
.ev-date .m{font-size:11px;font-weight:600}
.ev-progress{height:6px;border-radius:99px;background:var(--line-2);overflow:hidden;margin-top:8px}
.ev-progress i{display:block;height:100%;background:var(--brand);border-radius:99px}

/* 详情页 */
.detail-head{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.detail-head .big-avatar{width:56px;height:56px;display:grid;place-items:center;font-size:26px;background:none;flex-shrink:0;overflow:hidden}
.detail-head h2{font-size:19px;font-weight:700}
.detail-head .meta{font-size:12.5px;color:var(--text-2);margin-top:2px}
.stock-split{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px}
.split-cell{background:var(--line-2);border-radius:10px;padding:8px 4px;text-align:center}
.split-cell .v{font-size:16px;font-weight:700}
.split-cell .l{font-size:10.5px;color:var(--text-3);margin-top:1px}
.split-cell.warn .v{color:var(--warn)}
.split-cell.danger .v{color:var(--danger)}

.flow-list{margin-top:4px}
.flow-item{display:flex;gap:12px;padding:10px 0;border-bottom:1px solid var(--line-2);font-size:13px}
.flow-item:last-child{border-bottom:none}
.flow-dot{width:8px;height:8px;border-radius:50%;margin-top:6px;flex-shrink:0}
.flow-avatar{width:30px;height:30px;flex-shrink:0;position:relative;font-size:16px;display:flex;align-items:center;justify-content:center}
.flow-avatar img{position:absolute;inset:0;margin:auto;max-width:100%;max-height:100%;width:auto;height:auto;display:block}
.flow-dot.in{background:var(--ok)}.flow-dot.out{background:var(--warn)}
.flow-dot.sale{background:var(--brand)}.flow-dot.ev{background:var(--info)}
.flow-main{flex:1}
.flow-main .t{font-weight:600;font-size:13.5px}
.flow-main .s{color:var(--text-3);font-size:11.5px;margin-top:1px}
.flow-right{text-align:right;flex-shrink:0}
.flow-right .n{font-weight:700;font-size:13.5px}
.flow-right .n.plus{color:var(--ok)}
.flow-right .n.minus{color:var(--warn)}
.flow-right .n.sale{color:var(--brand)}
.flow-right .d{color:var(--text-3);font-size:11px;margin-top:1px}

/* 动作按钮组 */
.action-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}
.action-cell{
  display:flex;flex-direction:column;align-items:center;gap:6px;
  background:var(--line-2);border-radius:12px;padding:12px 4px;font-size:12px;font-weight:600;color:var(--text-2);
}
.action-cell svg{width:20px;height:20px}
.action-cell.brand{background:var(--brand-bg);color:var(--brand)}
.action-cell:active{filter:brightness(.94)}

/* 时间线（动态） */
.tl{position:relative;padding-left:18px}
.tl::before{content:"";position:absolute;left:5px;top:8px;bottom:8px;width:2px;background:var(--line)}
.tl-item{position:relative;padding:7px 0}
.tl-item::before{content:"";position:absolute;left:-16px;top:13px;width:8px;height:8px;border-radius:50%;background:var(--brand);border:2px solid var(--card)}
.tl-item .t{font-size:13.5px;font-weight:600}
.tl-item .s{font-size:11.5px;color:var(--text-3);margin-top:1px}
.tl-item .amt{float:right;font-weight:700;font-size:13.5px;color:var(--brand)}

/* 我的页 */
.profile-head{display:flex;align-items:center;gap:14px;padding:18px 16px}
.profile-head .ph-avatar{
  width:58px;height:58px;border-radius:50%;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;font-size:26px;
}
.profile-head h2{font-size:18px;font-weight:700}
.profile-head .p{font-size:12.5px;color:var(--text-2);margin-top:2px}
.menu-list{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
.menu-item{display:flex;align-items:center;gap:12px;padding:14px;font-size:14.5px;font-weight:500;border-bottom:1px solid var(--line-2)}
.menu-item .mi-sub{font-size:12px;color:var(--text-3);font-weight:400;margin-left:-4px}
.menu-item:last-child{border-bottom:none}
.menu-item:active{background:var(--line-2)}
.menu-item .mi{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;font-size:16px;background:var(--line-2)}
.menu-item .mi.b{background:var(--brand-bg)}
.menu-item .mi.g{background:var(--ok-bg)}
.menu-item .mi.r{background:var(--danger-bg)}
.menu-item .mi.i{background:var(--info-bg)}
.menu-item .chevron{margin-left:auto}

/* ============ 弹层（底部 sheet） ============ */
.mask{position:fixed;inset:0;background:rgba(10,12,16,.45);z-index:40;opacity:0;pointer-events:none;transition:opacity .2s}
.mask.show{opacity:1;pointer-events:auto}
#sheet{
  position:fixed;left:50%;bottom:0;transform:translate(-50%,105%);
  width:100%;max-width:560px;max-height:88dvh;overflow-y:auto;
  background:var(--card);border-radius:20px 20px 0 0;z-index:41;
  transition:transform .26s cubic-bezier(.32,.72,.28,1);
  padding:8px 20px calc(20px + var(--safe-b));
  box-shadow:var(--shadow-lg);
}
#sheet.show{transform:translate(-50%,0)}
.sheet-grab{width:36px;height:4px;border-radius:99px;background:var(--line);margin:8px auto 14px}
.sheet-head{display:flex;align-items:center;margin-bottom:14px}
.sheet-head h3{font-size:17px;font-weight:700}
.sheet-head .close{margin-left:auto;width:32px;height:32px;border-radius:50%;background:var(--line-2);display:grid;place-items:center;color:var(--text-2)}
.sheet-head .close svg{width:15px;height:15px}

/* 表单 */
.form-row{margin-bottom:14px}
.form-label{display:block;font-size:12.5px;font-weight:600;color:var(--text-2);margin-bottom:6px}
.form-input{
  width:100%;border:1.5px solid var(--line);background:var(--bg);
  border-radius:12px;padding:11px 13px;font-size:15px;outline:none;transition:border-color .15s;
}
.form-input:focus{border-color:var(--brand)}
textarea.form-input{resize:none;min-height:64px}
select.form-input{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239CA3AF' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 13px center}
.input-group{display:flex;gap:10px}
.input-group .form-row{flex:1}
.input-suffix{position:relative}
.input-suffix .suf{position:absolute;right:13px;top:50%;transform:translateY(-50%);font-size:13px;color:var(--text-3);pointer-events:none}
.input-suffix .form-input{padding-right:44px}
.form-hint{font-size:11.5px;color:var(--text-3);margin:5px 0 0}
.qty-stepper{display:flex;align-items:center;gap:0;background:var(--bg);border:1.5px solid var(--line);border-radius:12px;overflow:hidden}
.qty-stepper button{width:44px;height:44px;font-size:20px;font-weight:600;color:var(--text-2);background:none}
.qty-stepper button:active{background:var(--line)}
.qty-stepper input{flex:1;min-width:0;border:none;outline:none;background:none;text-align:center;font-size:16px;font-weight:700;color:var(--text)}

/* ============ 确认弹窗 ============ */
#confirmBox{
  position:fixed;left:50%;top:50%;transform:translate(-50%,-50%) scale(.94);
  width:calc(100% - 64px);max-width:340px;background:var(--card);
  border-radius:18px;padding:22px 20px 14px;z-index:41;opacity:0;pointer-events:none;
  transition:all .18s;box-shadow:var(--shadow-lg);text-align:center;
}
#confirmBox.show{opacity:1;pointer-events:auto;transform:translate(-50%,-50%) scale(1)}
#confirmText{font-size:15px;font-weight:600;line-height:1.55}
#confirmText .sub{display:block;font-size:12.5px;font-weight:400;color:var(--text-2);margin-top:6px}
.confirm-actions{display:flex;gap:10px;margin-top:18px}
.confirm-actions .btn{flex:1;padding:11px 0}

/* ============ Toast ============ */
#toast{
  position:fixed;left:50%;bottom:calc(var(--tabbar-h) + var(--safe-b) + 40px);transform:translateX(-50%) translateY(8px);
  background:rgba(23,24,28,.92);color:#fff;font-size:13.5px;font-weight:500;
  padding:10px 18px;border-radius:999px;z-index:60;opacity:0;pointer-events:none;
  transition:all .22s;max-width:82vw;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
[data-theme="dark"] #toast{background:rgba(241,243,246,.92);color:#17181C}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ============ 桌面美化 ============ */
@media (min-width:700px){
  body{background:
    radial-gradient(1000px 500px at 80% -10%, color-mix(in srgb,var(--brand) 7%,transparent), transparent),
    var(--bg)}
  #app{border-left:1px solid var(--line);border-right:1px solid var(--line);min-height:100dvh;box-shadow:0 0 40px rgba(16,24,40,.05)}
}

/* ============ 商品图片编辑 ============ */
.img-row{display:flex;gap:10px;align-items:center}
.img-preview{width:92px;height:92px;border-radius:0;background:none;display:grid;place-items:center;font-size:12px;color:var(--text-3);flex-shrink:0;position:relative}
.img-preview img{position:absolute;inset:0;margin:auto;max-width:100%;max-height:100%;width:auto;height:auto;display:block}
.img-ops{display:flex;flex-direction:column;gap:6px}
/* 图标上传（48px 小预览）：无背景无圆角（2026-08-31 与全站图标风格统一） */
.icon-row{display:flex;gap:10px;align-items:center;margin-top:10px}
.icon-preview{width:48px;height:48px;border-radius:0;background:none;display:grid;place-items:center;font-size:10px;color:var(--text-3);flex-shrink:0;position:relative}
.icon-preview img{position:absolute;inset:0;margin:auto;max-width:100%;max-height:100%;width:auto;height:auto;display:block}
.icon-ops{display:flex;flex-direction:column;gap:6px}
/* 店铺详情：店内商品库存网格 */
.store-goods{display:grid;grid-template-columns:repeat(auto-fill,minmax(50px,1fr));gap:6px}
.goods-item{display:flex;flex-direction:column;align-items:center;gap:5px;padding:8px 4px;border-radius:10px;cursor:pointer}
.goods-item:active{background:var(--line-2)}
.goods-item .p-avatar{width:100%;aspect-ratio:1/1;background:none}
.g-name{font-size:11px;color:var(--text-2);max-width:100%;line-height:1.25;text-align:center;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-all;min-height:2.5em}
.g-qty{font-size:12.5px;font-weight:700;color:var(--brand)}

/* ============ 组成部分（编辑行） ============ */
.part-card{background:var(--line-2);border-radius:12px;padding:10px;margin-bottom:8px}
.part-head{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.part-head .form-input{flex:1}
.part-del{width:34px;height:34px;border:none;background:var(--danger-bg);color:var(--danger);border-radius:10px;font-size:14px;flex-shrink:0}
.part-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.part-field label{font-size:11px;color:var(--text-3);display:block;margin-bottom:3px}
.part-field .form-input{padding:7px 8px}

/* ============ 详情页配件网格 ============ */
.parts-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}
.part-cell{background:var(--line-2);border-radius:10px;padding:8px 6px;text-align:center}
.part-cell .pn{font-size:13px;font-weight:600}
.part-cell .pd{font-size:11px;color:var(--text-2);margin-top:2px}
.part-cell .ps{font-size:11px;color:var(--text-3);margin-top:1px}
.parts-sum{margin-top:10px;padding-top:10px;border-top:1px dashed var(--line);font-size:12.5px;color:var(--text-2)}
.parts-sum b{color:var(--text)}
.parts-spec{margin-top:6px;font-size:11.5px;color:var(--text-3);background:var(--line-2);border-radius:8px;padding:6px 8px}
/* 入库表单：配件消耗预览 */
.pv-list{border:1px solid var(--line);border-radius:10px;padding:2px 10px;margin-bottom:8px;background:var(--bg)}
.pv-row{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px dashed var(--line);font-size:13px}
.pv-row:last-child{border-bottom:none}
.pv-name{flex:1;font-weight:600}
.pv-qty{color:var(--danger);font-weight:600;min-width:44px;text-align:right}
.pv-stock{font-size:12px;color:var(--text-3);min-width:96px;text-align:right}
.pv-row.pv-bad .pv-name{color:var(--danger)}
.pv-row.pv-bad .pv-stock b{color:var(--danger)}
.pv-sum{font-size:12.5px;color:var(--text-2);margin-bottom:4px}
.pv-sum b{color:var(--brand)}
/* 规格配件差异行 */
.diff-row{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.diff-row .form-input{flex:1;padding:7px 8px}
.diff-row .diff-qty{flex:0 0 90px}
/* 套装类型切换（同款装 / 组合装） */
.spec-type-row{display:flex;gap:10px;flex-wrap:wrap;margin:2px 0 10px;font-size:13px;color:var(--text-2)}
.spec-type-row label{display:flex;align-items:center;gap:4px}
/* 组合装成员行 */
.combo-row{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.combo-row .combo-sel{flex:1;padding:7px 8px}
.combo-qty-suffix{flex:0 0 84px;position:relative}
.combo-qty-suffix input{padding-right:26px}
.combo-qty-suffix .suf{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-size:12px;color:var(--text-3)}
/* 详情页组合装成员行 */
.combo-meta{margin-top:4px;font-size:12.5px;color:var(--text-2)}

/* ============ 店铺详情：按月分组 ============ */
.sec-sub{font-size:11px;font-weight:400;color:var(--text-3);margin-left:4px}
.month-group{padding:10px 0;border-bottom:1px dashed var(--line)}
.month-group:last-child{border-bottom:none;padding-bottom:2px}
.mg-head{display:flex;justify-content:space-between;align-items:center;font-size:13.5px;font-weight:600;margin-bottom:8px}
.mg-head b{font-size:13px;color:var(--brand)}
.mg-chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{font-size:12px;background:var(--line-2);border-radius:8px;padding:5px 9px;color:var(--text)}

/* ============ 批量登记弹框 ============ */
.pick-row{display:flex;gap:8px;align-items:flex-start;padding:10px 0;border-bottom:1px dashed var(--line)}
.pick-row:last-child{border-bottom:none}
.pick-row input[type="checkbox"]{width:20px;height:20px;margin-top:14px;flex-shrink:0;accent-color:var(--brand)}
.pick-avatar{width:48px;height:48px;background:none;display:grid;place-items:center;overflow:hidden;font-size:20px;flex-shrink:0;position:relative}
.pick-avatar img{position:absolute;inset:0;margin:auto;max-width:100%;max-height:100%;width:auto;height:auto;display:block}
.pick-main{flex:1}
.pick-name{font-size:14px;font-weight:600;display:flex;align-items:center;gap:6px}
.pick-sub{font-size:11.5px;font-weight:400;color:var(--text-3)}
.pick-opts{display:flex;gap:8px;align-items:center;margin-top:6px}
.pick-spec{flex:1;padding:7px 8px;font-size:12.5px}
.batch-sum{margin:12px 0 14px;padding:12px;border-radius:12px;background:var(--brand-bg);font-size:13.5px;line-height:1.8;text-align:center;color:var(--text-2)}
.batch-sum b{color:var(--brand);font-size:15px}

/* ============ 点单（摆摊直销 · 平板优化） ============ */
body.order-mode #app{max-width:none}
body.order-mode #tabbar{max-width:none}
.o-wrap{display:flex;gap:14px;align-items:flex-start}
.o-menu{flex:1;min-width:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}
.o-card{position:relative;background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:8px 10px 10px;display:flex;flex-direction:column;gap:4px;user-select:none;cursor:pointer;transition:transform .08s}
.o-card:active{transform:scale(.97)}
.o-card.off{opacity:.55;cursor:default}
.o-badge{position:absolute;top:8px;right:8px;background:var(--brand);color:#fff;font-size:11.5px;font-weight:700;border-radius:999px;padding:2px 8px;z-index:2}
.o-avatar{width:100%;aspect-ratio:1/1;position:relative;border-radius:10px;background:var(--line-2);overflow:hidden;flex-shrink:0}
.o-avatar img{position:absolute;inset:0;margin:auto;max-width:100%;max-height:100%;width:auto;height:auto;display:block}
.o-avatar .em{display:grid;place-items:center;width:100%;height:100%;font-size:88px;line-height:1}
.o-stocktag{position:absolute;left:10px;bottom:10px;background:rgba(17,17,17,.62);color:#fff;font-size:12px;font-weight:700;border-radius:999px;padding:4px 10px;backdrop-filter:blur(2px)}
.o-stocktag.out{background:var(--danger)}
.o-name{font-size:17px;font-weight:800;text-align:center;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.3;min-height:2.6em;word-break:break-all;margin-top:2px}
.o-price{font-size:22px;font-weight:800;color:var(--brand);text-align:center;letter-spacing:.3px}
.o-price-sub{font-size:12px;color:var(--text-3);text-align:center;min-height:1.2em;line-height:1.4}
.o-stepper{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:4px}
.o-stepper button{width:36px;height:36px;border-radius:10px;background:var(--line-2);font-size:19px;font-weight:700;line-height:1}
.o-stepper button:disabled{opacity:.4}
.o-stepper .o-qty{min-width:26px;text-align:center;font-size:16px;font-weight:800}
.o-specbtn{margin-top:4px;height:36px;border-radius:10px;background:var(--brand-bg);color:var(--brand);font-size:13.5px;font-weight:700}
/* 购物车面板（宽屏 ≥900px） */
.o-cart{width:330px;flex-shrink:0;background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);position:sticky;top:calc(var(--topbar-h) + 12px);max-height:calc(100dvh - var(--topbar-h) - var(--tabbar-h) - 36px);display:flex;flex-direction:column;overflow:hidden}
.o-cart-head{padding:12px 14px 10px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}
.o-cart-head h3{font-size:15px}
.o-cart-list{flex:1;overflow-y:auto;padding:6px 10px 10px}
.o-line{display:flex;align-items:center;gap:8px;padding:8px 4px;border-bottom:1px dashed var(--line-2)}
.o-line:last-child{border-bottom:none}
.o-ava-s{width:84px;height:84px;position:relative;flex-shrink:0}
.o-ava-s img{position:absolute;inset:0;margin:auto;max-width:100%;max-height:100%;width:auto;height:auto;display:block}
.o-ava-s .em{display:grid;place-items:center;width:100%;height:100%;font-size:40px}
.o-lmain{flex:1;min-width:0}
.o-lname{font-size:12.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.o-lspec{font-size:10.5px;color:var(--text-3);font-weight:400}
.o-lprice{font-size:11px;color:var(--text-3);margin-top:1px}
.o-lamt{font-size:12.5px;font-weight:700;white-space:nowrap}
.o-lctrl{display:flex;align-items:center;gap:5px}
.o-lctrl button{width:24px;height:24px;border-radius:8px;background:var(--line-2);font-size:14px;font-weight:700;line-height:1}
.o-lctrl button:disabled{opacity:.4}
.o-lctrl .q{min-width:14px;text-align:center;font-size:12.5px;font-weight:700}
.o-lrm{color:var(--text-3);font-size:15px;padding:2px 3px}
.o-cart-foot{padding:10px 14px;border-top:1px solid var(--line)}
.o-cart-total{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px;font-size:13px;color:var(--text-2)}
.o-cart-total b{font-size:19px;color:var(--text);font-weight:800}
/* 底部确认栏（手机 <900px） */
.o-bar{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(var(--tabbar-h) + var(--safe-b) + 10px);width:calc(100% - 32px);max-width:528px;background:var(--card);border-radius:14px;box-shadow:var(--shadow-lg);display:flex;align-items:center;gap:10px;padding:10px 12px;z-index:25}
.o-bar .sum{flex:1;min-width:0}
.o-bar .sum .n{font-size:11px;color:var(--text-3)}
.o-bar .sum .a{font-size:18px;font-weight:800}
/* 欢迎页 */
.o-welcome{min-height:calc(100dvh - var(--topbar-h) - var(--tabbar-h) - 60px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;text-align:center;padding:20px}
.o-welcome .o-logo{width:min(340px,62%);height:auto}
.o-welcome h2{font-size:30px;font-weight:800}
.o-welcome p{color:var(--text-2);font-size:14px}
.o-start{width:min(360px,82%);height:58px;border-radius:16px;background:var(--brand);color:#fff;font-size:18px;font-weight:700;box-shadow:0 8px 24px rgba(249,115,22,.35);margin-top:8px}
.o-wstat{font-size:13px;color:var(--text-3)}
/* 确认订单 / 确认收款 / 完成 */
.o-page{max-width:680px;margin:0 auto}
.o-order-no{display:flex;justify-content:flex-end;align-items:center;gap:6px;font-size:12px;color:var(--text-2);margin-bottom:10px}
.o-order-no b{color:var(--text);font-weight:700;letter-spacing:.3px}
.o-lines{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:6px 14px}
.o-sumrow{display:flex;justify-content:space-between;align-items:baseline;padding:13px 2px 16px}
.o-btns{display:flex;gap:10px;margin-top:6px}
.o-btns .btn{flex:1}
.btn-lg{height:52px;border-radius:14px;font-size:16px;font-weight:700}
.o-pay-amt{font-size:44px;font-weight:800;text-align:center;margin:6px 0 2px;letter-spacing:.5px}
.o-pay-hint{font-size:13px;color:var(--text-2);text-align:center}
/* 收款页左右布局：左商品清单 / 右支付渠道+二维码 */
.o-pay-page{max-width:980px}
.o-pay-split{display:flex;gap:18px;align-items:stretch}
.o-pay-left{flex:1;min-width:0;display:flex;flex-direction:column}
.o-pay-left-head{display:flex;justify-content:space-between;align-items:baseline;font-size:16px;font-weight:800;margin-bottom:10px;padding:2px 2px 0}
.o-pay-left-head span{font-size:12.5px;color:var(--text-3);font-weight:400}
.o-pay-lines{flex:1;overflow-y:auto;max-height:calc(100dvh - var(--topbar-h) - var(--tabbar-h) - 170px);min-height:240px}
.o-pay-left .o-ava-s{width:60px;height:60px}
.o-pay-left .o-ava-s .em{font-size:30px}
.o-pay-left .o-lname{font-size:13.5px}
.o-pay-left .o-lamt{font-size:14px}
.o-pay-right{width:400px;flex-shrink:0;background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 20px 20px;display:flex;flex-direction:column}
.o-pay-right .o-order-no{justify-content:center;margin-bottom:2px}
.o-pay-right .o-qr-card{background:transparent;border:none;padding:16px 0 0}
.o-pay-right .o-btns{margin-top:16px}
@media (max-width:899px){
  .o-pay-split{flex-direction:column}
  .o-pay-right{width:100%}
  .o-pay-lines{max-height:none;min-height:0}
}
.o-done-icon{width:76px;height:76px;border-radius:50%;background:var(--ok-bg);color:var(--ok);display:grid;place-items:center;margin:20px auto 12px}
.o-done-icon svg{width:38px;height:38px;stroke-width:2.2}
/* 规格弹窗控件 */
.radio-line{display:flex;align-items:flex-start;gap:8px;padding:9px 0;font-size:14.5px;cursor:pointer}
.radio-line input{margin-top:3px}
.num-row{display:flex;align-items:center;justify-content:center;gap:14px;border:1px solid var(--line);border-radius:12px;padding:8px 14px}
.num-row button{width:34px;height:34px;border-radius:10px;background:var(--line-2);font-size:18px;font-weight:700;line-height:1}
.num-row input{width:72px;text-align:center;border:none;font-size:17px;font-weight:700;background:transparent}
@media (min-width:900px){
  .o-bar{display:none}
}
@media (max-width:899px){
  .o-cart{display:none}
  .o-menu{grid-template-columns:repeat(2,1fr);gap:10px}
  .o-avatar{aspect-ratio:4/3}
  .o-avatar .em{font-size:54px}
  .o-name{font-size:14.5px}
  .o-price{font-size:17px}
  .o-price-sub{font-size:10.5px;min-height:1.4em}
  .o-stepper{gap:8px;margin-top:2px}
  .o-stepper button{width:30px;height:30px;font-size:16px;border-radius:9px}
  .o-specbtn{height:32px;font-size:12.5px;margin-top:2px}
  .o-stocktag{font-size:10.5px;padding:3px 8px;left:8px;bottom:8px}
}

/* ============ 点单入口（总览页） ============ */
.pos-entry{display:flex;align-items:center;gap:12px;padding:16px;border-radius:var(--radius);background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;box-shadow:0 8px 24px rgba(234,88,12,.28);cursor:pointer;user-select:none;margin-bottom:14px;transition:transform .08s}
.pos-entry:active{transform:scale(.98)}
.pos-ico{width:46px;height:46px;border-radius:14px;background:rgba(255,255,255,.18);display:grid;place-items:center;font-size:24px;flex-shrink:0}
.pos-main{flex:1;min-width:0}
.pos-title{font-size:16.5px;font-weight:700}
.pos-sub{font-size:12px;opacity:.9;margin-top:2px}
.pos-go{font-size:13px;font-weight:600;background:rgba(255,255,255,.16);padding:8px 12px;border-radius:999px;white-space:nowrap}
.pos-arrow{font-weight:700}

/* 顶栏退出按钮（点单模式） */
.tb-exit{margin-left:auto;font-size:12.5px;font-weight:600;color:var(--brand);border:1px solid var(--brand);border-radius:999px;padding:6px 12px;background:var(--brand-bg);flex-shrink:0}
.tb-exit:active{opacity:.7}

/* 点单模式：隐藏底部导航，全屏点单 */
body.order-mode #tabbar{display:none}
body.order-mode #fabWrap{display:none}
body.order-mode .o-bar{bottom:calc(var(--safe-b) + 14px)}
body.order-mode .o-welcome{min-height:calc(100dvh - var(--topbar-h) - 100px)}
body.order-mode .o-cart{max-height:calc(100dvh - var(--topbar-h) - 36px)}
body.order-mode #view{padding-bottom:calc(var(--safe-b) + 12px)}

/* ============ 点单密码锁 ============ */
.oc-lock{position:fixed;inset:0;z-index:90;background:rgba(15,15,15,.55);backdrop-filter:blur(4px);display:none;align-items:center;justify-content:center;padding:20px}
.oc-lock.show{display:flex}
.oc-card{width:min(340px,100%);background:var(--card);border-radius:18px;padding:24px 20px 20px;box-shadow:var(--shadow-lg);text-align:center}
.oc-card .oc-ico{font-size:34px;margin-bottom:6px}
.oc-card h3{font-size:17px;font-weight:700}
.oc-card .oc-sub{font-size:12px;color:var(--text-3);margin-top:4px}
.oc-dots{display:flex;justify-content:center;gap:14px;margin:18px 0 4px}
.oc-dot{width:15px;height:15px;border-radius:50%;border:2px solid var(--line-2);background:transparent;transition:background .12s}
.oc-dot.on{background:var(--brand);border-color:var(--brand)}
.oc-err{min-height:18px;font-size:12px;color:var(--danger);margin-bottom:10px}
.oc-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.oc-pad button{height:52px;border-radius:12px;background:var(--line-2);font-size:20px;font-weight:700;line-height:1}
.oc-pad button:active{transform:scale(.94)}
.oc-pad .oc-del{font-size:16px}
.oc-lock.shake .oc-card{animation:ocshake .3s}
@keyframes ocshake{0%,100%{transform:translateX(0)}25%{transform:translateX(-7px)}75%{transform:translateX(7px)}}

/* ============ 收款方式 + 收款二维码（2026-09-02 点单收款） ============ */
.o-pay-methods { display: flex; gap: 10px; margin: 16px 0 12px; }
.o-pay-method { flex: 1; display: flex; align-items: center; justify-content: center; gap: 8px; padding: 12px 0; border: 2px solid var(--line); border-radius: 12px; background: var(--card); color: var(--text-2); font-size: 15px; font-weight: 600; cursor: pointer; transition: all .15s; }
.o-pay-method.active { border-color: var(--brand); background: var(--brand-bg); color: var(--brand); }
.o-pay-ico { width: 26px; height: 26px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 800; color: #fff; font-style: normal; }
.o-pay-ico.wx { background: #07C160; }
.o-pay-ico.ali { background: #1677FF; }
.o-qr-card { background: var(--card); border: 1px solid var(--line); border-radius: 14px; padding: 18px; display: flex; flex-direction: column; align-items: center; }
.o-qr-box { width: 244px; height: 244px; display: flex; align-items: center; justify-content: center; background: #fff; border-radius: 10px; overflow: hidden; }
.o-qr-box img, .o-qr-box canvas { width: 232px !important; height: 232px !important; }
.o-qr-img { object-fit: contain; border-radius: 4px; }
.o-qr-empty { text-align: center; color: var(--text-3); font-size: 13px; line-height: 1.7; padding: 20px 8px; }
.o-qr-empty-ico { font-size: 36px; margin-bottom: 6px; }
.o-pay-tip { margin-top: 10px; font-size: 13px; color: var(--text-2); }
.o-done-method { display: inline-block; margin: 2px auto 6px; padding: 4px 14px; background: var(--brand-bg); color: var(--brand); border-radius: 999px; font-size: 13px; font-weight: 600; }

/* ============ 去付款弹框（2026-09-02 确认订单页弹出） ============ */
#payModal { position: fixed; inset: 0; z-index: 120; display: none; align-items: center; justify-content: center; padding: 20px; }
#payModal.show { display: flex; }
#payMask { z-index: 119; }
.pm-card { width: 100%; max-width: 400px; background: var(--card); border-radius: 20px; padding: 20px 20px 16px; box-shadow: 0 18px 50px rgba(0,0,0,.28); display: flex; flex-direction: column; max-height: calc(100dvh - 32px); overflow-y: auto; }
.pm-title { font-size: 16px; font-weight: 800; text-align: center; }
.pm-order-no { font-size: 12px; font-weight: 500; color: var(--text-3); margin-left: 6px; }
.pm-amt { font-size: 40px; font-weight: 800; text-align: center; margin: 8px 0 0; letter-spacing: .5px; color: var(--text); }
.pm-hint { font-size: 12.5px; color: var(--text-2); text-align: center; margin-bottom: 2px; }
.pm-methods { display: flex; gap: 10px; margin: 12px 0 10px; }
.pm-method { flex: 1; display: flex; align-items: center; justify-content: center; gap: 8px; padding: 10px 0; border: 2px solid var(--line); border-radius: 12px; background: var(--card); color: var(--text-2); font-size: 14.5px; font-weight: 600; cursor: pointer; transition: all .15s; }
.pm-method.active { border-color: var(--brand); background: var(--brand-bg); color: var(--brand); }
.pm-qr-card { background: #fff; border-radius: 14px; padding: 12px; display: flex; flex-direction: column; align-items: center; border: 1px solid var(--line); }
.pm-qr { width: 210px; height: 210px; display: flex; align-items: center; justify-content: center; background: #fff; border-radius: 10px; overflow: hidden; }
.pm-qr img, .pm-qr canvas { max-width: 200px; max-height: 200px; }
.pm-qr .o-qr-img { object-fit: contain; border-radius: 4px; }
.pm-tip { margin-top: 8px; font-size: 12.5px; color: var(--text-2); }
.pm-btns { display: flex; gap: 12px; margin-top: 14px; }
.pm-btns .btn { flex: 1; }
@media (max-width: 480px) {
  .pm-card { padding: 16px 14px 14px; border-radius: 16px; max-width: 92vw; }
  .pm-amt { font-size: 34px; }
  .pm-qr { width: 190px; height: 190px; }
  .pm-qr img, .pm-qr canvas { max-width: 180px; max-height: 180px; }
}

/* ============ 点单：支付完成小票打印动画（2026-09-01） ============ */
#receiptMask {
  position: fixed; inset: 0; z-index: 130;
  background: #0d0e12; /* 不透明遮罩：票据下方空白干净（用户 09-02：空白处遮罩影子不好看） */
  opacity: 0; pointer-events: none;
  transition: opacity .25s;
  display: flex; align-items: flex-start; justify-content: center;
  padding: calc(50dvh - 15px) 16px 0; /* 出票口中心 = 屏幕正中（2026-09-02 用户：口挪到正中间、票往下掉出屏幕） */
}
#receiptMask.show { opacity: 1; pointer-events: auto; }
.rcpt-rig { display: flex; flex-direction: column; align-items: center; width: min(340px, 88vw); }
/* 打印机口 */
.rcpt-slot {
  width: 100%; height: 30px; border-radius: 6px 6px 0 0; position: relative; z-index: 3;
  background: linear-gradient(180deg, #3d4148, #23262b 45%, #191b1f);
  box-shadow: 0 6px 18px rgba(0,0,0,.55), inset 0 1px 0 rgba(255,255,255,.14);
}
.rcpt-slit {
  position: absolute; left: 6%; right: 6%; top: 11px; height: 7px;
  background: #0a0b0d; border-radius: 3px;
  box-shadow: inset 0 2px 4px rgba(0,0,0,.9), inset 0 -1px 0 rgba(255,255,255,.06);
}
.rcpt-bolt {
  position: absolute; top: 9px; width: 10px; height: 10px; border-radius: 50%;
  background: radial-gradient(circle at 35% 35%, #6b7078, #2c2f34 70%);
  box-shadow: inset 0 1px 1px rgba(255,255,255,.2);
}
.rcpt-bolt.l { left: 12px; }
.rcpt-bolt.r { right: 12px; }
/* 小票纸：外层 clip 承担可视窗口（高度）+掉落动画；内层 .rcpt 纸面（clip-path 撕口由 JS tearClip() 逐帧生成） */
.rcpt-clip {
  position: relative; width: 100%; overflow: hidden;
  height: 0; /* showReceipt 设为 min(票高,屏内可用)：滑出期间票上端藏在 clip 上方=「机口内」，底部先露出 */
  box-shadow: 0 18px 55px rgba(0,0,0,.55);
  transform: translateY(0);
}
.rcpt {
  position: relative; width: 100%; background: #fff; color: #131313;
  will-change: transform;
}
.rcpt.tear { animation: tear-shake .5s ease; /* 撕开时纸轻微抖动（clip-path 由 JS 驱动） */ }
@keyframes tear-shake {
  0%   { transform: translateY(0); }
  25%  { transform: translateY(-2px); }
  55%  { transform: translateY(1.5px); }
  100% { transform: translateY(0); }
}
.rcpt-clip.settle { animation: rcpt-settle .5s ease; }
.rcpt-clip.drop { animation: rcpt-drop 1.5s cubic-bezier(.45,0,.8,.35) forwards; }
@keyframes rcpt-settle {
  0%   { transform: translateY(0); }
  35%  { transform: translateY(7px); }
  70%  { transform: translateY(2px); }
  100% { transform: translateY(0); }
}
/* 票据打印完 → 从出票口坠落到屏幕外（模拟真实票据掉出，未来对接真打印机） */
@keyframes rcpt-drop {
  0%   { transform: translateY(0) rotate(0deg); }
  100% { transform: translateY(calc(100dvh + 15vh)) rotate(1.5deg); }
}
/* 注：齿边伪元素已移除——overflow:hidden 的 clip 会裁掉凸出盒外的伪元素；真实热敏小票纸本就是平直边缘（2026-09-02 连续流出模型） */
#rcptLines { padding: 58px 18px 18px; font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif; }
/* 品牌区（参考空想士多品牌图：logo 占票宽 60%+、顶部大留白、上下居中；订单号/日期行已按用户要求去除） */
.rcpt-brand { text-align: center; padding: 0 0 50px; } /* 50px + thead margin 8px = 58px 与顶部 padding 对称（logo 块上下居中） */
.rcpt-logoimg { display: block; width: 152px; height: auto; margin: 0 auto 2px; }
.rcpt-slogan { font-size: 11px; color: #8a8a8a; margin-top: 8px; letter-spacing: 1px; }
/* ITEM / PRICE 表头（黑底白字，参考品牌图） */
.rcpt-thead {
  margin: 8px 0 5px; background: #131313; color: #fff;
  display: flex; justify-content: space-between; align-items: center;
  padding: 7px 11px; font-size: 11px; font-weight: 800; letter-spacing: 2px;
}
/* 商品行（行首图标 + 名称 + 单价副行，参考品牌清单图每行带商品图） */
.rcpt-item { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; padding-top: 4px; }
.rcpt-ileft { display: flex; gap: 8px; align-items: flex-start; min-width: 0; flex: 1; }
.rcpt-iava { width: 26px; height: 26px; position: relative; flex-shrink: 0; margin-top: 3px; }
.rcpt-iava img { position: absolute; inset: 0; margin: auto; max-width: 100%; max-height: 100%; width: auto; height: auto; }
.rcpt-iava .em { display: block; font-size: 19px; line-height: 26px; text-align: center; }
.rcpt-itxt { flex: 1; min-width: 0; }
.rcpt-iname { font-size: 13px; font-weight: 700; line-height: 1.35; word-break: break-all; }
.rcpt-ispec { font-size: 11px; font-weight: 400; color: #777; margin-left: 2px; }
.rcpt-iqty { font-size: 11.5px; font-weight: 700; color: #444; margin-left: 3px; }
.rcpt-iamt { font-size: 12.5px; font-weight: 700; white-space: nowrap; font-variant-numeric: tabular-nums; }
.rcpt-isub { font-size: 10.5px; color: #999; margin-top: 1px; font-variant-numeric: tabular-nums; }
/* 分隔与合计 */
.rcpt-dash { border-top: 1px dashed #b9b9b9; margin: 8px 0 2px; }
.rcpt-sum { display: flex; justify-content: space-between; font-size: 11px; color: #666; padding-top: 4px; }
.rcpt-total { display: flex; justify-content: space-between; align-items: baseline; padding-top: 3px; }
.rcpt-total span { font-size: 13px; font-weight: 800; }
.rcpt-total b { font-size: 21px; font-weight: 900; font-variant-numeric: tabular-nums; }
.rcpt-thanks { text-align: center; font-size: 13px; font-weight: 800; letter-spacing: 2px; padding-top: 12px; }
.rcpt-subthanks { text-align: center; font-size: 10px; color: #999; letter-spacing: 1px; padding-top: 3px; }
/* 提示文字（票据掉出屏幕后淡入；点击任意位置关闭，2026-09-02 用户：不要完成按钮） */
.rcpt-tip {
  position: absolute; left: 50%;
  bottom: calc(var(--safe-b, 0px) + 34px);
  transform: translateX(-50%) translateY(6px);
  font-size: 13px; letter-spacing: 2px; color: rgba(255,255,255,.78);
  opacity: 0; visibility: hidden; pointer-events: none;
  transition: opacity .4s, transform .4s, visibility .4s;
}
.rcpt-tip.show { opacity: 1; transform: translateX(-50%) translateY(0); visibility: visible; }
@media (max-width: 480px) {
  #rcptLines { padding: 50px 14px 18px; } /* 顶部留白同步 33→50（×1.5） */
}
