
:root{
  --blue:#2563eb;--cyan:#06b6d4;--ink:#172033;--text:#475569;--muted:#94a3b8;
  --bg:#f4f7fb;--line:#e7edf6;--danger:#e11d48;--green:#16a34a;--orange:#f97316;
  --safe-bottom:env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);
font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",Arial,sans-serif}
body{min-height:100vh}.app-shell{min-height:100vh;padding-bottom:calc(76px + var(--safe-bottom))}
.boot{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center}
.boot-logo{width:68px;height:68px;border-radius:24px;background:linear-gradient(135deg,var(--blue),var(--cyan));color:#fff;
display:grid;place-items:center;font-weight:900;font-size:30px;box-shadow:0 12px 28px rgba(37,99,235,.22)}
.boot-title{font-size:24px;font-weight:900;color:var(--ink);margin-top:16px}.boot-sub{color:var(--muted);margin-top:7px}
.topbar{position:sticky;top:0;z-index:20;height:58px;background:rgba(255,255,255,.92);backdrop-filter:blur(12px);
display:flex;align-items:center;justify-content:center;border-bottom:1px solid rgba(226,232,240,.8)}
.topbar .back{position:absolute;left:16px;border:0;background:transparent;font-size:30px;line-height:1;color:#0f172a;padding:8px;cursor:pointer}
.topbar-title{font-size:18px;font-weight:800;color:#172033}.page{max-width:860px;margin:0 auto;padding:18px 16px 32px}
.hero{padding:24px 22px;border-radius:22px;background:linear-gradient(135deg,#1d4ed8,#2563eb 54%,#22b8cf);color:white;
box-shadow:0 18px 42px rgba(37,99,235,.18)}.hero-row{display:flex;align-items:center;justify-content:space-between;gap:16px}
.hero-title{font-size:34px;font-weight:900;letter-spacing:1px}.hero-count{padding:8px 12px;border-radius:13px;background:rgba(255,255,255,.15);font-weight:900}
.search{display:flex;gap:10px;background:#fff;border:1px solid var(--line);border-radius:18px;padding:10px;margin:12px 4px 0;box-shadow:0 10px 26px rgba(30,64,175,.06)}
.search input{flex:1;border:0;outline:0;background:#f7f9fc;border-radius:14px;padding:0 14px;font-size:15px;min-width:0}
.btn{border:0;border-radius:14px;padding:13px 18px;font-size:15px;font-weight:800;cursor:pointer}
.btn-primary{color:#fff;background:linear-gradient(135deg,var(--blue),var(--cyan));box-shadow:0 8px 18px rgba(37,99,235,.15)}
.btn-light{background:#eff6ff;color:var(--blue)}.btn-danger{background:#fff1f2;color:var(--danger);border:1px solid #fecdd3}
.btn:disabled{opacity:.55;cursor:not-allowed}.section{margin-top:24px}.section-head{display:flex;align-items:center;justify-content:space-between;margin:0 4px 14px}
.section-title{font-size:21px;font-weight:900;color:var(--ink)}.section-meta{font-size:13px;color:var(--muted)}
.grid-cat{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.cat{min-height:146px;background:#fff;border:1px solid var(--line);
border-radius:20px;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 8px 24px rgba(15,23,42,.05);cursor:pointer}
.cat-icon{width:62px;height:62px;border-radius:20px;display:grid;place-items:center;color:#fff;font-weight:900;font-size:28px;box-shadow:0 8px 18px rgba(15,23,42,.11)}
.cat-name{font-size:16px;font-weight:800;color:#253047;margin-top:12px;max-width:92%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cat-count{font-size:13px;color:var(--muted);margin-top:4px}
.gallery-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.goods{background:#fff;border:1px solid var(--line);border-radius:18px;overflow:hidden;cursor:pointer;box-shadow:0 8px 24px rgba(15,23,42,.05)}
.goods-img{aspect-ratio:1/1;width:100%;object-fit:cover;background:#f8fafc;display:block}.goods-body{padding:12px}.goods-code{font-weight:900;color:#172033;font-size:17px}
.goods-name{font-size:13px;color:#64748b;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.goods-price{color:#f43f5e;font-weight:900;font-size:18px;margin-top:8px}
.card{background:#fff;border:1px solid var(--line);border-radius:20px;padding:18px;box-shadow:0 8px 24px rgba(15,23,42,.045);margin-top:14px}
.detail-img{width:100%;display:block;border-radius:18px;background:#f8fafc;max-height:68vh;object-fit:contain}.detail-code{font-size:28px;font-weight:900;color:#172033}
.detail-sub{color:#64748b;margin-top:4px}.detail-price{font-size:28px;font-weight:900;color:#f43f5e;margin-top:12px}
.notice{padding:14px 15px;border-radius:16px;background:#fff7ed;color:#9a3412;border:1px solid #fed7aa;line-height:1.75}
.disclaimer{font-size:13px;line-height:1.8;color:#64748b;background:#f8fafc;border-radius:14px;padding:12px;margin-top:12px}
.form-group{margin-top:16px}.label{font-size:15px;font-weight:800;color:#334155;margin-bottom:8px}.req{color:#e11d48}
.input,.textarea,.select{width:100%;border:1px solid #dbe4f0;border-radius:14px;background:#f9fbfd;padding:13px 14px;font-size:15px;outline:none;color:#1e293b}
.textarea{min-height:112px;resize:vertical}.help{font-size:12px;color:#94a3b8;margin-top:6px}.rules-list{display:grid;gap:10px;margin-top:12px}.rule{display:flex;gap:9px;line-height:1.65}.dot{color:#2563eb;font-weight:900}
.payment-card{background:#ecfdf5;border:1px solid #bbf7d0;color:#166534;display:flex;align-items:center;gap:10px}.pay-mark{width:34px;height:34px;border-radius:10px;background:#22c55e;color:white;display:grid;place-items:center;font-weight:900}
.sticky-pay{position:sticky;bottom:calc(76px + var(--safe-bottom));z-index:9;background:rgba(255,255,255,.94);backdrop-filter:blur(10px);
border:1px solid var(--line);border-radius:20px;padding:12px;margin-top:16px;display:flex;align-items:center;gap:12px;box-shadow:0 -8px 28px rgba(15,23,42,.08)}
.pay-price{flex:1}.pay-label{font-size:12px;color:#94a3b8}.pay-num{font-size:24px;font-weight:900;color:#f43f5e}
.tabs{position:fixed;left:0;right:0;bottom:0;z-index:25;height:calc(66px + var(--safe-bottom));padding-bottom:var(--safe-bottom);background:rgba(255,255,255,.96);
border-top:1px solid #e5e7eb;display:flex;justify-content:center;backdrop-filter:blur(12px)}.tabs-in{width:min(860px,100%);display:grid;grid-template-columns:repeat(4,1fr)}
.tab{border:0;background:none;color:#94a3b8;font-size:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;cursor:pointer}
.tab-icon{font-size:19px}.tab.active{color:#2563eb;font-weight:800}.menu{background:#fff;border:1px solid var(--line);border-radius:20px;overflow:hidden;margin-top:14px}
.menu-item{display:flex;align-items:center;gap:12px;padding:16px;border-bottom:1px solid #eef2f7;cursor:pointer}.menu-item:last-child{border-bottom:0}
.menu-icon{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;font-weight:900;background:#eff6ff;color:#2563eb}.menu-main{flex:1}.menu-title{font-weight:800;color:#334155}
.menu-sub{font-size:12px;color:#94a3b8;margin-top:3px}.arrow{color:#cbd5e1;font-size:22px}
.modal-mask{position:fixed;inset:0;background:rgba(15,23,42,.58);z-index:60;display:flex;align-items:center;justify-content:center;padding:24px}
.modal{width:min(520px,100%);max-height:82vh;overflow:auto;background:#fff;border-radius:24px;padding:22px;box-shadow:0 30px 80px rgba(15,23,42,.24)}
.modal-title{text-align:center;font-size:21px;font-weight:900;color:#172033}.modal-body{margin-top:14px;line-height:1.75;color:#475569}.modal-actions{display:flex;gap:10px;margin-top:18px}
.modal-actions .btn{flex:1}.toast{position:fixed;left:50%;top:20%;transform:translateX(-50%);z-index:100;background:rgba(15,23,42,.88);color:#fff;
padding:11px 16px;border-radius:12px;font-size:14px;max-width:82%;text-align:center}.empty{text-align:center;color:#94a3b8;padding:48px 16px}
.chip-row{display:flex;flex-wrap:wrap;gap:9px}.chip{padding:9px 12px;border:1px solid #dbe4f0;background:#fff;border-radius:999px;cursor:pointer}.chip.active{background:#eff6ff;border-color:#93c5fd;color:#1d4ed8;font-weight:800}
.color-chip{display:flex;align-items:center;gap:7px}.swatch{width:18px;height:18px;border-radius:50%;border:1px solid #cbd5e1}
.upload{display:block;width:100%;border-radius:18px;cursor:pointer}
.upload-modern{margin-top:14px;border:1.5px dashed #b9c8db;background:linear-gradient(180deg,#fbfdff,#f5f9ff);padding:0;overflow:hidden;transition:.18s ease}
.upload-modern:active{transform:scale(.995);background:#f1f6ff}
.upload-empty{min-height:190px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px 18px;text-align:center}
.upload-plus{width:52px;height:52px;border-radius:17px;display:grid;place-items:center;background:#eaf2ff;color:#2563eb;font-size:34px;line-height:1;font-weight:400}
.upload-title{margin-top:14px;font-size:18px;font-weight:900;color:#1e293b}
.upload-sub{margin-top:7px;font-size:13px;color:#94a3b8}
.upload-preview-wrap{padding:12px;text-align:center;background:#f8fbff}
.upload-preview{display:block;width:100%;max-height:420px;object-fit:contain;border-radius:14px;background:#fff}
.upload-change{font-size:13px;color:#2563eb;font-weight:700;padding:10px 0 2px}
.legal h2{font-size:20px;color:#172033;margin:24px 0 10px}.legal p,.legal li{line-height:1.85;color:#475569;font-size:14px}.legal ul{padding-left:20px}
.version{font-size:13px;color:#94a3b8;text-align:center;margin-top:24px}.status-banner{padding:12px 14px;border-radius:14px;background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe;margin:12px 0}

.login-card{background:linear-gradient(145deg,#ffffff,#f8fbff);border:1px solid var(--line);border-radius:22px;padding:18px;box-shadow:0 10px 28px rgba(15,23,42,.055)}
.login-profile{display:flex;align-items:center;gap:13px}
.login-avatar{width:54px;height:54px;border-radius:18px;background:linear-gradient(135deg,#2563eb,#06b6d4);color:#fff;display:grid;place-items:center;font-size:23px;font-weight:900;box-shadow:0 8px 18px rgba(37,99,235,.18)}
.login-copy{flex:1;min-width:0}.login-title{font-size:20px;font-weight:900;color:#172033}.login-sub{font-size:13px;color:#64748b;margin-top:4px;line-height:1.55}
.wechat-login{width:100%;margin-top:16px;background:#07c160;color:#fff;display:flex;align-items:center;justify-content:center;gap:8px;font-size:16px;box-shadow:0 9px 20px rgba(7,193,96,.18)}
.wx-dot{width:27px;height:27px;border-radius:50%;background:rgba(255,255,255,.18);display:grid;place-items:center;font-size:13px;font-weight:900}
.login-tip{margin-top:10px;font-size:12px;line-height:1.65;color:#94a3b8}
.quick-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px}
.quick-item{background:#fff;border:1px solid var(--line);border-radius:17px;padding:14px 8px;text-align:center;cursor:pointer;box-shadow:0 7px 20px rgba(15,23,42,.035)}
.quick-num{font-size:18px;font-weight:900;color:#1d4ed8}.quick-label{font-size:12px;color:#64748b;margin-top:5px}

@media(min-width:760px){
  .page{padding-left:24px;padding-right:24px}.grid-cat{grid-template-columns:repeat(4,1fr)}.gallery-grid{grid-template-columns:repeat(4,1fr)}
  .hero-title{font-size:40px}.tabs{left:50%;transform:translateX(-50%);width:min(860px,100%)}
}
