/* 生活缴费前端样式 v=20261101style
   手机优先。关键原则：所有蓝色按钮/选中态在按下、聚焦时
   文字颜色都显式写死，绝不靠浏览器默认态；按下时只加深
   背景，不换文字颜色。移动端点按高亮设为透明，避免
   点按瞬间的高亮盖住文字。 */
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;color:#1a1a1a;background:#f2f4f7;line-height:1.6;-webkit-text-size-adjust:100%}
button,a,.card{-webkit-tap-highlight-color:transparent;touch-action:manipulation}
button{font-family:inherit;cursor:pointer}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:3px solid rgba(22,119,255,.4);outline-offset:2px}
.top{background:#fff;padding:14px 16px;border-bottom:1px solid #e5e5e5}
.top h1{font-size:21px;font-weight:800;margin:0;line-height:1.4}
.badge{font-size:12px;background:#fff3cd;color:#7a5b00;padding:2px 8px;border-radius:12px;white-space:nowrap}
nav{display:flex;flex-wrap:wrap;gap:8px}
nav button,.cats button{padding:11px 20px;border:1.5px solid #d9d9d9;background:#fff;border-radius:999px;font-size:16px;font-weight:600;color:#333}
nav button:active,.cats button:active{background:#eaf3ff;color:#1677ff;border-color:#1677ff}
nav button.active,.cats button.active{background:#1677ff;color:#fff;border-color:#1677ff;font-weight:700}
nav button.active:active,.cats button.active:active{background:#0d5cbf;color:#fff;border-color:#0d5cbf}
main{max-width:720px;margin:0 auto;padding:16px 14px 100px}
.bottom{position:fixed;left:0;right:0;bottom:0;z-index:50;display:flex;background:#fff;border-top:1px solid #e5e5e5;padding:8px 8px calc(8px + env(safe-area-inset-bottom))}
.bottom button{flex:1;padding:12px;border:0;background:#fff;font-size:16px;font-weight:600;color:#666}
.bottom button:active{background:#eaf3ff;color:#1677ff}
.bottom button.active{color:#1677ff;font-weight:700;background:#f0f6ff}
.bottom button.active:active{background:#e0edff;color:#0d5cbf}
.arrival{font-size:15px;color:#e60023;font-weight:700;margin:12px 0;background:#fff2f3;border-radius:10px;padding:10px 12px}
/* 2026-11-06：付款倒计时加粗标红，与付款截止行视觉一致。 */
#pay-countdown{font-weight:700;color:#e60023}
textarea,select{width:100%;padding:13px;margin-top:6px;border:1.5px solid #d9d9d9;border-radius:12px;font-size:16px;background:#fff;color:#1a1a1a}
.tab{display:none}
.tab.active{display:block}
label{display:block;margin:16px 0 2px;font-size:15px;font-weight:600;color:#333}
.req{color:#c0392b;font-weight:700}
input{width:100%;padding:13px;margin-top:6px;border:1.5px solid #d9d9d9;border-radius:12px;font-size:16px;background:#fff;color:#1a1a1a}
input:focus,select:focus,textarea:focus{border-color:#1677ff;box-shadow:0 0 0 3px rgba(22,119,255,.15);outline:none}
button[type=submit],#share-copy{width:100%;padding:15px;background:#1677ff;color:#fff;border:0;border-radius:12px;font-size:17px;font-weight:700;box-shadow:0 2px 8px rgba(22,119,255,.25)}
/* 2026-11-06：防重锁定的按钮置灰，避免用户以为没点上而反复点。 */
button:disabled{opacity:.55;cursor:default}
button.secondary:disabled{opacity:.55;cursor:default}
button[type=submit]:active,#share-copy:active{background:#0d5cbf;color:#fff;box-shadow:none}
button.secondary{width:100%;padding:13px;background:#fff;color:#1677ff;border:1.5px solid #1677ff;border-radius:12px;font-size:16px;font-weight:700;margin:12px 0}
button.secondary:active{background:#eaf3ff;color:#0d5cbf;border-color:#0d5cbf}
.cats{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.cards{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:12px 0}
.card{display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px 8px;border:1.5px solid #e6e6e6;background:#fff;border-radius:16px;cursor:pointer;box-shadow:0 1px 3px rgba(0,0,0,.05)}
.card:active{background:#f7f9fc}
.card-name{font-size:15px;font-weight:600;line-height:1.4;text-align:center;color:#1a1a1a}
.card-price{font-size:20px;font-weight:700;color:#e60023}
.card.selected{border-color:#1677ff;background:#eaf3ff;box-shadow:0 0 0 2px rgba(22,119,255,.25)}
.card.selected:active{background:#dbeaff}
.card.selected .card-name{color:#111}
.result{margin-top:16px;background:#fff;border:1px solid #e5e5e5;border-radius:12px;padding:14px;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;line-height:1.75}
.hidden{display:none!important}
.price{margin:12px 0;font-size:17px;background:#fff;border:1px solid #e5e5e5;border-radius:12px;padding:12px 14px}
/* 2026-11-06：分享链接和遮罩里的链接做成可选中文本，复制失败时
   用户可以手动长按复制。 */
.mono{word-break:break-all;background:#fff;padding:10px;border:1px solid #e5e5e5;border-radius:8px;font-size:14px;user-select:text;-webkit-user-select:text}
.small{font-size:13px;color:#666;line-height:1.6}
/* 微信/支付宝内打开：全屏纯白覆盖，无关闭按钮，后面页面完全不可见、不可点。
   旧版是半透明遮罩，后面页面还隐约可见，容易误以为能继续操作。 */
.mask{position:fixed;inset:0;background:#fff;z-index:9999;display:flex;align-items:flex-start;justify-content:center;padding:36px 20px;overflow-y:auto}
.mask.hidden{display:none!important}
.mask-card{background:#fff;border:0;box-shadow:none;border-radius:0;padding:0;max-width:420px;width:100%;text-align:center}
.mask-card h2{font-size:23px;font-weight:800;margin:8px 0 16px;color:#111}
.mask-card p{font-size:16px;line-height:1.8;color:#333;margin:10px 0}
.mask-warn{color:#e60023!important;font-weight:700}
.mask-steps{text-align:left;background:#f6f7f9;border-radius:12px;padding:14px 16px;margin:16px 0}
.mask-steps p{margin:6px 0;font-size:15px;color:#333}
.mask-card button{width:100%;padding:15px;background:#1677ff;color:#fff;border:0;border-radius:12px;font-size:17px;font-weight:700;margin:16px 0 8px;box-shadow:0 2px 8px rgba(22,119,255,.25)}
.mask-card button:active{background:#0d5cbf;color:#fff;box-shadow:none}
.mask-link{font-size:13px;color:#666;word-break:break-all;background:#f6f7f9;padding:10px;border-radius:8px;user-select:text;-webkit-user-select:text}
a.pay-btn{display:block;text-align:center;padding:15px;background:#e60023;color:#fff;border-radius:12px;font-size:17px;font-weight:700;text-decoration:none;margin-top:12px}
a.pay-btn:active{background:#c2001e;color:#fff}
.pay-modal{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:99;display:flex;align-items:center;justify-content:center;padding:20px}
.pay-modal.hidden{display:none!important}
.pay-modal-card{background:#fff;border-radius:16px;padding:24px;max-width:420px;width:100%}
.pay-modal-card h3{margin:0 0 12px;font-size:19px}
.pay-modal-card p{margin:10px 0;font-size:16px}
.pay-modal-card button{width:100%;padding:15px;background:#1677ff;color:#fff;border:0;border-radius:12px;font-size:17px;font-weight:700;margin-top:8px}
.pay-modal-card button:active{background:#0d5cbf;color:#fff}
.pay-modal-card button.secondary{background:#fff;color:#1677ff;border:1.5px solid #1677ff}
.pay-modal-card button.secondary:active{background:#eaf3ff;color:#0d5cbf;border-color:#0d5cbf}
.pay-amount{font-size:22px;color:#e60023}
.query-card{width:100%;max-width:100%;box-sizing:border-box;background:#fff;border:1px solid #e5e5e5;border-radius:16px;padding:16px;margin:12px 0;white-space:normal;overflow-wrap:anywhere;word-break:break-all;font-size:16px;line-height:1.7;box-shadow:0 1px 3px rgba(0,0,0,.05)}
.query-card .q-no{font-size:17px;font-weight:700}
.query-card .q-prod{font-size:17px;font-weight:700;margin:4px 0}
.q-tag{display:inline-block;padding:2px 10px;border-radius:12px;font-size:14px;font-weight:700;vertical-align:middle}
.q-arrived{background:#e6f4ea;color:#137333}
.q-failed{background:#fce8e6;color:#a50e0e}
.q-paid{background:#e8f0fe;color:#174ea6}
.q-pending{background:#f1f3f4;color:#5f6368}
.query-card a.pay-btn{margin-top:12px}
.query-card button.secondary{margin:12px 0 0}
.msg{margin:12px 0;padding:14px 16px;border-radius:16px;font-size:16px;line-height:1.7;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}
.msg .msg-who{font-size:14px;font-weight:700;margin-bottom:4px}
.msg-customer{background:#eaf3ff;border:1px solid #cfe3ff}
.msg-admin{background:#e6f4ea;border:1px solid #c8e6c9}
.msg-system{background:#f1f3f4;border:1px solid #e5e5e5;color:#5f6368;font-size:15px;text-align:center}
@media (max-width:420px){
  main{padding:14px 12px 100px}
  .top h1{font-size:20px}
  .cards{gap:10px}
  .card{padding:14px 6px}
  .card-name{font-size:14px}
  .card-price{font-size:18px}
  nav button,.cats button{padding:10px 16px;font-size:15px}
  .pay-modal-card{padding:20px}
}
@media (min-width:768px){
  main{max-width:720px}
  .top h1{font-size:24px}
  .cards{grid-template-columns:1fr 1fr 1fr}
}
