:root{--bg:#f4f7f6;--surface:#fff;--surface-2:#fafcfb;--surface-3:#f0f5f3;--ink:#16211f;--ink2:#4f635f;--ink3:#667a76;--line:#e2eae8;--line-strong:#cfdcd8;--brand:#0f9d8a;--brand-deep:#0b7567;--brand-soft:#e3f5f0;--success:#0f8f6f;--success-soft:#e4f5ee;--warning:#a96500;--warning-soft:#fff2da;--danger:#bf3b3b;--danger-soft:#fdecec;--info:#2563a8;--info-soft:#e9f1fb;--orange:#e08a0b;--orange-soft:#fff5e3;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--sp-7:48px;--fs-xs:11px;--fs-sm:12.5px;--fs-base:14px;--fs-md:16px;--fs-lg:20px;--fs-xl:28px;--fs-2xl:38px;--lh-tight:1.3;--lh-base:1.6;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--r-sm:8px;--r-md:12px;--r-lg:16px;--r-xl:20px;--r-full:999px;--sh-1:0 1px 2px rgba(16,40,36,.04),0 2px 8px rgba(16,40,36,.04);--sh-2:0 4px 16px rgba(16,40,36,.08);--sh-3:0 12px 32px rgba(16,40,36,.14);--dur:.18s;--ease:cubic-bezier(.2,.8,.2,1);--z-nav:20;--z-modal:100;--z-toast:120}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,Segoe UI,sans-serif;background:var(--bg);color:var(--ink);font-size:var(--fs-base);line-height:var(--lh-base);-webkit-font-smoothing:antialiased}button,input,select,textarea{font-family:inherit;font-size:inherit}button{cursor:pointer;border:0;background:none;color:inherit}a{color:var(--brand-deep);text-decoration:none}::selection{background:var(--brand-soft);color:var(--brand-deep)}:focus-visible{outline:3px solid var(--brand);outline-offset:2px;border-radius:var(--r-sm)}input:focus-visible,select:focus-visible{outline:2px solid var(--brand);outline-offset:0}.topbar{position:sticky;top:0;z-index:40;height:60px;background:var(--surface);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:var(--sp-4);padding:0 var(--sp-5)}.logo{width:32px;height:32px;border-radius:10px;background:var(--brand);color:#fff;display:grid;place-items:center;font-weight:var(--fw-bold);font-size:15px;flex:none}.brand{font-size:var(--fs-md);font-weight:var(--fw-bold);white-space:nowrap;letter-spacing:-.2px}.brand small{font-size:var(--fs-xs);color:var(--ink3);font-weight:400;margin-left:var(--sp-2)}.seg{display:flex;gap:var(--sp-1);background:var(--surface-3);padding:var(--sp-1);border-radius:var(--r-md);margin-left:auto}.seg button{padding:8px 16px;font-size:var(--fs-sm);border-radius:var(--r-sm);color:var(--ink2);font-weight:var(--fw-medium);transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}.seg button:hover:not(.on){color:var(--brand-deep)}.seg button.on{background:var(--surface);color:var(--brand-deep);font-weight:var(--fw-bold);box-shadow:var(--sh-1)}.hint{font-size:var(--fs-xs);color:var(--ink3);white-space:nowrap}.page{padding:var(--sp-5) var(--sp-5) var(--sp-7)}.err{display:flex;align-items:center;gap:var(--sp-3);background:var(--danger-soft);border:1px solid #f3cfcf;color:var(--danger);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);font-size:var(--fs-sm);margin-bottom:var(--sp-4)}.err .btn{margin-left:auto}.toast{position:fixed;left:50%;bottom:var(--sp-6);transform:translate(-50%);z-index:var(--z-toast);background:var(--ink);color:#fff;font-size:var(--fs-sm);font-weight:var(--fw-medium);padding:10px 18px;border-radius:var(--r-full);box-shadow:var(--sh-3);max-width:88vw;text-align:center}.toast.success{background:var(--success)}.toast.error{background:var(--danger)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:36px;padding:8px 15px;border-radius:var(--r-sm);background:var(--brand);color:#fff;font-size:var(--fs-sm);font-weight:var(--fw-semibold);white-space:nowrap;transition:transform var(--dur) var(--ease),background var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.btn:hover:not(:disabled){background:var(--brand-deep);box-shadow:var(--sh-2)}.btn:active:not(:disabled){transform:translateY(1px)}.btn.ghost{background:var(--surface);border:1px solid var(--line-strong);color:var(--ink2)}.btn.ghost:hover:not(:disabled){background:var(--surface-3);color:var(--brand-deep);border-color:var(--brand)}.btn.danger{background:var(--danger)}.btn.danger:hover:not(:disabled){background:#a32f2f}.btn.sm{min-height:32px;padding:5px 11px;font-size:var(--fs-sm)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.warn{background:var(--orange)}.tag{display:inline-flex;align-items:center;gap:5px;font-size:var(--fs-xs);padding:3px 9px;border-radius:var(--r-full);background:var(--brand-soft);color:var(--brand-deep);font-weight:var(--fw-semibold);white-space:nowrap}.tag:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor;flex:none}.tag.gray,.tag.neutral{background:var(--surface-3);color:var(--ink2)}.tag.warn{background:var(--warning-soft);color:var(--warning)}.tag.success{background:var(--success-soft);color:var(--success)}.tag.danger{background:var(--danger-soft);color:var(--danger)}.tag.info{background:var(--info-soft);color:var(--info)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-4);box-shadow:var(--sh-1);margin-bottom:var(--sp-3)}.muted{color:var(--ink3);font-size:var(--fs-sm)}.avatar{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:var(--fs-sm);font-weight:var(--fw-semibold);flex:none}.skeleton{background:linear-gradient(90deg,var(--surface-3) 25%,#e8f0ed 50%,var(--surface-3) 75%);background-size:200% 100%;animation:sk 1.4s linear infinite;border-radius:var(--r-sm)}@keyframes sk{0%{background-position:200% 0}to{background-position:-200% 0}}.sk-row{display:flex;gap:var(--sp-3);padding:var(--sp-3) 0;border-bottom:1px solid var(--line)}.sk-line{height:12px;flex:1}.sk-line.short{flex:0 0 22%}.sk-block{height:88px;border-radius:var(--r-md);margin-bottom:var(--sp-3)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:var(--sp-6) var(--sp-4);gap:var(--sp-2)}.empty-state img{width:112px;height:112px;object-fit:contain;opacity:.9;margin-bottom:var(--sp-2)}.empty-state b{font-size:var(--fs-base);font-weight:var(--fw-semibold)}.empty-state p{font-size:var(--fs-sm);color:var(--ink3);max-width:320px;line-height:var(--lh-base)}.empty-state .btn{margin-top:var(--sp-2)}.app-shell{min-height:calc(100vh - 60px);background:var(--bg)}.app-topnav{background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:60px;z-index:var(--z-nav)}.app-topnav-inner{max-width:1120px;margin:0 auto;height:58px;display:flex;align-items:center;gap:var(--sp-5);padding:0 var(--sp-5)}.app-brand{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-md);font-weight:var(--fw-bold);white-space:nowrap}.app-brand-mark{width:28px;height:28px;border-radius:var(--r-sm);background:var(--brand);color:#fff;display:grid;place-items:center;font-size:var(--fs-sm)}.app-tabs{display:flex;gap:var(--sp-1);margin-left:var(--sp-3)}.app-tabs button{position:relative;display:flex;align-items:center;gap:6px;padding:9px 16px;border-radius:var(--r-sm);font-size:var(--fs-sm);color:var(--ink2);font-weight:var(--fw-medium);min-height:40px;transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}.app-tabs button:hover:not(.on){background:var(--surface-3)}.app-tabs button.on{background:var(--brand-soft);color:var(--brand-deep);font-weight:var(--fw-bold)}.app-tabs button.on:after{content:"";position:absolute;left:16px;right:16px;bottom:3px;height:2px;border-radius:2px;background:var(--brand)}.app-tabs svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.8}.app-user{margin-left:auto;text-align:right;white-space:nowrap;display:flex;align-items:center;gap:var(--sp-2)}.app-user .av{width:32px;height:32px;border-radius:50%;background:var(--brand-soft);color:var(--brand-deep);display:grid;place-items:center;font-weight:var(--fw-bold);font-size:var(--fs-sm)}.app-user span{display:block;font-size:var(--fs-sm);font-weight:var(--fw-semibold)}.app-user small{display:block;font-size:var(--fs-xs);color:var(--ink3)}.app-content{max-width:1000px;margin:0 auto;padding:var(--sp-5) var(--sp-5) var(--sp-7)}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-5);flex-wrap:wrap}.page-head h2{font-size:var(--fs-lg);font-weight:var(--fw-bold);letter-spacing:-.3px}.page-head p{font-size:var(--fs-sm);color:var(--ink3);margin-top:2px}.page-head-right{display:flex;gap:var(--sp-2);align-items:center;font-size:var(--fs-sm);color:var(--brand-deep);background:var(--brand-soft);padding:8px 14px;border-radius:var(--r-md);font-weight:var(--fw-semibold);white-space:nowrap}.sync-state{margin-bottom:var(--sp-3)}.sync-light{display:flex;align-items:center;gap:var(--sp-2);background:var(--success-soft);border:1px solid #c9e8dc;border-radius:var(--r-md);padding:11px 14px;font-size:var(--fs-sm);color:var(--success)}.sync-light .dot{width:8px;height:8px;border-radius:50%;background:var(--success);flex:none}.sync-light .link{margin-left:auto;font-size:var(--fs-sm);font-weight:var(--fw-semibold);text-decoration:underline;text-underline-offset:3px}.sync-warn{background:var(--warning-soft);border:1px solid #f0d9a8;border-radius:var(--r-lg);padding:var(--sp-4)}.sync-warn b{font-size:var(--fs-md);color:var(--warning);display:block;margin-bottom:var(--sp-1)}.sync-warn p{font-size:var(--fs-sm);color:#8a6224;line-height:var(--lh-base);margin-bottom:var(--sp-3)}.sync-guide{background:linear-gradient(145deg,var(--brand-soft),#f5fbfa);border:1px solid #c9e8dc;border-radius:var(--r-lg);padding:var(--sp-4)}.sync-guide b{font-size:var(--fs-md);display:block;margin-bottom:var(--sp-1)}.sync-guide p{font-size:var(--fs-sm);color:var(--ink2);line-height:var(--lh-base);margin-bottom:var(--sp-3)}.big-btn{width:100%;min-height:42px;padding:10px;border-radius:var(--r-sm);background:var(--orange);color:#fff;font-size:var(--fs-base);font-weight:var(--fw-bold);transition:filter var(--dur) var(--ease)}.big-btn:hover{filter:brightness(.94)}.big-btn.brand{background:var(--brand)}.hero{background:linear-gradient(135deg,#0b7d6e,#0f9d8a 55%,#3fc9ae);color:#fff;border-radius:var(--r-xl);padding:var(--sp-5);position:relative;overflow:hidden;margin-bottom:var(--sp-3)}.hero:after{content:"";position:absolute;right:-60px;top:-80px;width:220px;height:220px;border:26px solid rgba(255,255,255,.08);border-radius:50%}.hero-row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);position:relative;z-index:1}.hero-label{font-size:var(--fs-sm);opacity:.9;margin-bottom:var(--sp-1)}.hero-num{font-size:var(--fs-2xl);font-weight:var(--fw-bold);letter-spacing:-1.5px;line-height:1.15}.hero-num span{font-size:var(--fs-sm);font-weight:var(--fw-medium);margin-left:5px;opacity:.9}.hero-foot{margin-top:var(--sp-3);font-size:var(--fs-sm);opacity:.95;display:flex;gap:var(--sp-2);flex-wrap:wrap}.hero-foot .pill{background:#ffffff2e;border-radius:var(--r-full);padding:3px 10px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-2);margin-bottom:var(--sp-3)}.grid3 .card{margin:0;padding:var(--sp-3) var(--sp-2);text-align:center;transition:border-color var(--dur) var(--ease),transform var(--dur) var(--ease)}.grid3 b{display:block;font-size:var(--fs-lg);font-weight:var(--fw-bold);letter-spacing:-.5px;margin-bottom:2px}.grid3 small{font-size:var(--fs-xs);color:var(--ink3)}.grid3 .card.click{cursor:pointer}.grid3 .card.click:hover{border-color:var(--brand);transform:translateY(-2px);box-shadow:var(--sh-2)}.banner{position:relative;border-radius:var(--r-xl);overflow:hidden;margin-bottom:var(--sp-3);touch-action:pan-y;-webkit-user-select:none;user-select:none;box-shadow:var(--sh-1);background:var(--surface)}.banner-track{display:flex;transition:transform .3s var(--ease)}.banner-page{min-width:100%;height:150px;padding:var(--sp-4) var(--sp-5);position:relative;overflow:hidden}.banner-page.p1{background:linear-gradient(120deg,#fff7e8,#fffdf7);border:1px solid #f3e2bd}.banner-page .pn{font-size:30px;font-weight:var(--fw-bold);color:#9a6708;letter-spacing:-1px;line-height:1.2}.banner-page .pn em{font-size:var(--fs-sm);font-style:normal;font-weight:var(--fw-medium);margin-left:4px}.banner-page .bs{font-size:var(--fs-sm);color:#8a6a34;margin-top:var(--sp-1)}.banner-page .go{position:absolute;right:var(--sp-4);bottom:var(--sp-4);background:var(--orange);color:#fff;font-size:var(--fs-sm);font-weight:var(--fw-bold);padding:8px 14px;border-radius:var(--r-sm)}.banner-page.imgpage{padding:0;cursor:pointer}.banner-img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center 42%}.bi-shade{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,#fffffff0,#ffffffc7 38%,#ffffff14 72%)}.bi-txt{position:absolute;left:var(--sp-5);top:50%;transform:translateY(-50%);z-index:2;max-width:58%}.bi-tag{display:inline-block;font-size:var(--fs-xs);background:#ffffffe6;color:var(--brand-deep);padding:3px 10px;border-radius:var(--r-full);margin-bottom:var(--sp-2);font-weight:var(--fw-semibold)}.banner-page.imgpage b{font-size:var(--fs-md);display:block;color:var(--ink);font-weight:var(--fw-bold)}.banner-page.imgpage small{font-size:var(--fs-sm);color:var(--ink2);display:block;margin-top:4px}.banner-dots{position:absolute;bottom:10px;left:0;right:0;display:flex;justify-content:center;gap:6px;z-index:3}.banner-dots i{width:6px;height:6px;border-radius:var(--r-full);background:#16211f47;cursor:pointer;transition:width var(--dur) var(--ease),background var(--dur) var(--ease)}.banner-dots i.on{width:16px;background:var(--brand)}.sec-title{display:flex;justify-content:space-between;align-items:center;margin:var(--sp-4) 2px var(--sp-2);font-size:var(--fs-md);font-weight:var(--fw-bold)}.sec-title span{font-size:var(--fs-sm);color:var(--brand-deep);font-weight:var(--fw-semibold);cursor:pointer}.rank-item{display:flex;align-items:center;gap:var(--sp-3);padding:10px 0;border-bottom:1px solid var(--line)}.rank-item:last-child{border:0}.rk{width:22px;text-align:center;font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--ink3)}.rk.top{color:var(--orange)}.rank-name{flex:1;font-size:var(--fs-sm);font-weight:var(--fw-semibold);min-width:0}.rank-name small{display:block;font-size:var(--fs-xs);color:var(--ink3);font-weight:400;margin-top:2px}.rank-step{font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--brand-deep);white-space:nowrap}.rank-step small{font-size:var(--fs-xs);color:var(--ink3);font-weight:400;margin-left:2px}.list-row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:11px 0;border-bottom:1px solid var(--line);font-size:var(--fs-sm)}.list-row:last-child{border:0}.list-row .right{color:var(--ink3);font-size:var(--fs-sm);text-align:right}.goods-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-3)}.goods{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-3);box-shadow:var(--sh-1);transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease),border-color var(--dur) var(--ease);display:flex;flex-direction:column}.goods:hover{transform:translateY(-2px);box-shadow:var(--sh-2);border-color:var(--line-strong)}.goods .pic{height:82px;border-radius:var(--r-md);display:grid;place-items:center;margin-bottom:var(--sp-3);overflow:hidden}.goods .pic img{width:100%;height:100%;object-fit:cover}.goods .pic .ico{font-size:26px;font-weight:var(--fw-bold);color:#0b75678c}.goods b{font-size:var(--fs-sm);display:block;font-weight:var(--fw-semibold)}.goods .meta{font-size:var(--fs-xs);color:var(--ink3);margin:4px 0 var(--sp-3);line-height:1.5;flex:1}.goods .buy{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2)}.goods .price{font-size:var(--fs-md);font-weight:var(--fw-bold);color:#9a6708;white-space:nowrap}.goods .price small{font-size:var(--fs-xs);font-weight:400;margin-left:2px}.admin-shell{max-width:1360px;margin:0 auto;background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--sh-2);display:grid;grid-template-columns:220px 1fr;min-height:760px;overflow:hidden}.side{background:var(--surface-2);border-right:1px solid var(--line);padding:var(--sp-4) var(--sp-2);max-height:760px;overflow-y:auto}.side .t{font-size:var(--fs-xs);color:var(--ink3);padding:0 10px;margin:var(--sp-3) 0 var(--sp-2);letter-spacing:1.2px;font-weight:var(--fw-semibold)}.side button{position:relative;display:block;width:100%;text-align:left;padding:9px 12px;border-radius:var(--r-sm);font-size:var(--fs-sm);color:var(--ink2);margin-bottom:2px;min-height:38px;transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}.side button:hover:not(.on){background:var(--surface-3);color:var(--brand-deep)}.side button.on{background:var(--brand-soft);color:var(--brand-deep);font-weight:var(--fw-bold)}.side button.on:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--brand)}.admin-main{padding:0 var(--sp-5) var(--sp-6);min-width:0}.admin-top{height:62px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-4)}.admin-top h2{font-size:var(--fs-md);font-weight:var(--fw-bold)}.admin-top .who{font-size:var(--fs-sm);color:var(--ink3)}.box{border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-4);margin-bottom:var(--sp-4);background:var(--surface)}.box h3{font-size:var(--fs-md);font-weight:var(--fw-bold);margin-bottom:var(--sp-1)}.box .sub{font-size:var(--fs-sm);color:var(--ink3);margin-bottom:var(--sp-3);line-height:var(--lh-base)}.box-head{display:flex;justify-content:space-between;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-3);flex-wrap:wrap}.box-head .sub{margin:0}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-3);margin-bottom:var(--sp-4)}.kpi{border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-4);background:linear-gradient(180deg,var(--surface),var(--surface-2))}.kpi small{font-size:var(--fs-sm);color:var(--ink3);display:flex;align-items:center;gap:6px}.kpi .kpi-ico{width:22px;height:22px;border-radius:6px;background:var(--brand-soft);color:var(--brand-deep);display:grid;place-items:center;font-size:var(--fs-xs);font-weight:var(--fw-bold)}.kpi b{display:block;font-size:var(--fs-xl);font-weight:var(--fw-bold);letter-spacing:-1px;margin:var(--sp-2) 0 var(--sp-1)}.kpi .up{font-size:var(--fs-xs);color:var(--success);font-weight:var(--fw-medium)}.two-col{display:grid;grid-template-columns:1.3fr 1fr;gap:var(--sp-4)}.scroll-x{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}th{text-align:left;color:var(--ink3);font-weight:var(--fw-semibold);padding:10px 8px;border-bottom:1px solid var(--line-strong);font-size:var(--fs-xs);white-space:nowrap;background:var(--surface-2)}td{padding:11px 8px;border-bottom:1px solid var(--line);white-space:nowrap;max-width:240px;overflow:hidden;text-overflow:ellipsis}tbody tr{transition:background var(--dur) var(--ease)}tbody tr:hover{background:var(--surface-2)}tr:last-child td{border:0}.op{display:flex;gap:5px}.op button{min-height:30px;padding:4px 9px;font-size:var(--fs-xs);border-radius:6px;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink2);font-weight:var(--fw-medium)}.op button:hover{border-color:var(--brand);color:var(--brand-deep);background:var(--brand-soft)}.op button.del:hover{border-color:var(--danger);color:var(--danger);background:var(--danger-soft)}.pager{display:flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-3);font-size:var(--fs-sm);color:var(--ink2);flex-wrap:wrap}.pager .page-no{padding:4px 9px;border-radius:6px;border:1px solid var(--line);cursor:pointer}.pager .page-no.on{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:var(--fw-bold)}.tools{display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap;margin-bottom:var(--sp-3)}.tools input,.tools select{border:1px solid var(--line-strong);border-radius:var(--r-sm);padding:8px 11px;font-size:var(--fs-sm);outline:none;color:var(--ink);min-width:160px;background:var(--surface)}.tools input::placeholder{color:var(--ink3)}.field{margin-bottom:var(--sp-3)}.field label{display:block;font-size:var(--fs-sm);color:var(--ink2);margin-bottom:5px;font-weight:var(--fw-medium)}.field label .req{color:var(--danger);margin-left:3px}.field input,.field select{width:100%;border:1px solid var(--line-strong);border-radius:var(--r-sm);padding:9px 11px;font-size:var(--fs-sm);outline:none;color:var(--ink);background:var(--surface);min-height:38px}.field input:focus,.field select:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#10201d75;display:flex;align-items:center;justify-content:center;z-index:var(--z-modal);padding:var(--sp-4)}.modal{background:var(--surface);border-radius:var(--r-xl);width:440px;max-width:94vw;padding:var(--sp-5);max-height:86vh;overflow-y:auto;box-shadow:var(--sh-3)}.modal h3{font-size:var(--fs-md);font-weight:var(--fw-bold);margin-bottom:5px}.modal .sub{font-size:var(--fs-sm);color:var(--ink3);margin-bottom:var(--sp-4);line-height:var(--lh-base)}.modal-foot{display:flex;gap:var(--sp-2);justify-content:flex-end;margin-top:var(--sp-4)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 var(--sp-3)}@media (max-width:1100px){.two-col{grid-template-columns:1fr}.kpis{grid-template-columns:repeat(2,1fr)}}@media (max-width:820px){.app-content .goods-grid{grid-template-columns:repeat(2,1fr)}.app-tabs button{padding:8px 10px}.app-user small,.page-head-right{display:none}.admin-shell{grid-template-columns:1fr}.side{max-height:none;display:flex;flex-wrap:wrap;gap:4px;border-right:0;border-bottom:1px solid var(--line)}.side .t{width:100%;margin-top:4px}.side button{width:auto;padding:7px 11px}.side button.on:before{display:none}.topbar{padding:0 var(--sp-3)}.brand small,.hint{display:none}.page{padding:var(--sp-3) var(--sp-3) var(--sp-6)}}@media (prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(145deg,#e9f5f1,#f7fbfa);padding:20px}.login-card{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xl);padding:var(--sp-6);box-shadow:var(--sh-3)}.login-logo{width:44px;height:44px;border-radius:var(--r-md);background:var(--brand);color:#fff;display:grid;place-items:center;font-size:var(--fs-lg);font-weight:var(--fw-bold);margin-bottom:var(--sp-4)}.login-card h1{font-size:var(--fs-lg);font-weight:var(--fw-bold)}.login-card>p{font-size:var(--fs-sm);color:var(--ink3);margin:6px 0 var(--sp-5)}.login-submit{width:100%;min-height:42px;margin-top:var(--sp-1)}.login-back{display:block;width:100%;text-align:center;margin-top:var(--sp-4);font-size:var(--fs-sm);color:var(--brand-deep)}.login-tip{font-size:var(--fs-xs);color:var(--ink3);margin-top:var(--sp-4);line-height:var(--lh-base);text-align:center}.admin-top .who{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;justify-content:flex-end}.mobile-list{display:none}.mobile-card{border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-3);margin-bottom:var(--sp-2);background:var(--surface)}.mobile-field{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-3);padding:5px 0;border-bottom:1px dashed var(--line);font-size:var(--fs-sm)}.mobile-field>span{color:var(--ink3);flex:none}.mobile-field>b{font-weight:var(--fw-semibold);text-align:right;word-break:break-all}.mobile-list .op{margin-top:var(--sp-2);justify-content:flex-end}@media (max-width:820px){.scroll-x table{display:none}.mobile-list{display:block}.admin-shell{min-height:auto}}@media (max-width:640px){.topbar{height:54px;padding:0 12px}.brand{font-size:var(--fs-base)}.brand small,.hint{display:none}.seg button{padding:6px 10px;font-size:var(--fs-sm)}.page{padding:12px 10px 24px}.app-topnav{position:fixed;top:auto;bottom:0;left:0;right:0;z-index:40;border-top:1px solid var(--line);border-bottom:0;box-shadow:0 -4px 16px #1028240f}.app-topnav-inner{height:62px;max-width:none;padding:0 6px;gap:0;justify-content:center}.app-brand,.app-user{display:none}.app-tabs{margin:0;width:100%;display:flex;justify-content:space-around;gap:0}.app-tabs button{flex:1;flex-direction:column;gap:3px;padding:6px 2px;font-size:var(--fs-xs);min-height:56px;border-radius:0}.app-tabs button.on{background:transparent;color:var(--brand-deep)}.app-tabs button.on:after{left:22%;right:22%;bottom:2px}.app-tabs svg{width:20px;height:20px}.app-content{padding:14px 12px 88px;max-width:100%}.page-head h2{font-size:17px}.hero{padding:var(--sp-4)}.hero-num{font-size:32px}.hero-foot{font-size:var(--fs-xs)}.grid3 b{font-size:var(--fs-md)}.grid3 small{font-size:var(--fs-xs)}.app-content .banner{height:120px}.app-content .banner-page{height:120px;padding:12px}.app-content .banner-page .pn{font-size:25px}.bi-txt{left:14px;max-width:74%}.app-content .banner-page.imgpage b{font-size:var(--fs-base)}.banner-page.imgpage small{font-size:var(--fs-xs)}.goods-grid,.app-content .goods-grid{grid-template-columns:repeat(2,1fr)}.goods .pic{height:64px}.kpis{grid-template-columns:repeat(2,1fr)}.admin-shell{border-radius:0}.admin-top{height:auto;min-height:56px;padding:10px 0;flex-wrap:wrap}.admin-top h2{font-size:15px}.admin-top .who{font-size:var(--fs-xs);gap:6px}.admin-main{padding:0 12px 20px}.box{padding:12px}.tools input{min-width:120px;flex:1}.form-grid{grid-template-columns:1fr}.modal{width:100%;padding:18px;border-radius:var(--r-lg)}.login-card{padding:22px}}@media (max-width:420px){.goods-grid,.app-content .goods-grid,.kpis{grid-template-columns:1fr}.grid3{gap:6px}.grid3 .card{padding:10px 4px}}
