/* 由 tools/build_dx_css.py 從門市文件系統的 styles.css 產生，不要手改 */
.dx{font:15px/1.6 -apple-system,BlinkMacSystemFont,"PingFang TC","Helvetica Neue",sans-serif;color:var(--ink)}
.dx *{box-sizing:border-box}
.dx a{color:var(--accent)}
.dx{--bg:#f7f6f3; --card:#fff; --line:#e4e1db; --ink:#1b1815; --dim:#6f6960;
  --accent:#1f6b4a; --accent-bg:#e7f1ea; --bad:#b23b3b; --warn:#9a6b1f;
  --tabh:56px;}
.dx input, .dx button, .dx select, .dx textarea{font:inherit;color:inherit}
.dx .dcard{background:var(--card);border:1px solid var(--line);border-radius:12px;
  padding:13px;margin-bottom:10px}
.dx .muted{color:var(--dim)}
.dx .small{font-size:13px}
.dx .drow{display:flex;gap:9px;align-items:center;flex-wrap:wrap}
.dx input[type=search], .dx input[type=text], .dx input[type=email], .dx input[type=password], .dx select{width:100%;padding:11px 13px;border:1px solid var(--line);border-radius:10px;
  background:var(--card);font-size:16px}
.dx input:focus, .dx select:focus{outline:2px solid var(--accent);outline-offset:-1px}
.dx button.pri{background:var(--accent);color:#fff;border:0;border-radius:10px;
  padding:11px 18px;font-weight:600;cursor:pointer}
.dx button.pri:disabled{opacity:.5}
.dx .dchip{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;
  background:var(--accent-bg);color:var(--accent);white-space:nowrap}
.dx .dchip.gray{background:transparent;color:var(--dim);border:1px solid var(--line)}
.dx mark{background:var(--accent-bg);color:var(--accent);padding:0 2px;border-radius:3px}
.dx .hit{font-size:13px;color:var(--dim);margin-top:5px;line-height:1.55;
  overflow-wrap:anywhere}
.dx .center{display:flex;align-items:center;justify-content:center;height:100%;padding:24px}
.dx .err{color:var(--bad);font-size:13px;margin-top:8px}
.dx .kv{display:flex;gap:16px;flex-wrap:wrap}
.dx .kv b{display:block;font-size:19px;font-variant-numeric:tabular-nums}
.dx .kv span{font-size:11px;color:var(--dim)}
.dx .spin{width:18px;height:18px;border:2px solid var(--line);border-top-color:var(--accent);
  border-radius:50%;animation:s .7s linear infinite;display:inline-block}
@keyframes s{to{transform:rotate(360deg)}}
.dx .rows{display:flex;flex-direction:column;gap:8px}
.dx .rows .r{background:var(--card);border:1px solid var(--line);border-radius:11px;padding:11px 12px}
.dx .rows .r .l1{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.dx .rows .r .l1 b{font-size:15px}
.dx .rows .r .l2{margin-top:4px;font-size:13px;color:var(--dim);
  display:flex;gap:12px;flex-wrap:wrap}
.dx .rows .r .dn{font-variant-numeric:tabular-nums}
.dx table{border-collapse:collapse;width:100%;font-size:13.5px}
.dx th, .dx td{text-align:left;padding:7px 10px;border-bottom:1px solid var(--line);vertical-align:top}
.dx th{color:var(--dim);font-weight:600;white-space:nowrap;position:sticky;top:0;
  background:var(--card);z-index:1}
.dx td.dn, .dx th.dn{text-align:right;font-variant-numeric:tabular-nums}
.dx .scroll{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:var(--card)}
.dx .only-wide{display:none}
@media(min-width:820px){
.dx .only-wide{display:block}
.dx .only-narrow{display:none}
}
.dx .grid2{display:grid;gap:10px}
@media(min-width:820px){
.dx .grid2{grid-template-columns:1fr 1fr;gap:14px}
}
.dx table.dgrid{border-collapse:separate;border-spacing:0;font-size:13px}
.dx table.dgrid th{padding:9px 0;text-align:center;font-size:12px;font-weight:600;
  color:var(--dim);background:var(--card);position:sticky;top:0;z-index:2;
  border-bottom:1px solid var(--line);white-space:nowrap}
.dx table.dgrid td{padding:0;border-bottom:1px solid var(--line)}
.dx table.dgrid tr:nth-child(even) td{background:color-mix(in srgb,var(--ink) 3%,transparent)}
.dx table.dgrid .mon{padding:0 12px;white-space:nowrap;font-variant-numeric:tabular-nums;
  position:sticky;left:0;background:var(--card);z-index:1;text-align:left}
.dx table.dgrid tr:nth-child(even) .mon{background:color-mix(in srgb,var(--card) 97%,var(--ink))}
.dx table.dgrid .miss-n{margin-left:8px;font-size:11px;color:var(--bad)}
.dx table.dgrid td.cell{text-align:center;height:34px;min-width:52px;font-size:12px;
  line-height:34px;user-select:none}
.dx table.dgrid td.ok{background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent)}
.dx table.dgrid td.dbad{background:color-mix(in srgb,var(--bad) 22%,transparent);color:var(--bad);font-weight:700}
.dx table.dgrid td.dbad:hover{background:color-mix(in srgb,var(--bad) 34%,transparent)}
.dx table.dgrid td.skip{color:var(--dim)}
.dx table.dgrid tr.foot td{background:var(--card);border-top:2px solid var(--line);
  border-bottom:0;font-size:12px;height:32px;line-height:32px}
.dx table.dgrid tr.foot .mon{color:var(--dim);font-size:12px}
.dx .cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:10px}
.dx .cal-h{text-align:center;font-size:11px;color:var(--dim);padding:2px 0}
.dx .cal-c{background:var(--card);border:1px solid var(--line);border-radius:8px;
  min-height:58px;padding:4px 3px;display:flex;flex-direction:column;gap:2px;
  align-items:center;cursor:pointer;overflow:hidden}
.dx .cal-c b{font-size:12px;font-variant-numeric:tabular-nums;line-height:1.2}
.dx .cal-c.empty{background:transparent;border-style:dashed;cursor:default;opacity:.45}
.dx .cal-c.on{outline:2px solid var(--accent);outline-offset:-2px}
.dx .cal-p{display:block;width:100%;text-align:center;font-size:9.5px;line-height:1.45;
  border-radius:4px;background:var(--accent-bg);color:var(--accent);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(min-width:820px){
.dx .cal{gap:6px}
.dx .cal-c{min-height:74px;padding:6px 5px}
.dx .cal-c b{font-size:13px}
.dx .cal-p{font-size:11px;padding:0 4px}
}
