/* NEWXT 前端样式 —— 零构建。品牌亮蓝 + 磨砂玻璃 + 浅/深双主题 */
:root{
  --brand:#2f93ef;--brand-600:#1f7ad6;--brand-700:#1667bd;--brand-200:#bfe0fb;
  --bg:#eef3f9;--panel:#fff;--fg:#121a24;--muted:#5a6778;
  --line:#dde5f0;--line-strong:color-mix(in srgb, var(--line) 85%, var(--fg) 15%);--field:#f2f6fc;--ring:rgba(47,147,239,.38);
  --head:#eef3f9;--stripe:#f6f9fd;--neg:#e5484d;--amber:#b7791f;
  --radius:16px;--sans:"Noto Sans","Microsoft YaHei","微软雅黑",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#0b1119;--panel:#121b26;--fg:#e8eef6;--muted:#9db0c6;
  --line:#223040;--line-strong:color-mix(in srgb, var(--line) 40%, var(--fg) 60%);--field:#0e1722;--ring:rgba(191,224,251,.42);
  --head:#16202c;--stripe:#0f1a26;--neg:#ff6b6e;--amber:#e0a84a;color-scheme:dark;}}
:root[data-theme="dark"]{
  --bg:#0b1119;--panel:#121b26;--fg:#e8eef6;--muted:#9db0c6;
  --line:#223040;--line-strong:color-mix(in srgb, var(--line) 40%, var(--fg) 60%);--field:#0e1722;--ring:rgba(191,224,251,.42);
  --head:#16202c;--stripe:#0f1a26;--neg:#ff6b6e;--amber:#e0a84a;color-scheme:dark;}
:root[data-theme="dark"] .tbl-bar .ctx .k{color:#7cc0ff}
:root[data-theme="dark"] .seg{background:transparent;border-color:var(--line)}
:root[data-theme="dark"] .seg button{color:var(--fg);background:transparent}
:root[data-theme="dark"] .seg button:hover{background:var(--field)}
:root[data-theme="dark"] .seg button.on,:root[data-theme="dark"] .seg button.on:hover{background:var(--brand);color:#fff}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .tbl-bar .ctx .k{color:#7cc0ff}}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .seg{background:transparent;border-color:var(--line)}}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .seg button{color:var(--fg);background:transparent}}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .seg button:hover{background:var(--field)}}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .seg button.on,:root:not([data-theme="light"]) .seg button.on:hover{background:var(--brand);color:#fff}}
*{box-sizing:border-box}html,body{height:100%}
body{margin:0;font-family:var(--sans);color:var(--fg);overflow-x:hidden}

.scene{min-height:100%;display:grid;place-items:center;padding:32px 16px;
  background:
    radial-gradient(900px 520px at 82% -12%,rgba(47,147,239,.22),transparent 60%),
    radial-gradient(760px 520px at -5% 112%,rgba(47,147,239,.14),transparent 55%),
    linear-gradient(160deg,var(--panel),var(--bg));}

.card{width:100%;max-width:392px;padding:34px 32px 28px;position:relative;
  background:color-mix(in srgb,var(--panel) 74%,transparent);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border:1px solid color-mix(in srgb,var(--brand) 20%,var(--line));
  border-radius:var(--radius);box-shadow:0 30px 70px -40px rgba(20,40,80,.55);}

.lang{position:relative;display:flex;justify-content:flex-end;margin:0}
.lang-btn{display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:14px;color:var(--fg);
  background:transparent;border:1px solid var(--line);border-radius:6px;padding:4px 10px;cursor:pointer}
.lang-btn:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.lang-btn .car{width:12px;height:12px;color:var(--muted)}
.lang-list{position:absolute;right:0;top:calc(100% + 6px);min-width:170px;margin:0;padding:6px;list-style:none;
  background:var(--panel);border:1px solid var(--line);border-radius:11px;box-shadow:0 20px 44px -22px rgba(0,0,0,.5);z-index:5}
.lang-list[hidden]{display:none}.lang-list li{margin:0}
.lang-list button{width:100%;text-align:left;font:inherit;font-size:13px;color:var(--fg);background:none;border:0;border-radius:7px;padding:8px 10px;cursor:pointer}
.lang-list button:hover{background:var(--field)}
.lang-list button[aria-current="true"]{color:var(--muted)}

.brand-gap{position:relative;display:flex;align-items:center;justify-content:center;padding:24px 0}
.brand{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:10px;margin:0}
.brand .logo-img{width:auto;height:32px;object-fit:contain}
.brand b{font-size:20px;font-weight:700;letter-spacing:1px;color:var(--fg)}
@media (max-width:399px){.brand .logo-img{height:28px}}

.field-wrap{position:relative;margin-bottom:16px}
.field-wrap .ic{position:absolute;left:13px;top:50%;transform:translateY(-50%);width:17px;height:17px;color:var(--muted);pointer-events:none}
.field{width:100%;padding:12px 13px 12px 40px;border-radius:10px;border:1px solid var(--line);background:var(--field);color:var(--fg);font:inherit}
.field-pass{padding-right:48px}
.eye{position:absolute;right:2px;top:50%;transform:translateY(-50%);width:40px;height:40px;margin:0;padding:0;border:0;border-radius:8px;background:transparent;color:var(--muted);display:grid;place-items:center;cursor:pointer}
.eye:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.eye svg{width:20px;height:20px;display:block}
.eye .eye-on{display:none}
.eye[aria-pressed="true"] .eye-off{display:none}
.eye[aria-pressed="true"] .eye-on{display:block}
.field:focus{outline:2px solid var(--ring);outline-offset:1px;border-color:var(--brand)}
/* 登录框占位字:调小 + 调浅 */
.field::placeholder{color:color-mix(in srgb,var(--muted) 62%,transparent);font-size:12px;font-weight:400}
.field::-webkit-input-placeholder{color:color-mix(in srgb,var(--muted) 62%,transparent);font-size:12px}
.row{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px;font-size:13px;color:var(--muted)}
.row label{display:flex;align-items:center;gap:7px;cursor:pointer}
.btn{width:100%;padding:12px;border:0;border-radius:10px;color:#fff;font:inherit;font-weight:600;letter-spacing:2px;cursor:pointer;background:linear-gradient(150deg,var(--brand),var(--brand-600))}
.btn:hover{filter:brightness(1.05)}.btn:disabled{opacity:.6;cursor:default}
.btn:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.foot{margin-top:20px;font-size:11px;color:var(--muted);text-align:center}
.alert{display:block;box-sizing:border-box;width:100%;margin:0;padding:0 10px;border-radius:8px;background:color-mix(in srgb,var(--neg) 14%,var(--panel));color:var(--neg);font-size:13px;line-height:1.45;max-height:0;opacity:0;overflow:hidden;transition:max-height .15s ease,opacity .15s ease,padding .15s ease,margin .15s ease}
.alert.show{max-height:9em;opacity:1;padding:8px 10px;margin:0 0 12px}
.field.invalid{border-color:var(--neg)}
.inapp{display:flex;gap:8px;align-items:flex-start;justify-content:space-between;margin:0 0 12px;padding:8px 10px;border-radius:8px;background:var(--field);color:var(--muted);font-size:12px;line-height:1.45}
.inapp[hidden]{display:none}
.inapp button{flex:0 0 auto;margin:0;padding:0;border:0;background:transparent;color:var(--brand);font:inherit;font-size:12px;white-space:nowrap;cursor:pointer}
.login-body{position:relative}
.dlg{position:absolute;left:0;right:0;top:0;bottom:0;z-index:8;display:flex;align-items:center;justify-content:center;padding:8px 0 4px;border-radius:12px;background:var(--panel)}
.dlg[hidden]{display:none}
.dlg[data-tone="wait"]{--tone:var(--brand)}
.dlg[data-tone="ok"]{--tone:#1f9d55}
.dlg[data-tone="no"]{--tone:var(--neg)}
.dlg[data-tone="mute"]{--tone:var(--muted)}
.dlg-box{width:min(360px,100%);text-align:center;color:var(--fg)}
.dlg-ring{--p:100%;width:72px;height:72px;margin:0 auto 12px;border-radius:50%;background:conic-gradient(var(--tone) var(--p),color-mix(in srgb,var(--tone) 18%,var(--line)) 0);display:grid;place-items:center}
.dlg-ring[hidden]{display:none}
.dlg-ring span{width:56px;height:56px;border-radius:50%;background:var(--panel);display:grid;place-items:center;font-size:14px;font-weight:700;color:var(--tone)}
.dlg-title{margin:0;font-size:15px;line-height:1.45;font-weight:600;color:var(--tone)}
.dlg-hint{margin:8px 0 0;font-size:13px;line-height:1.45;color:var(--fg);word-break:keep-all;line-break:strict;overflow-wrap:break-word}
.dlg-hint[hidden]{display:none}
.dlg-btn{margin-top:16px;padding:10px 16px;border:1px solid var(--brand);border-radius:10px;background:transparent;color:var(--brand);font:inherit;font-weight:600;cursor:pointer}
.dlg-btn[hidden]{display:none}
.dlg-btn:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
@media (max-width:479px){
  .dlg-box{width:100%;display:flex;flex-direction:column;justify-content:center}
  .dlg-btn{width:100%}
}

.theme{position:fixed;bottom:14px;right:14px;font:inherit;font-size:12px;color:var(--muted);background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:6px 12px;cursor:pointer}

/* ===== 查询页 ===== */
.q-top{display:flex;align-items:center;gap:12px;padding:8px 20px;background:var(--panel);border-bottom:1px solid var(--line);
  position:sticky;top:env(safe-area-inset-top,0);z-index:40;flex-wrap:wrap}
.q-brand{display:inline-flex;align-items:center;gap:8px;min-width:0;flex:none}
.q-brand img{height:24px;width:auto;display:block}
.q-brand .sys-name{font-size:14px;font-weight:700;letter-spacing:1px;white-space:nowrap}
@media (max-width:699px){.q-brand .sys-name{display:none}}
.q-top .wordmark{letter-spacing:1.5px;font-size:15px}
.q-top .spacer{margin-left:auto}
.q-top .who{font-size:13px;font-weight:600;color:var(--fg);max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.user-menu{position:relative;flex:none}
.user-menu .who{display:inline-flex;align-items:center;gap:4px;border:0;background:transparent;padding:0;cursor:pointer}
.user-menu .who:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.who-caret{flex:none}
.user-pop{position:absolute;right:0;top:calc(100% + 6px);z-index:60;min-width:180px;max-width:min(240px,calc(100vw - 16px));padding:6px;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 18px 40px -24px rgba(0,0,0,.45)}
.user-pop[hidden]{display:none}
.user-pop a,.user-pop button{display:block;width:100%;box-sizing:border-box;text-align:left;font:inherit;font-size:13px;color:var(--fg);background:transparent;border:0;border-radius:7px;padding:8px 10px;text-decoration:none;cursor:pointer}
.user-pop a:hover,.user-pop button:hover,.user-pop a:focus-visible,.user-pop button:focus-visible{background:var(--field);outline:none}
.user-pop a.is-off{color:var(--muted);cursor:default}
.user-sep{height:1px;margin:4px 6px;background:var(--line)}
.toast{position:fixed;top:16px;right:16px;z-index:80;max-width:min(320px,calc(100vw - 32px));padding:10px 14px;border-radius:10px;background:var(--panel);color:var(--fg);border:1px solid var(--line);box-shadow:0 16px 40px -24px rgba(0,0,0,.5);font-size:13px;opacity:0;transition:opacity .3s ease}
.toast.show{opacity:1}
.toast[hidden]{display:none}
.pill{font:inherit;font-size:12.5px;color:var(--fg);background:var(--field);border:1px solid var(--line);border-radius:8px;padding:6px 10px;cursor:pointer}
.pill:focus-visible{outline:2px solid var(--ring);outline-offset:2px}

/* 集团/品牌 树选择器 */
.tree{position:relative}
.tree-btn{display:inline-flex;align-items:center;gap:8px;box-sizing:border-box;width:240px;height:32px;font:inherit;font-size:13px;font-weight:600;color:var(--fg);
  background:var(--field);border:1px solid var(--line);border-radius:8px;padding:0 10px;cursor:pointer}
.tree-btn:hover{border-color:color-mix(in srgb,var(--fg) 28%,var(--line))}
.tree-btn[aria-expanded="true"]{border-color:var(--brand)}
.tree-btn.empty{color:var(--muted)}
.tree-btn #treeLabel{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left}
.tree-caret{flex:0 0 auto;line-height:1}
@media (max-width:699px){
  .q-top{flex-wrap:nowrap;gap:8px;padding:8px 12px}
  .q-top .tree{flex:1 1 140px;min-width:140px}
  .tree-btn{width:100%;min-width:0}
  .q-top .who{max-width:88px;flex:none}
  .q-top .pill{flex:none;padding:6px 8px}
}
.tree-panel{position:absolute;left:0;top:calc(100% + 8px);width:340px;max-width:92vw;background:var(--panel);
  border:1px solid var(--line);border-radius:12px;box-shadow:0 26px 60px -28px rgba(0,0,0,.55);z-index:50;overflow:hidden}
.tree-panel[hidden]{display:none}
.tree-body{max-height:50vh;overflow:auto;padding:8px}
.tnode{margin-bottom:4px}
.tgroup,.tbrand{display:flex;align-items:center;gap:6px;width:100%;text-align:left;font:inherit;background:none;border:0;border-radius:7px;cursor:pointer;color:var(--fg)}
.ticon{flex:0 0 auto;width:16px;height:16px;display:block;pointer-events:none}
.ticon.building{color:#e2584a}
.ticon.doc{color:var(--brand)}
.ticon.page{width:14px;height:14px;color:color-mix(in srgb,var(--brand) 72%,var(--muted))}
.tlabel{min-width:0}
.tgroup{font-weight:700;font-size:13px;padding:8px 10px;color:var(--brand-700)}
.tbrand{font-size:12.5px;padding:6px 10px 6px 8px;color:var(--fg)}
.tmain{font-weight:600}
.tgroup:hover,.tbrand:hover{background:var(--field)}
.tgroup.sel,.tbrand.sel{background:color-mix(in srgb,var(--brand) 16%,transparent);color:var(--brand-700)}
.tempty{padding:16px;text-align:center;color:var(--muted);font-size:12.5px}
.tree-search{display:flex;gap:6px;padding:8px;border-top:1px solid var(--line);background:var(--panel)}
.tree-search input{flex:1;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--field);color:var(--fg);font:inherit;font-size:12.5px}
.tree-search input:focus{outline:2px solid var(--ring);outline-offset:1px;border-color:var(--brand)}
.cols-btn{font-size:12.5px;font-weight:600;padding:8px 12px}
.tgroup-row{display:flex;align-items:center;gap:0}
.tgroup-toggle{flex:0 0 22px;height:28px;display:grid;place-items:center;font:inherit;font-size:12px;color:var(--muted);background:none;border:0;cursor:pointer;border-radius:6px;padding:0}
.tgroup-toggle:hover{background:var(--field);color:var(--brand)}
.tgroup-row .tgroup,.tgroup-row .tbrand{flex:1;min-width:0}
.tgroup-brands{padding-left:16px}
.tmain-brands{padding-left:22px}
.tfold{display:block;width:100%;text-align:center;font:inherit;font-size:12px;color:var(--muted);background:none;border:0;border-radius:7px;padding:2px 8px 6px;cursor:pointer}
.tfold:hover{background:var(--field);color:var(--brand)}

/* 集团 / 主品牌 / 品牌 三级下拉(依次排开) */
.scope-sel{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.scope-dd{font:inherit;font-size:13px;font-weight:600;color:var(--fg);background:var(--field);
  border:1px solid var(--line);border-radius:9px;padding:8px 12px;cursor:pointer;max-width:200px}
.scope-dd:focus{outline:2px solid var(--ring);outline-offset:1px;border-color:var(--brand)}
.scope-dd:disabled{opacity:.55;cursor:not-allowed}
#selGroup{color:#fff;background:linear-gradient(150deg,var(--brand),var(--brand-700));border:0;font-weight:700}
#selGroup option{color:var(--fg);background:var(--panel)}

.q-wrap{max-width:none;width:100%;min-width:0;margin:0;padding:4px 20px 8px;overflow-x:hidden}

/* 整页定高:表格区内部滚动(横向/纵向),分页与合计固定可见(参考图6) */
body.q-page{height:100dvh;max-height:100dvh;display:flex;flex-direction:column;overflow:hidden}
body.q-page .q-top{flex:0 0 auto}
body.q-page .q-wrap{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}
body.q-page .filters,body.q-page .bar,body.q-page .banner,body.q-page .tbl-bar{flex:0 0 auto}
body.q-page .tablewrap{flex:1 1 auto;min-height:320px}
body.q-page .footwrap{flex:0 0 auto}
body.q-page .pager{flex:0 0 auto}

/* 筛选栏 3:4:3。查询/重置与无业绩开关贴底，与月份最后一排齐平 */
.filters{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:8px 12px;
  display:grid;grid-template-columns:3fr 4fr 3fr;gap:0;align-items:stretch;min-width:0;max-width:100%;
  max-height:640px;overflow:hidden;transition:max-height .15s ease,opacity .15s ease,padding .15s ease,margin .15s ease}
.filters.is-shut{max-height:0;opacity:0;padding-top:0;padding-bottom:0;margin:0;border-width:0;pointer-events:none}
.col{display:flex;flex-direction:column;gap:6px;padding:0 14px;min-width:0}
.col:first-child{padding-left:0}
.col:last-child{padding-right:0}
.col+.col{border-left:1px solid var(--line)}
.lbl{font-size:11px;color:var(--muted);height:16px;line-height:16px}
.time-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;min-width:0;height:auto;min-height:16px}
.biz-now{margin:0;display:inline-flex;align-items:baseline;justify-content:flex-start;gap:6px;flex:0 0 auto;max-width:100%;font-size:12px;line-height:16px;color:var(--muted);white-space:nowrap}
.biz-now .biz-label{color:var(--muted);font-size:12px;font-weight:400}
.biz-now .biz-value{color:var(--fg);font-size:12px;font-weight:600;font-variant-numeric:tabular-nums}
.filter-shut{flex:none;margin:0 0 0 auto;padding:0;border:0;background:transparent;color:var(--brand);font:inherit;font-size:13px;cursor:pointer;white-space:nowrap}
.filter-sum{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:nowrap;min-height:36px;margin:0;padding:6px 12px;background:var(--panel);border:1px solid var(--line);border-radius:12px;font-size:13px;color:var(--fg);min-width:0;max-width:100%}
.filter-sum[hidden]{display:none}
.quick-main{display:flex;align-items:center;gap:8px;min-width:0;flex:0 1 auto}
.quick-row{display:flex;align-items:center;gap:8px;min-width:0;flex:0 1 auto}
.quick-mode{flex:none;font-weight:600;white-space:nowrap}
.quick-row input{flex:0 0 auto;width:clamp(240px, 24vw, 360px);min-width:0;height:30px;padding:0 8px;border:1px solid var(--line);border-radius:8px;background:var(--field);color:var(--fg);font:inherit;font-size:13px;overflow-x:auto}
.quick-row .btn{width:auto;height:30px;padding:0 12px;letter-spacing:0;border-radius:8px;flex:none}
.quick-meta{display:flex;align-items:center;gap:8px;flex:none;min-width:0}
.quick-meta > :not([hidden]) + :not([hidden])::before{content:"·";margin-right:8px;color:var(--muted);font-weight:400}
.quick-extra{display:inline-flex;align-items:center;padding:2px 8px;border:0;border-radius:999px;background:#fff1e0;color:#c45c00;font:inherit;font-size:12px;font-weight:600;white-space:nowrap;cursor:pointer}
.quick-extra[hidden]{display:none}
:root[data-theme="dark"] .quick-extra{background:#3d2a12;color:#ffc14d}
.filter-clock{display:inline-flex;align-items:baseline;gap:6px;flex:none;white-space:nowrap;color:var(--muted);font-size:12px}
.filter-clock .biz-label{font-weight:400}
.filter-clock .biz-value{color:var(--fg);font-weight:600;font-variant-numeric:tabular-nums}
.filter-sum #filterExpand{flex:none;margin:0;padding:4px 0;border:0;background:transparent;color:var(--brand);font:inherit;font-size:13px;cursor:pointer;white-space:nowrap}
.seg{align-self:stretch;display:grid;grid-template-columns:repeat(2,1fr);height:30px;background:transparent;border:1px solid var(--line);border-radius:8px;padding:2px}
.seg button{position:relative;font:inherit;font-size:13px;border:0;background:transparent;color:var(--fg);padding:0 8px;border-radius:6px;cursor:pointer;height:100%}
.seg button:hover{background:var(--field)}
.seg button.on,.seg button.on:hover{background:var(--brand);color:#fff;font-weight:600}
.seg button.has::after{content:"";position:absolute;top:3px;right:4px;width:6px;height:6px;border-radius:50%;background:var(--brand)}
.seg button.on::after{content:none}
.act{display:flex;gap:8px;margin-top:auto}
.act .btn.main{flex:1}
.nums{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px 8px}
.nums .f label{height:16px;line-height:16px;margin:0}
.nums input[type=number]{height:34px;padding:0 10px}
.zeros{display:flex;align-items:center;gap:6px;margin-top:auto;height:32px;font-size:13px;min-width:0}
.zeros.is-off{color:var(--muted)}
.zeros .hint{flex:1;min-width:0;font-size:11.5px;color:#8a6d3b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.f label{display:block;font-size:11px;color:var(--muted);margin:0 0 3px}
.f input,.f select,.f textarea{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--field);color:var(--fg);font:inherit;font-weight:400}
.f textarea,.col > textarea{width:100%;resize:vertical;min-height:44px;max-height:120px;line-height:1.4;padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:var(--field);color:var(--fg);font:inherit;font-size:13px}
.f input:focus,.f select:focus,.f textarea:focus,.col > textarea:focus{outline:2px solid var(--ring);outline-offset:1px;border-color:var(--brand)}
.f input::placeholder,.f textarea::placeholder,.col > textarea::placeholder{color:color-mix(in srgb,var(--muted) 62%,transparent);font-size:12px}

/* 时间选择器 */
.time-label{font-size:11px;color:var(--muted);margin:0 0 7px}
.time-presets{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.time-range{display:flex;align-items:center;gap:6px}
.date-inp{flex:1;min-width:0;padding:7px 9px;border:1px solid var(--line);border-radius:8px;background:var(--field);color:var(--fg);font:inherit;font-size:12.5px}
.date-inp:focus{outline:2px solid var(--ring);outline-offset:1px;border-color:var(--brand)}
.date-sep{color:var(--muted);flex:0 0 auto}
.time-row{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.time-years{display:contents}
.time-months{display:grid;grid-template-columns:repeat(auto-fill,minmax(4.6em,1fr));gap:6px}
.time-row .chip-btn{width:auto;flex:0 0 auto;min-width:4.6em;white-space:nowrap}
.time-months .chip-btn{width:100%;min-width:4.6em;white-space:nowrap}
.profit-filter{display:flex;align-items:center;gap:8px;margin-top:10px}
.profit-filter label{font-size:12px;color:var(--muted);white-space:nowrap}
.profit-filter input{flex:1;min-width:0;padding:7px 9px;border:1px solid var(--line);border-radius:8px;background:var(--field);color:var(--fg);font:inherit;font-size:12.5px}
.profit-filter input:focus{outline:2px solid var(--ring);outline-offset:1px;border-color:var(--brand)}
.chip-btn{font:inherit;font-size:12px;font-weight:400;color:var(--fg);background:var(--field);border:1px solid var(--line);
  border-radius:7px;height:28px;padding:0 8px;cursor:pointer;text-align:center;white-space:nowrap}
.chip-btn:hover{border-color:var(--brand)}
.chip-btn.on{background:var(--brand);color:#fff;border-color:var(--brand)}
.chip-btn:disabled{opacity:.45;cursor:default}
.chip-btn:disabled:hover{border-color:var(--line)}

.q-wrap .btn{width:auto;height:32px;padding:0 16px;border:0;border-radius:8px;color:#fff;font:inherit;font-weight:400;letter-spacing:normal;cursor:pointer;background:var(--brand);white-space:nowrap}
.q-wrap .btn:hover{background:var(--brand-600);filter:none}.q-wrap .btn:disabled{opacity:.6;cursor:default}
.q-wrap .btn.is-dirty{background:var(--brand-600);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 45%,transparent)}
.q-wrap .btn.ghost{background:var(--field);color:var(--fg);border:1px solid var(--line)}

.bar{display:flex;align-items:center;gap:10px;margin:14px 0 8px;flex-wrap:wrap}
.bar .count{color:var(--muted);font-size:13px}.bar .right{margin-left:0;display:flex;gap:8px;align-items:center}
.banner{margin:10px 0;padding:10px 12px;border-radius:8px;background:color-mix(in srgb,var(--neg) 12%,transparent);color:var(--neg);font-size:13px;overflow-wrap:anywhere}
.banner[hidden]{display:none}
.tbl-bar{display:flex;align-items:center;flex-wrap:wrap;gap:12px;min-height:44px;margin-top:6px;padding:7px 12px;min-width:0;max-width:100%;background:var(--panel);border:1px solid var(--line);border-bottom:0;border-radius:12px 12px 0 0}
.tbl-bar .ctx{display:flex;align-items:center;gap:4px;flex:1;min-width:0;color:var(--muted);font-size:13px}
.tbl-bar .ctx .ctx-text{display:block;min-width:0;overflow:hidden;white-space:nowrap}
.tbl-bar .ctx .ctx-main{display:inline-block;max-width:100%;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tbl-bar .ctx .ctx-text.has-currency .ctx-main{max-width:calc(100% - 4.8em)}
.tbl-bar .ctx .ctx-gap{font-size:0;line-height:0}
.tbl-bar .ctx .ctx-currency{display:inline-block;margin-left:4px;vertical-align:bottom;white-space:nowrap}
.ctx-glass{width:14px;height:14px;flex:none;color:var(--brand)}
.tbl-bar .ctx.is-idle,.tbl-bar .ctx.is-idle .k,.tbl-bar .ctx.is-idle .ctx-glass{color:var(--muted)}
.tbl-bar .ctx .k{color:var(--brand-700);font-weight:600;margin-right:6px}
.tbl-bar .ctx b{color:var(--fg);font-weight:600}
.tbl-bar .ctx .ctx-back{margin-left:8px;font:inherit;font-size:12px;color:var(--brand-700);background:none;border:0;cursor:pointer;padding:0}
.top-hint{margin:0;padding:8px 12px;background:var(--panel);border:1px solid var(--line);border-top:0;font-size:13px;color:var(--fg)}
.top-hint[hidden]{display:none}
.top-hint .top-drill{font:inherit;font-size:13px;color:var(--brand-700);background:none;border:0;cursor:pointer;padding:0}
.top-hint .top-etc{color:var(--muted)}
.cell-pending{color:var(--muted)}
.tbl-bar .dirty{color:var(--amber)}
.tbl-bar .bar-r{flex:none;flex-shrink:0;flex-wrap:nowrap;display:flex;align-items:center;gap:8px;margin-left:auto}
#barGroups{display:flex;align-items:center;gap:10px;flex:none;flex-wrap:wrap}
#barGroups label{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:var(--fg);white-space:nowrap;cursor:pointer}
.tbl-bar .vsep{width:1px;height:18px;background:var(--line);flex:none}
.tbl-bar .pill{height:30px;padding:0 12px;display:inline-flex;align-items:center;white-space:nowrap;flex-shrink:0}
.tbl-bar .pill:disabled{opacity:.45;cursor:default}
.cols-menu{position:fixed;left:0;top:0;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:8px;min-width:220px;max-width:calc(100vw - 16px);max-height:calc(100vh - var(--cols-top, 0px) - 16px);overflow-x:hidden;overflow-y:auto;box-shadow:0 20px 44px -22px rgba(0,0,0,.5);z-index:80}
.cols-menu .sec{padding:6px 8px 2px;font-size:11px;color:var(--muted);font-weight:600;display:flex;align-items:center;gap:6px}
.cols-menu .menu-all{font-weight:600}
.cols-menu label.is-disabled{color:var(--muted);cursor:default}
.cols-menu[hidden]{display:none}
.cols-grid{display:grid;grid-template-columns:minmax(0,1fr);column-gap:12px;min-width:0}
.cols-menu label{display:flex;align-items:center;gap:8px;padding:5px 6px;border-radius:6px;cursor:pointer;font-size:12.5px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cols-menu label .menu-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cols-menu label:hover{background:var(--field)}

/* 表格:统一网格线 + 斑马纹双色 + 标题缩小 + 非标题变细 */
.tablewrap{position:relative;border:1px solid var(--line);border-radius:0;overflow:auto;background:var(--panel);margin-top:0;min-width:0;max-width:100%}
.stale-mask{position:absolute;inset:0;z-index:6;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--panel) 62%,transparent)}
.stale-mask[hidden]{display:none}
.stale-mask p{margin:0;max-width:80%;padding:10px 14px;border-radius:8px;background:color-mix(in srgb,var(--panel) 92%,transparent);color:var(--fg);font-size:14px;font-weight:600;text-align:center}
.footwrap{border:1px solid var(--line);border-top:0;border-bottom:0;border-radius:0;overflow-x:auto;overflow-y:hidden;background:var(--panel);scrollbar-width:none;-ms-overflow-style:none;min-width:0;max-width:100%}
.footwrap::-webkit-scrollbar{height:0;display:none}
.footwrap table{border-collapse:separate;border-spacing:0;width:100%;font-variant-numeric:tabular-nums}
.tablewrap table, .footwrap table{table-layout:fixed}
table{border-collapse:separate;border-spacing:0;width:100%;font-variant-numeric:tabular-nums}
th,td{padding:6px 14px;text-align:center;vertical-align:middle;white-space:normal;overflow-wrap:anywhere;word-break:break-word;border-bottom:1px solid var(--line);border-right:1px solid var(--line);line-height:1.25}
td{font-size:13px;font-weight:400}
tbody td{height:40px}
thead th{position:sticky;top:0;height:36px;background:var(--head);color:var(--fg);font-size:13px;font-weight:700;z-index:1;word-break:normal;overflow-wrap:break-word;padding-top:0;padding-bottom:0;padding-left:8px;padding-right:8px}
.sticky-col{position:sticky}
thead th.sticky-col{z-index:4;background:var(--head)}
tbody td.sticky-col{z-index:2}
tfoot td.sticky-col{z-index:3;background:var(--head)}
tbody tr:nth-child(odd) td.sticky-col{background:var(--panel)}
tbody tr:nth-child(even) td.sticky-col{background:var(--stripe)}
tbody tr:hover td.sticky-col{background:color-mix(in srgb,var(--brand) 9%,var(--panel))}
tbody tr:nth-child(even):hover td.sticky-col{background:color-mix(in srgb,var(--brand) 9%,var(--stripe))}
.sticky-edge{box-shadow:1px 0 0 var(--line)}
.tablewrap.is-scrolled .sticky-edge{box-shadow:4px 0 6px -4px rgba(18,26,36,.18)}
:root[data-theme="dark"] .tablewrap.is-scrolled .sticky-edge{box-shadow:4px 0 6px -4px rgba(0,0,0,.55)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .tablewrap.is-scrolled .sticky-edge{box-shadow:4px 0 6px -4px rgba(0,0,0,.55)}}
th.group-th{padding:4px 8px;white-space:nowrap}
th.group-th .cols-btn{max-width:none;padding:6px 8px;font-size:12.5px;white-space:nowrap}
th.group-th .cols-btn span{overflow:visible;text-overflow:clip}
.sort-btn{position:relative;display:flex;align-items:center;justify-content:center;gap:4px;width:100%;max-width:100%;height:100%;flex-wrap:nowrap;font:inherit;font-weight:700;color:inherit;background:none;border:0;padding:0;cursor:pointer}
.sort-label{min-width:0;flex:1 1 auto;text-align:center;white-space:normal}
.head-label{min-width:0;flex:1 1 auto;text-align:center;white-space:normal}
thead th.clamp-2 .sort-label,thead th.clamp-2 .head-label{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.sort-mark{position:absolute;right:6px;top:50%;transform:translateY(-50%);flex:0 0 auto;display:inline-block;font-size:11px;line-height:1;text-align:center;white-space:nowrap;color:var(--muted)}
.sort-mark::before{content:"↕\A↑\A↓";white-space:pre;display:block;height:0;overflow:hidden;visibility:hidden}
.sort-btn.sort-asc .sort-mark,.sort-btn.sort-desc .sort-mark{color:var(--brand)}
tbody tr:nth-child(odd) td{background:var(--panel)}
tbody tr:nth-child(even) td{background:var(--stripe)}
tbody tr:hover td{background:color-mix(in srgb,var(--brand) 9%,transparent)}
td.site-cell{white-space:normal;overflow:hidden;text-align:center;line-height:1.15}
td.site-cell .site-name,td.site-cell .brandid{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;overflow-wrap:normal;word-break:keep-all;line-height:1.15}
td.site-cell .site-name{font-size:13px}
td.site-cell .brandid{color:var(--muted);font-size:10.5px;margin-top:0}
td.account-cell{overflow:hidden;text-align:center}
td.account-cell .account-name{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;overflow-wrap:normal;word-break:keep-all;line-height:1.25}
td.num{text-align:right;white-space:nowrap;overflow-wrap:normal;word-break:normal}
td.subtotal-cell{white-space:nowrap}
.brandid{color:var(--muted);font-size:10.5px;margin-top:0;line-height:1.15}
td .brandid,td div{white-space:normal;overflow-wrap:anywhere;word-break:break-word}
tfoot td{height:44px;background:color-mix(in srgb,var(--head) 96%,#000);color:var(--fg);font-weight:700;border-top:2px solid var(--line);border-right:1px solid var(--line-strong)}
tfoot td.sticky-col{background:color-mix(in srgb,var(--head) 96%,#000);border-right:1px solid var(--line-strong)}
/* 冻结品牌名称和代理 ID。窄屏两列超限时只冻结代理 ID。集团列不冻结。 */

.empty{padding:40px;text-align:center;color:var(--muted)}

/* 图3 分页 */
.pager{display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding:6px 14px;margin-top:0;color:var(--fg);font-size:13px;
  background:var(--head);border:1px solid var(--line);border-radius:0 0 12px 12px}
.pager .pg-count{margin-right:4px}
.pg-nav{display:inline-flex;gap:4px;flex-wrap:wrap}
.pg-btn{min-width:30px;height:30px;padding:0 8px;font:inherit;font-size:12.5px;color:var(--fg);background:var(--field);
  border:1px solid var(--line);border-radius:7px;cursor:pointer}
.pg-btn:hover:not(:disabled):not(.cur){border-color:var(--brand);color:var(--brand)}
.pg-btn.cur{background:var(--brand);color:#fff;border-color:var(--brand);cursor:default}
.pg-btn.gap{border:0;background:none;cursor:default}
.pg-btn:disabled{opacity:.45;cursor:default}
.pg-go{display:inline-flex;align-items:center;gap:6px}
.pg-go input{width:58px;padding:6px 8px;border:1px solid var(--line);border-radius:7px;background:var(--field);color:var(--fg);font:inherit;font-size:12.5px;text-align:center}
.pg-go input:focus{outline:2px solid var(--ring);outline-offset:1px;border-color:var(--brand)}
.pg-size{padding:6px 8px;border:1px solid var(--line);border-radius:7px;background:var(--field);color:var(--fg);font:inherit;font-size:12.5px;cursor:pointer}

@media (min-width:1200px){
  .cols-menu{width:520px}
  .cols-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:699px){
  .filter-sum{flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}
  .quick-main{display:contents}
  .quick-row{flex:1 1 100%;min-width:0}
  .quick-row input{flex:1 1 auto;width:auto;min-width:0;max-width:none}
  .quick-extra{max-width:100%}
  .quick-meta{flex:0 1 auto;max-width:100%;margin-left:auto}
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .quick-extra{background:#3d2a12;color:#ffc14d}}
@media (max-width:1199px) and (min-width:861px){
  .filters{grid-template-columns:minmax(0,1fr) minmax(280px,1.2fr)}
  .filters > .col:nth-child(1){grid-column:1;grid-row:1}
  .filters > .col:nth-child(2){grid-column:1 / -1;grid-row:2;border-left:0;border-top:1px solid var(--line);padding:6px 0 0;margin-top:6px;flex-direction:row;flex-wrap:wrap;align-items:flex-end;gap:6px 12px}
  .filters > .col:nth-child(2) .nums{flex:1 1 280px}
  .filters > .col:nth-child(2) .zeros{margin-top:0;height:32px}
  .filters > .col:nth-child(3){grid-column:2;grid-row:1}
}
@media (min-width:1093px){
  #barGroups{flex-wrap:nowrap}
}
@media (max-width:860px){
  .filters{grid-template-columns:1fr}
  .col{padding:10px 0}
  .col+.col{border-left:0;border-top:1px solid var(--line)}
  .tbl-bar{flex-wrap:wrap;height:auto}
  .tbl-bar .bar-r{flex-basis:100%;margin-left:0;justify-content:flex-start}
  /* 窄屏回退整页滚动,表格给个最大高度,避免被筛选区挤扁 */
  body.q-page{height:auto;max-height:none;overflow-x:hidden;overflow-y:visible}
  body.q-page .tablewrap{flex:none;min-height:320px;max-height:70vh}
}
@media (max-width:699px){
  .tbl-bar{flex-direction:column;align-items:stretch;gap:6px;padding:7px 8px}
  .tbl-bar .ctx{flex:none;width:100%;max-width:100%}
  .tbl-bar .bar-r{flex-basis:auto;flex-shrink:1;width:100%;max-width:100%;min-width:0;margin-left:0;flex-wrap:wrap;justify-content:flex-end}
  #barGroups{flex:1 1 100%;gap:8px;flex-wrap:wrap;min-width:0;max-width:100%}
  #barGroups label input{margin:0}
}

.chip-btn.month.no-data {
  border-style: dashed;
  opacity: 0.6;
  position: relative;
}
.chip-btn.month.no-data::after {
  content: "!";
  position: absolute;
  top: -4px;
  right: -4px;
  background: #e74c3c;
  color: #fff;
  font-size: 10px;
  width: 14px;
  height: 14px;
  line-height: 14px;
  border-radius: 50%;
  text-align: center;
}

.modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.45);
  display: grid;
  place-items: center;
  z-index: 200;
}
.modal-overlay[hidden] { display: none; }
.modal-box {
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 28px 32px 22px;
  max-width: 380px;
  width: 90%;
  text-align: center;
  box-shadow: 0 24px 60px -20px rgba(0,0,0,0.55);
}
.modal-msg {
  font-size: 14px;
  color: var(--fg);
  margin: 0 0 20px;
  line-height: 1.6;
}
.modal-ok {
  width: auto;
  min-width: 100px;
  padding: 10px 24px;
}
