/* 常驻纵向滚动条: 内容高度随 Tab/展开变化时不再出现/消失滚动条, 避免整页宽度跳动(闪烁) */
html{overflow-y:scroll}
body{font-family:Arial,'PingFang SC','Microsoft YaHei',sans-serif;background:#f5f6f8;margin:0;padding:16px;color:#333}
.card{background:#fff;max-width:560px;margin:0 auto;border-radius:12px;padding:24px;box-shadow:0 2px 12px rgba(0,0,0,.06)}
/* M43: 移动端去掉外层卡片框, 内容直接铺开, 充分利用小屏空间; PC 保留 */
@media (max-width:640px){
    body{background:#fff;padding:10px}
    .card{box-shadow:none;border-radius:0;padding:14px}
}
h2{margin:0 0 16px;font-size:20px}
label{display:block;margin:12px 0 4px;font-size:13px;color:#666}
label .req-mark{color:#dc2626;font-style:normal;font-size:13px;font-weight:700}
label .req-opt{color:#94a3b8;font-style:normal;font-size:12px;font-weight:400}
input,select,textarea{width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid #d9d9d9;border-radius:6px;font-size:14px}
.btn{display:block;width:100%;margin-top:20px;padding:12px;border:0;border-radius:6px;background:#1e293b;color:#fff;font-size:15px;cursor:pointer}
.btn:disabled{background:#cbd5e1;cursor:not-allowed}
.tabs{display:flex;gap:6px;margin:18px 0 0;border-bottom:2px solid #e2e8f0}
.tab{flex:1;padding:12px 16px;background:#f8fafc;border:1px solid #e2e8f0;border-bottom:none;border-radius:10px 10px 0 0;font-size:15px;cursor:pointer;color:#94a3b8;margin-bottom:-2px;transition:color .2s,background .2s;text-align:center}
.tab:hover{color:#2563eb;background:#eff6ff}
.tab.active{background:#fff;color:#2563eb;font-weight:700;border-bottom:2px solid #2563eb}
#tabSubmit,#tabRequests{animation:tabFade .25s ease}
@keyframes tabFade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.order-summary{background:#f8fafc;border:1px solid #e5e7eb;border-radius:8px;padding:10px 12px;font-size:13px;color:#333;margin-bottom:4px}
.order-summary b{font-size:14px}
.page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.page-head h2{margin:0}

/* ===== 订单商品行: 名称可换行, 价格/时间右对齐不换行 ===== */
.fp-row{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:8px 0;border-bottom:1px dashed #e2e8f0}
.fp-row:last-child{border-bottom:0;padding-bottom:0}
.fp-main{flex:1;min-width:0}
.fp-name{font-size:13px;color:#1e293b;line-height:1.45;word-break:break-word}
.fp-meta{font-size:12px;color:#94a3b8;margin-top:2px;word-break:break-all}
.fp-right{flex-shrink:0;text-align:right}
.fp-price{font-size:13px;font-weight:600;color:#1e293b;white-space:nowrap}
.fp-time{font-size:11px;color:#94a3b8;margin-top:2px;white-space:nowrap}
.item{border:1px solid #e5e7eb;border-radius:8px;padding:12px;margin-top:10px}
.item .title{font-size:14px;font-weight:600}
.item .meta{font-size:12px;color:#999;margin-top:4px}
.qty{display:inline-block;width:64px;margin-left:8px;padding:6px}
.msg{padding:10px 12px;border-radius:6px;font-size:13px;margin-top:12px;display:none}
.ok{background:#f0fdf4;color:#166534;border:1px solid #bbf7d0}
.err{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca}
.tip{font-size:12px;color:#999;margin-top:8px}
.field-err{display:none;font-size:12px;color:#b91c1c;margin-top:6px}
.field-err.on{display:block}
.up{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.up-btn{display:inline-block;padding:8px 14px;border:1px solid #d9d9d9;border-radius:6px;background:#fff;font-size:13px;cursor:pointer;color:#333}
.up-item{position:relative;width:48px;height:48px}
.up-item img{width:48px;height:48px;border-radius:4px;object-fit:cover;border:1px solid #e5e7eb}
.up-item .x{position:absolute;top:-6px;right:-6px;width:16px;height:16px;line-height:14px;text-align:center;background:#ef4444;color:#fff;border-radius:50%;font-size:12px;cursor:pointer}
/* 图片上传进度: 移动端上传无反馈时容易被误认为没有响应 */
.up-prog{display:none;margin-top:8px}
.up-prog.on{display:block}
.up-prog-bar{height:6px;border-radius:999px;background:#e5e7eb;overflow:hidden}
.up-prog-bar i{display:block;height:100%;width:0;background:#2563eb;border-radius:999px;transition:width .15s ease}
.up-prog-txt{display:block;font-size:12px;color:#2563eb;margin-top:6px}
.req-row{display:flex;justify-content:space-between;align-items:center;border:1px solid #e5e7eb;border-radius:8px;padding:10px 12px;margin-top:8px}
.req-wrap{margin-top:8px}
.req-wrap .req-row{margin-top:0}
.req-type{font-weight:600;font-size:14px}
.unread-dot{display:inline-block;min-width:16px;height:16px;line-height:16px;padding:0 5px;margin-left:6px;border-radius:8px;background:#ef4444;color:#fff;font-size:12px;text-align:center;vertical-align:middle;cursor:pointer}
.unread-dot:hover{background:#dc2626}
.req-status{margin:0 8px;font-size:13px;font-weight:600}
.req-time{font-size:12px;color:#999}
.link-btn{border:0;background:none;color:#2563eb;cursor:pointer;font-size:13px;padding:0 4px}
#exResults{max-height:400px;overflow-y:auto}
.ex-selected-title{margin-top:10px;padding:7px 10px;background:#2563eb;color:#fff;font-size:13px;font-weight:600;border-radius:6px}
.copy-btn{display:inline-block;border:1px solid #bfdbfe;background:#eff6ff;color:#1d4ed8;border-radius:6px;padding:6px 12px;font-size:13px;margin-top:6px;cursor:pointer}
.copy-btn:active{background:#dbeafe}
.trk-box{display:inline-block;background:#f0f9ff;border:1px solid #bae6fd;border-radius:6px;padding:8px 14px;margin-top:6px}
.trk-label{font-size:12px;color:#0369a1;font-weight:600}
.trk-num{font-size:15px;color:#0c4a6e;font-weight:700;word-break:break-all}
.qc-box{border-radius:6px;padding:8px 12px;margin-top:6px;font-size:13px;line-height:1.7}
.qc-pass{background:#f0fdf4;border:1px solid #bbf7d0;color:#166534}
.qc-partial{background:#fffbeb;border:1px solid #fde68a;color:#92400e}
.qc-fail{background:#fef2f2;border:1px solid #fecaca;color:#b91c1c}
.req-detail{border:1px solid #e5e7eb;border-radius:8px;padding:12px;margin-top:10px;font-size:13px}
/* 列表内展开: 详情与头部行融为同一张卡(去掉独立外框, 用内部虚线分区) */
.req-wrap{border:1px solid #e5e7eb;border-radius:8px;margin-top:8px;overflow:hidden;background:#fff}
.req-wrap .req-row{border:none;border-radius:0;margin-top:0;border-bottom:1px solid #e5e7eb}
.req-wrap .req-detail{border:none;border-radius:0;background:#fff;padding:10px 12px 12px;margin-top:0}
/* 展开动画: 默认折叠(max-height 0), 展开时 JS 把 max-height 设为内容高度触发过渡 */
#reqList [id^="rd"]{max-height:0;opacity:0;overflow:hidden;transition:max-height .42s ease,opacity .3s ease}
#reqList [id^="rd"].rd-rendering{overflow:visible}
.req-detail-head{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.req-detail-meta{color:#666;margin-bottom:8px}
.dl-item{color:#333;padding:2px 0}
.d-card{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:12px 14px;margin-top:10px}
.d-card-title{font-size:13px;font-weight:700;color:#1e293b;margin-bottom:8px;display:flex;align-items:center;gap:6px}
.d-card-title .dot{width:8px;height:8px;border-radius:50%;background:#2563eb;display:inline-block}
.d-addr{font-size:13px;line-height:1.7;color:#333;margin-top:2px}
.d-addr a{color:#2563eb;word-break:break-all}
.d-card .lbl,.d-addr .lbl{color:#94a3b8;font-size:12px;margin-right:4px}
.d-sep{margin:8px 0;border-top:1px dashed #e2e8f0}
.msg-line{padding:8px 12px;border-radius:8px;margin-top:8px}

/* ===== 必点下一步: 主色按钮 + NEXT STEP 徽标 + 呼吸动画 ===== */
.btn-accent{background:#16a34a}
.btn-accent:disabled{background:#86efac}
.btn-pulse{animation:btnPulse 2s ease-in-out infinite}
@keyframes btnPulse{0%,100%{box-shadow:0 0 0 0 rgba(22,163,74,.45)}50%{box-shadow:0 0 0 10px rgba(22,163,74,0)}}
@media (prefers-reduced-motion:reduce){.btn-pulse{animation:none}}
.next-step-badge{display:inline-block;background:#dcfce7;color:#15803d;font-size:11px;font-weight:700;letter-spacing:.03em;padding:1px 8px;border-radius:999px;text-transform:uppercase;margin-left:auto}
.msg-line.m{background:#eff6ff;border:1px solid #dbeafe}
.msg-line.c{background:#f0fdf4;border:1px solid #dcfce7}
.msg-head{display:flex;align-items:center;gap:6px;margin-bottom:4px}
.msg-who{font-size:12px;font-weight:700;color:#475569}
.msg-body{font-size:13px;color:#1e293b;line-height:1.6;word-break:break-word}
.msg-time{font-size:11px;color:#b0b8c4;margin-top:4px;text-align:right}
.msg-line.unread{background:#fff7e6;border:1px solid #ffd591;cursor:pointer}
.msg-line.unread:hover{background:#ffe7ba}
.msg-line.unread .msg-body{color:#ad6800}
.msg-new{display:inline-block;background:#ef4444;color:#fff;font-size:11px;line-height:14px;padding:0 5px;border-radius:7px;vertical-align:middle}
.msg-imgs{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.msg-imgs img{width:56px;height:56px;border-radius:4px;object-fit:cover;border:1px solid #e5e7eb;cursor:zoom-in;vertical-align:middle}
.notice{background:#eff6ff;border:1px solid #bfdbfe;color:#1d4ed8;border-radius:8px;padding:10px 12px;font-size:13px;margin-bottom:8px}
#reqNotice{margin-top:10px}
/* 售后政策: 入口并入 "How it works" 标题行右侧, 内容在弹窗内(见 openPolicyDialog) */
.policy-info{text-align:right}
.policy-link{display:inline-flex;align-items:center;gap:4px;background:none;border:0;padding:0;color:#b45309;font-size:13px;cursor:pointer;text-decoration:underline}
.policy-body{font-size:13px;color:#444}
.policy-body .pi-row{margin-bottom:10px;line-height:1.6}
.policy-body .pi-row:last-child{margin-bottom:0}
.policy-body .pi-addr{white-space:pre-line;margin-top:4px;padding:8px;background:#f8fafc;border:1px solid #e5e7eb;border-radius:6px;font-size:13px;color:#333;line-height:1.6}
.steps{background:#fff7ed;border:1px solid #fed7aa;border-radius:8px;padding:12px;margin-top:12px;font-size:13px;color:#7c2d12}
.steps-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px}
.steps-head .steps-title{margin-bottom:0}
.steps-title{font-weight:600;margin-bottom:6px}
/* How it works 默认折叠, 点击标题展开(见 toggleSteps) */
.steps-title{cursor:pointer;user-select:none;display:inline-flex;align-items:center;gap:6px}
.steps-caret{font-size:11px;opacity:.75}
.steps-body{display:none}
.steps.open .steps-body{display:block}
.steps-body div,.steps-body p{margin:0;padding:2px 0}
.steps-body ul,.steps-body ol{margin:4px 0;padding-left:22px}
.steps-body img{max-width:100%;height:auto}
.addr-row{display:flex;gap:8px;margin-top:8px}
.addr-row input{flex:1;min-width:0;width:auto;margin-top:0}
.chk{display:flex;align-items:center;gap:6px;margin-top:12px;font-size:13px;color:#333;cursor:pointer}
.chk input{width:auto;margin:0}

/* 收件地址表单(换货/维修寄回) - 卡片分组 + 双列栅格 + 聚焦高亮 */
#shipFields .sf-card{background:#f8fafc;border:1px solid #e5e7eb;border-radius:10px;padding:14px;margin-top:10px}
#shipFields .sf-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
#shipFields .sf-field{min-width:0;margin-top:10px}
#shipFields .sf-row:first-of-type{margin-top:0}
#shipFields .sf-row:first-of-type .sf-field{margin-top:0}
#shipFields .sf-lbl{display:block;margin:0 0 5px;font-size:12px;color:#64748b;font-weight:600}
#shipFields input{margin-top:0;padding:10px 12px;border-radius:8px;transition:border-color .15s,box-shadow .15s;background:#fff}
#shipFields input::placeholder{color:#a3aebc}
#shipFields input:focus{border-color:#2563eb;outline:none;box-shadow:0 0 0 3px rgba(37,99,235,.12)}
#shipFields .chk{margin-top:14px;padding-top:12px;border-top:1px dashed #e2e8f0}
#shipBookWrap + .sf-card{margin-top:10px}
@media (max-width:640px){
    #shipFields .sf-row{grid-template-columns:1fr;gap:0}
    #shipFields .sf-row .sf-field{margin-top:10px}
}

/* 寄回方式选择(Repair ship method) */
.rm-title{font-size:13px;font-weight:600;color:#475569;margin-top:14px}
.rm-opt{display:flex;gap:10px;align-items:flex-start;border:1px solid #e2e8f0;border-radius:10px;padding:12px;margin-top:8px;cursor:pointer;background:#fff;transition:border-color .15s,box-shadow .15s,background .15s}
.rm-opt input{width:auto;margin:2px 0 0;flex-shrink:0;accent-color:#2563eb}
.rm-opt-body{display:flex;flex-direction:column;gap:2px;min-width:0}
.rm-opt-name{font-size:14px;color:#1e293b;font-weight:600}
.rm-opt-desc{font-size:12px;color:#94a3b8;line-height:1.5}
.rm-opt:has(input:checked){border-color:#2563eb;background:#eff6ff;box-shadow:0 0 0 3px rgba(37,99,235,.08)}
.rm-opt:has(input:checked) .rm-opt-name{color:#1d4ed8}
.rm-hint{display:flex;gap:6px;align-items:flex-start;font-size:12px;color:#94a3b8;margin-top:12px;line-height:1.5}
.rm-hint::before{content:"\2139\fe0f";flex-shrink:0}
