/* NEWXT 前端样式 —— 零构建。品牌亮蓝 + 磨砂玻璃 + 浅/深双主题 */
:root{
  --brand:#2f93ef;--brand-600:#1f7ad6;--brand-700:#1667bd;--brand-200:#bfe0fb;
  --bg:#eef3f9;--panel:#fff;--fg:#121a24;--muted:#5a6778;
  --line:#dde5f0;--field:#f2f6fc;--ring:rgba(47,147,239,.38);
  --head:#eef3f9;--stripe:#f6f9fd;--neg:#e5484d;--amber:#b7791f;
  --radius:16px;--sans:"Noto Sans",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;--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;--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)}

.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:absolute;top:18px;right:18px}
.lang-btn{display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:12.5px;color:var(--fg);
  background:var(--field);border:1px solid var(--line);border-radius:9px;padding:6px 10px;cursor:pointer}
.lang-btn:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.lang-btn .car{color:var(--muted);font-size:10px}
.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)}

/* LOGO 居中,可自适应更换:换成 <img class="logo-img" src> 即可 */
.brand{display:flex;flex-direction:column;align-items:center;gap:10px;margin:6px 0 30px}
.brand .logo{width:56px;height:56px;border-radius:15px;background:linear-gradient(150deg,var(--brand),var(--brand-700));color:#fff;display:grid;place-items:center;font-weight:800;font-size:26px}
.brand .logo-img{width:56px;height:56px;object-fit:contain;border-radius:15px}
.brand b{font-size:18px;letter-spacing:2px}

.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: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}
.err{min-height:18px;margin:0 0 12px;font-size:12.5px;color:var(--neg);text-align:center}

.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:10px 16px;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-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}
.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;font:inherit;font-size:13px;font-weight:600;color:#fff;
  background:linear-gradient(150deg,var(--brand),var(--brand-700));border:0;border-radius:9px;padding:8px 14px;cursor:pointer;max-width:360px}
.tree-btn span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.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:1360px;width:100%;min-width:0;margin:0 auto;padding:10px 16px 16px}

/* 整页定高:表格区内部滚动(横向/纵向),分页与合计固定可见(参考图6) */
body.q-page{height:100vh;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:0}
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:10px 14px;
  display:grid;grid-template-columns:3fr 4fr 3fr;gap:0;align-items:stretch;min-width:0;max-width:100%}
.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}
.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:56px;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:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin-bottom:0}
.time-years{display:contents}
.time-months{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}
.time-row .chip-btn,.time-months .chip-btn{width:100%;min-width:0}
.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}
.banner[hidden]{display:none}
.tbl-bar{display:flex;align-items:center;gap:12px;min-height:40px;margin-top:10px;padding:0 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{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--muted);font-size:13px}
.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 .dirty{color:var(--amber)}
.tbl-bar .bar-r{flex:none;display:flex;align-items:center;gap:8px;margin-left:auto}
.tbl-bar .vsep{width:1px;height:18px;background:var(--line);flex:none}
.tbl-bar .pill{height:28px;padding:0 12px;display:inline-flex;align-items:center}
.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-height:320px;overflow:auto;box-shadow:0 20px 44px -22px rgba(0,0,0,.5);z-index:80}
.cols-menu[hidden]{display:none}
.cols-menu label{display:flex;align-items:center;gap:8px;padding:5px 6px;border-radius:6px;cursor:pointer;font-size:12.5px}
.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:10px 14px;text-align:center;white-space:normal;overflow-wrap:anywhere;word-break:break-word;border-bottom:1px solid var(--line);border-right:1px solid var(--line)}
td{font-size:13px;font-weight:400}
thead th{position:sticky;top:0;background:var(--head);color:var(--fg);font-size:13px;font-weight:700;z-index:1;word-break:normal;overflow-wrap:break-word;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)}
th.group-th{padding:6px 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{display:flex;align-items:center;justify-content:flex-start;gap:4px;width:100%;max-width: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}
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{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.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:1px}
td .brandid,td div{white-space:normal;overflow-wrap:anywhere;word-break:break-word}
tfoot td{background:var(--head);color:var(--fg);font-weight:600;border-top:1px solid var(--line)}
/* 从左起连续冻结集团、品牌名称、代理 ID、代理账号;上级代理起随横向滚动 */

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

/* 图3 分页 */
.pager{display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding:8px 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 (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;overflow:visible}
  body.q-page .tablewrap{max-height:70vh}
}

.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;
}
