*{box-sizing:border-box}
body{margin:0;font-family:-apple-system,"PingFang SC","Microsoft YaHei","Noto Sans CJK SC",sans-serif;background:#f6f6f4;color:#1d1d1b;font-size:14px}
button{white-space:nowrap;font:inherit;cursor:pointer;border-radius:8px;border:1px solid #1d1d1b;background:#1d1d1b;color:#fff;padding:7px 12px}
button.ghost{background:#fff;color:#1d1d1b;border-color:#d4d4cf}
button:disabled{opacity:.4;cursor:not-allowed}
input,select{font:inherit;width:100%;padding:7px 8px;border:1px solid #d4d4cf;border-radius:8px;background:#fff;color:#1d1d1b}
.top{position:sticky;top:0;z-index:5;display:flex;flex-wrap:wrap;gap:8px 24px;align-items:center;justify-content:space-between;padding:12px 24px;background:#fff;border-bottom:1px solid #e4e4df}
.brand{font-size:18px;font-weight:600}.tag{font-size:12px;font-weight:400;color:#6b6b66;border:1px solid #d4d4cf;border-radius:99px;padding:1px 8px;margin-left:6px}
.meta{color:#6b6b66;font-size:13px}.meta b{color:#1d1d1b;font-weight:500}
.store{display:flex;gap:10px;align-items:center}.store label{display:flex;gap:6px;align-items:center;white-space:nowrap}.store select{width:auto}
.layout{display:grid;grid-template-columns:240px minmax(0,1fr) 360px;gap:20px;padding:20px 24px;align-items:start}
.filters,.basket{position:sticky;top:76px;background:#fff;border:1px solid #e4e4df;border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:10px;max-height:calc(100vh - 110px);overflow:auto}
.filters label{display:flex;flex-direction:column;gap:4px;color:#6b6b66;font-size:12px}
.stat{color:#8a8a84;font-size:12px;line-height:1.6;border-top:1px solid #eee;padding-top:8px}
.bar{display:flex;justify-content:space-between;align-items:center;margin:4px 0 10px;color:#4a4a46}
.pager{display:flex;gap:8px;align-items:center}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px}
.card{background:#fff;border:1px solid #e4e4df;border-radius:12px;padding:8px;cursor:pointer;display:flex;flex-direction:column;gap:4px;text-align:left;color:inherit}
.card:hover{border-color:#1d1d1b}.card.active{border-color:#2a6df4;box-shadow:0 0 0 2px #2a6df433}
.ph{width:100%;aspect-ratio:3/4;border-radius:8px;background:#efefeb;overflow:hidden;display:flex;align-items:center;justify-content:center;color:#9a9a94;font-size:12px}
.ph img{width:100%;height:100%;object-fit:cover;display:block}
.row1{display:flex;justify-content:space-between;gap:6px;margin-top:4px}.id{font-weight:600}.av{font-size:13px}
.sub{color:#6b6b66;font-size:12px}
.chips{display:flex;flex-wrap:wrap;gap:4px}.chip{font-size:11px;border:1px solid #e0e0db;border-radius:99px;padding:1px 6px;color:#4a4a46}
.inb{font-size:12px;color:#2a6df4}
.detail{background:#fff;border:1px solid #e4e4df;border-radius:12px;padding:16px;margin-bottom:16px;display:grid;grid-template-columns:280px minmax(0,1fr);gap:20px}
.detail .ph{aspect-ratio:3/4}
.dh{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}
.dh h2{margin:0;font-size:20px}.dl{color:#4a4a46;margin-top:4px;line-height:1.6}
table.mx{border-collapse:collapse;margin-top:12px}
.mx th{font-weight:500;color:#6b6b66;font-size:12px;padding:6px 8px;border-bottom:1px solid #eee}
.mx td{padding:5px 6px;border-bottom:1px solid #eee;text-align:center}.mx td:first-child{text-align:left;white-space:nowrap}
.mx .q{font-size:12px;color:#6b6b66;margin-bottom:3px}.mx .off{background:#f3f3f0}.mx .off .q{color:#aaa}.mx .over .q{color:#d4351c}
.mx input{width:64px;text-align:center;padding:4px}
.acts{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:12px}.acts input{width:70px}
.hint{color:#8a8a84;font-size:12px;margin-top:8px}
.basket h3{margin:0;font-size:15px}.big{font-size:22px;font-weight:600}
.line{display:flex;justify-content:space-between;gap:6px;padding:8px;border:1px solid #eee;border-radius:8px;font-size:12px}
.line .x{background:none;border:none;color:#9a9a94;padding:0}.warn{color:#d4351c}
.lines{display:flex;flex-direction:column;gap:6px}
.plan{margin:0 24px 40px;background:#fff;border:1px solid #e4e4df;border-radius:12px;padding:16px}
.plan:empty{display:none}
.plan h2{margin:0 0 6px;font-size:18px}
.plan table{border-collapse:collapse;width:100%;margin-top:12px}
.plan th,.plan td{padding:7px 10px;border-bottom:1px solid #eee;text-align:left}.plan td.n{text-align:right}.plan th.n{text-align:right}
.ok{color:#1b7f3b}.bad{color:#d4351c}
@media (max-width:1100px){.layout{grid-template-columns:1fr}.filters,.basket{position:static;max-height:none}.detail{grid-template-columns:1fr}}

.mx .cname{display:flex;align-items:center;gap:8px;font-weight:500}
.mx .cth{width:44px;height:44px;object-fit:cover;border-radius:6px;border:1px solid #e4e4df;background:#efefeb;flex-shrink:0}
.mx .cth.phc{display:inline-block}
.mx tr.crow{cursor:pointer}
.mx tr.crow:hover td:first-child{color:#2a6df4}
.mx tr.crow.on td:first-child{color:#2a6df4}
.mx tr.crow.on .cth{border-color:#2a6df4;box-shadow:0 0 0 2px #2a6df433}

/* store-v2 */
.footnote{margin:0;padding:6px 24px 0;color:#8a8a84;font-size:12px;line-height:1.55}
.checks{display:flex;flex-direction:column;gap:6px;padding:4px 0;border-top:1px solid #eee;border-bottom:1px solid #eee}
.chk{flex-direction:row!important;align-items:center;gap:6px!important;color:#4a4a46!important;font-size:13px!important;cursor:pointer}
.chk input{width:auto}
.badges{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.badge{font-size:11px;border-radius:99px;padding:1px 7px;border:1px solid #d4d4cf;color:#4a4a46;background:#f6f6f4}
.badge.own{border-color:#b7d4a8;color:#1b7f3b;background:#eef7ea}
.badge.miss{border-color:#e0cfc0;color:#9a5b2a;background:#faf3eb}
.badge.rep{border-color:#9db7f0;color:#1e4fbf;background:#eef3fd}
.badge.clr{border-color:#e8b4b0;color:#b42318;background:#fdf1f0}
.badge.hot{border-color:#c9b07a;color:#8a5a00;background:#fbf6ea}
.mx td.cell{vertical-align:top;min-width:88px}
.mx .meta{font-size:11px;line-height:1.35;color:#6b6b66;text-align:left;margin-bottom:3px}
.mx .meta b{color:#1d1d1b;font-weight:500}
.mx td.clr-cell{background:#fdf6f5}
.mx td.clr-cell .q{color:#b42318}
.mx td.off.clr-cell{background:#f3f3f0}
.basket .btns{display:flex;flex-wrap:wrap;gap:6px}
.basket .btns button{flex:1;min-width:0;padding:7px 8px;font-size:13px}
.bsug{border-top:1px solid #eee;padding-top:10px;margin-top:4px;display:flex;flex-direction:column;gap:8px}
.bsug .bsug-hd{display:flex;align-items:center;justify-content:space-between;gap:6px;flex-wrap:wrap}
.bsug .bsug-hd h4{margin:0;font-size:13px}
.sg{border:1px solid #eee;border-radius:8px;overflow:hidden}
.sg .sghd{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:7px 8px;background:#fafaf8;cursor:pointer;user-select:none}
.sg .sghd .t{font-size:13px;font-weight:600;flex:1;min-width:0}
.sg .sghd .t .sub{font-weight:400;color:#6b6b66}
.sg .sghd button{padding:4px 8px;font-size:12px}
.sg .sghd .caret{color:#8a8a84;font-size:11px;width:14px}
.sg.collapsed .sgbody{display:none}
.sg.collapsed .caret:before{content:"▸"}
.sg:not(.collapsed) .caret:before{content:"▾"}
.sglist{display:flex;flex-direction:column;max-height:220px;overflow:auto}
.sgrow{display:grid;grid-template-columns:18px 36px minmax(0,1fr);gap:6px;align-items:start;padding:6px 8px;border-top:1px solid #f0f0ec;font-size:12px}
.sgrow:hover{background:#f7f7f4}
.sgrow.added{opacity:.55}
.sgrow img,.sgrow .phs{width:36px;height:36px;object-fit:cover;border-radius:5px;background:#efefeb;border:1px solid #e4e4df}
.sgrow .phs{display:flex;align-items:center;justify-content:center;color:#aaa;font-size:10px}
.sgrow .ttl{font-weight:500;line-height:1.3}
.sgrow .reason{color:#8a8a84;font-size:11px;line-height:1.35;margin-top:2px}
.sgrow input{margin-top:2px}
.loading{color:#8a8a84;font-size:13px;padding:4px 0}
@media (min-width:1400px){.layout{grid-template-columns:240px minmax(0,1fr) 380px}}
.sales{font-size:12px;color:#4a4a46;margin-top:2px}
.sales.zero{color:#8a8a84}
.wxbox{background:#f3f7fb;border:1px solid #d8e4f0;border-radius:8px;padding:8px;margin-top:2px}
.wxline{font-size:12px;line-height:1.45;color:#1d1d1b}
.wxstrip{display:flex;gap:4px;margin-top:6px;overflow:auto}
.wxday{flex:0 0 auto;min-width:42px;text-align:center;font-size:10px;color:#4a4a46;background:#fff;border:1px solid #e4e4df;border-radius:6px;padding:4px 3px;line-height:1.25}
.wxday .d{color:#8a8a84}
.wxday .t{font-weight:600;font-size:11px}
.navtabs{display:flex;gap:6px;align-items:center;margin-left:12px}
.navtabs a{font-size:13px;padding:4px 10px;border-radius:99px;border:1px solid #d4d4cf;color:#4a4a46;text-decoration:none;background:#fff}
.navtabs a.on{background:#1d1d1b;color:#fff;border-color:#1d1d1b}
.brand-wrap{display:flex;align-items:center;flex-wrap:wrap;gap:4px}
.ops{padding:16px 24px 40px;display:flex;flex-direction:column;gap:16px;max-width:1280px;margin:0 auto}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.ocard{background:#fff;border:1px solid #e4e4df;border-radius:12px;padding:12px 14px}
.ocard .k{font-size:12px;color:#6b6b66}
.ocard .v{font-size:22px;font-weight:600;margin-top:4px}
.ocard .s{font-size:12px;color:#8a8a84;margin-top:2px}
.panel{background:#fff;border:1px solid #e4e4df;border-radius:12px;padding:14px 16px}
.panel h2{margin:0 0 10px;font-size:16px}
.panel h3{margin:12px 0 8px;font-size:14px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.chart-wrap{width:100%;overflow:auto}
.chart-wrap svg{width:100%;height:220px;display:block}
.legend{display:flex;gap:12px;font-size:12px;color:#6b6b66;margin-top:6px}
.legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px}
.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th,.tbl td{padding:7px 8px;border-bottom:1px solid #eee;text-align:left}
.tbl th{color:#6b6b66;font-weight:500;cursor:pointer;user-select:none;white-space:nowrap}
.tbl th .ar{color:#aaa;font-size:10px}
.tbl td.n,.tbl th.n{text-align:right}
.tbl tr:hover td{background:#fafaf8}
.rank{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:900px){.rank{grid-template-columns:1fr}}
.rrow{display:grid;grid-template-columns:28px 40px minmax(0,1fr) auto;gap:8px;align-items:center;padding:6px 0;border-bottom:1px solid #f0f0ec;font-size:12px}
.rrow img,.rrow .ph{width:40px;height:40px;object-fit:cover;border-radius:6px;background:#efefeb}
.rrow .ph{display:flex;align-items:center;justify-content:center;color:#aaa;font-size:10px}
.retg{border:1px solid #eee;border-radius:8px;margin-top:8px;overflow:hidden}
.retg .hd{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 10px;background:#fafaf8}
.retg .hd .t{font-weight:600;font-size:13px;flex:1}
.retlist{max-height:280px;overflow:auto}
.retrow{display:grid;grid-template-columns:18px 36px minmax(0,1fr);gap:8px;align-items:start;padding:7px 10px;border-top:1px solid #f0f0ec;font-size:12px}
.retrow img,.retrow .ph{width:36px;height:36px;object-fit:cover;border-radius:5px;background:#efefeb}
.ops .toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.ops select{width:auto}
.ownbd{font-size:11px;color:#1b7f3b;line-height:1.35;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.sec{margin:14px 0 8px;font-size:14px;font-weight:600}
.tbl tr.subtotal td{font-weight:600;background:#f7f7f4;border-top:1px solid #ddd}
.kind{display:flex;gap:6px;flex-wrap:wrap;margin:4px 0 2px}
.kind button{padding:4px 10px;font-size:12px;border-radius:99px;border:1px solid #d4d4cf;background:#fff;color:#4a4a46}
.kind button.on{background:#1d1d1b;color:#fff;border-color:#1d1d1b}

.capbox{margin:8px 0;padding:8px 10px;border:1px solid #e4e4df;border-radius:8px;background:#fafaf8}
.capbox.over{border-color:#e8b4b0;background:#fdf1f0}
.capline{font-size:12px;color:#4a4a46}
.capbar{height:6px;background:#e8e8e3;border-radius:99px;margin-top:6px;overflow:hidden}
.capbar i{display:block;height:100%;background:#6aa84f;border-radius:99px}
.capbox.over .capbar i{background:#b42318}
.hint.warn{color:#9a5b2a;background:#faf3eb;border:1px solid #e0cfc0;border-radius:8px;padding:8px 10px}

/* auth / login / accounts */
.login-body{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#f6f6f4}
.login-card{width:100%;max-width:400px;background:#fff;border:1px solid #e4e4df;border-radius:16px;padding:28px 28px 24px;box-shadow:0 8px 24px #0000000a}
.login-card .brand{font-size:20px;font-weight:600;margin-bottom:6px}
.login-card .sub{color:#6b6b66;font-size:13px;margin:0 0 16px}
.login-card form{display:flex;flex-direction:column;gap:12px}
.login-card label{display:flex;flex-direction:column;gap:4px;color:#6b6b66;font-size:12px}
.login-card button{width:100%;padding:9px 12px}
.err{color:#b42318;font-size:13px;margin:0}
.login-card .ok{margin:0}
.userbox{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.userbox .who{font-size:13px;color:#4a4a46}
.userbox a{font-size:13px;color:#1d1d1b;text-decoration:none;border:1px solid #d4d4cf;border-radius:99px;padding:4px 10px;background:#fff}
.userbox a:hover{border-color:#1d1d1b}
.userbox button.ghost{padding:4px 10px;font-size:13px;border-radius:99px}
.acct{max-width:1180px;margin:0 auto;padding:16px 24px 48px;display:flex;flex-direction:column;gap:16px}
.acct-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.tblwrap{overflow:auto}
.acct-table{border-collapse:collapse;width:100%;font-size:13px}
.acct-table th,.acct-table td{padding:8px 10px;border-bottom:1px solid #eee;text-align:left;vertical-align:middle;white-space:nowrap}
.acct-table th{font-weight:500;color:#6b6b66;font-size:12px;background:#fafaf8}
.acct-table .ops-cell{white-space:normal}
.acct-table .ops-cell button{margin:2px 4px 2px 0;padding:4px 8px;font-size:12px}
.acct-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px;max-width:720px}
.acct-form label{display:flex;flex-direction:column;gap:4px;color:#6b6b66;font-size:12px}
.acct-form .acts,.acct-form .err{grid-column:1/-1}
.pwd-once{font-size:22px;font-weight:600;letter-spacing:1px;font-family:ui-monospace,Menlo,Consolas,monospace;background:#fafaf8;border:1px dashed #d4d4cf;border-radius:8px;padding:12px 14px}
@media (max-width:700px){.acct-form{grid-template-columns:1fr}}

/* multi-store account + picker */
.store-checks{grid-column:1/-1;display:flex;flex-direction:column;gap:6px;color:#6b6b66;font-size:12px}
.store-checks .chkrow{display:flex;flex-wrap:wrap;gap:8px 14px}
.store-pick{display:flex;align-items:flex-start;gap:8px}
.store-lab{font-size:13px;color:#4a4a46;padding-top:4px;white-space:nowrap}
.store-pills{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.store-pills button{padding:4px 10px;font-size:13px;border-radius:99px;border:1px solid #d4d4cf;background:#fff;color:#4a4a46}
.store-pills button.on{background:#1d1d1b;color:#fff;border-color:#1d1d1b}
.store-pills button:disabled{opacity:.4}
.sales.break,.ownbd.break{display:flex;flex-direction:column;gap:1px}
.sales .sl,.ownbd .sl{font-size:11px;color:#4a4a46;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sales .sl.zero{color:#8a8a84}
.mx .perstore{display:flex;flex-direction:column;gap:4px;margin-top:4px;text-align:left}
.mx .ps{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:11px;color:#4a4a46;line-height:1.3}
.mx .ps .psn{flex:1;min-width:0}
.mx .ps input{width:52px;padding:3px 4px}
.mx .sumq{font-size:11px;margin-top:4px;color:#4a4a46}
.mx .sumq.over{color:#d4351c;font-weight:600}
.bstore{border:1px solid #eee;border-radius:10px;padding:10px;margin:8px 0;background:#fafaf8}
.bstore h4{margin:0 0 8px;font-size:14px;display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.wh-warn{background:#fdf1f0;border:1px solid #e8b4b0;color:#b42318;border-radius:8px;padding:8px 10px;font-size:12px;margin:8px 0}
.plan-block{margin-top:16px}
