/* Dashboard-only presentation; colors inherit from the active application theme. */
.dash-page{
  --d-good:#1b6d33;--d-warn:#8a6300;--d-bad:#b3261e;
  --d-b0:#2e8b4f;--d-b1:#d9a82b;--d-b2:#e08a1e;--d-b3:#d4572a;--d-b4:#b3261e;
  --d-good-soft:color-mix(in srgb,var(--d-good) 10%,var(--bg-card));
  --d-warn-soft:color-mix(in srgb,var(--d-warn) 10%,var(--bg-card));
  --d-bad-soft:color-mix(in srgb,var(--d-bad) 10%,var(--bg-card));
  flex:1;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;min-height:0;
  padding:18px 22px 30px;background:var(--bg-app);color:var(--text-light);font-family:'Roboto',sans-serif;
}
[data-theme^="dark"] .dash-page{
  --d-good:#5fd28a;--d-warn:#e5b94e;--d-bad:#ff7b72;
  --d-b0:#3fae6a;--d-b1:#e5b94e;--d-b2:#ec9a3c;--d-b3:#ee6f45;--d-b4:#ff5d55;
}
.dash-page *{font-variant-numeric:tabular-nums;}
.dash-page>*{flex-shrink:0;}

/* Page heading */
.dash-mast{display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding-bottom:12px;margin-bottom:16px;border-bottom:1px solid var(--border1);}
.dash-mast h2{font-size:21px;font-weight:600;line-height:1.2;color:var(--text-light);}
.dash-mast p{font-size:11.5px;color:var(--text-dim);margin-top:4px;}
.dash-refresh{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border-radius:5px;
  border:1px solid var(--border1);background:var(--bg-card);color:var(--text-mid);
  font-size:12px;font-weight:600;cursor:pointer;transition:background .15s,color .15s;}
.dash-refresh:hover{background:var(--bg-hover);color:var(--text-light);}
.dash-refresh:focus-visible,.dash-retry:focus-visible{outline:2px solid var(--red);outline-offset:2px;}
.dash-menu{display:none;align-items:center;justify-content:center;gap:6px;padding:7px 9px;border:1px solid var(--border1);
  border-radius:5px;background:var(--bg-card);color:var(--text-mid);font:600 11px 'Roboto',sans-serif;cursor:pointer;}
.dash-menu svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;}
.dash-drawer-close{display:none;width:30px;height:30px;flex:none;place-items:center;border:1px solid var(--border1);
  border-radius:4px;background:var(--bg-card);color:var(--text-mid);cursor:pointer;}
.dash-drawer-close svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;}
.dash-refresh.busy span{display:inline-block;animation:dashSpin .8s linear infinite;}
@keyframes dashSpin{to{transform:rotate(360deg);}}

/* Executive overview */
.dash-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:14px;align-items:stretch;}
.dash-hero{grid-column:span 6;}
.dash-finance{grid-column:span 6;display:flex;flex-direction:column;gap:9px;min-width:0;}
.dash-attn{grid-column:span 6;}
.dash-side{grid-column:span 6;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:18px;min-width:0;
  padding:12px 15px;background:var(--bg-card);border:1px solid var(--border1);border-radius:6px;}
.dash-side .dash-panel+.dash-panel{padding:0 0 0 18px;margin:0;border-top:0;border-left:1px solid var(--border1);}
.dash-recent{grid-column:1/-1;}
.dash-solo{grid-column:1/-1;}
.dash-grid.nohero .dash-finance,.dash-grid.nofinance .dash-hero{grid-column:1/-1;}
.dash-grid.noside .dash-attn,.dash-grid.noattn .dash-side{grid-column:1/-1;}

.dash-label{font-size:11px;color:var(--text-dim);font-weight:600;}
.dash-sub{font-size:11.5px;color:var(--text-dim);}
.dash-cur{font-size:.5em;vertical-align:.55em;margin-right:2px;font-weight:600;opacity:.75;}
.dash-dec{font-size:.45em;font-weight:600;opacity:.7;}

/* Sales */
.dash-hero{display:flex;flex-direction:column;gap:9px;min-width:0;padding:16px 19px 14px;
  background:var(--bg-card);border:1px solid var(--border1);border-left:3px solid var(--red);border-radius:6px;}
.dash-skel.dash-hero{height:348px;}
.dash-skel.dash-finance-skel{grid-column:span 6;height:348px;border:1px solid var(--border1);border-radius:6px;}
.dash-hero-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.dash-hero-fig{font-family:'Rajdhani',sans-serif;font-weight:700;font-size:52px;line-height:1;
  display:inline-block;margin-top:5px;color:var(--text-light);}
.dash-delta{display:inline-flex;align-items:center;gap:5px;padding:5px 9px;border-radius:4px;
  background:var(--bg-app);font-size:11px;font-weight:600;white-space:nowrap;}
.dash-delta.up{color:var(--d-good);}
.dash-delta.down{color:var(--d-bad);}
.dash-delta.flat{color:var(--text-dim);}
.dash-chart{height:128px;min-height:128px;position:relative;}
.dash-chart svg{width:100%;height:100%;display:block;overflow:visible;}
.dash-chart .grid{stroke:var(--border1);stroke-width:1;}
.dash-chart .axis{fill:var(--text-dim);font-size:10px;}
.dash-chart .prev{fill:none;stroke:var(--text-dim);stroke-width:1.5;stroke-dasharray:4 4;opacity:.75;}
.dash-chart .cur{fill:none;stroke:var(--red);stroke-width:2.4;stroke-linejoin:round;stroke-linecap:round;}
.dash-chart .area{fill:var(--red);opacity:.08;}
.dash-chart .dot{fill:var(--red);stroke:var(--bg-card);stroke-width:2;}
.dash-chart .draw{stroke-dasharray:1;stroke-dashoffset:1;animation:dashDraw 1s .1s ease-out forwards;}
@keyframes dashDraw{to{stroke-dashoffset:0;}}
.dash-key{display:flex;gap:14px;font-size:10.5px;color:var(--text-dim);}
.dash-key i{display:inline-block;width:15px;height:0;border-top:2px solid var(--red);vertical-align:middle;margin-right:5px;}
.dash-key i.p{border-top:2px dashed var(--text-dim);}
.dash-subs{display:grid;border-top:1px solid var(--border1);padding-top:10px;margin-top:1px;}
.dash-subs>div{padding:0 12px;border-left:1px solid var(--border1);min-width:0;}
.dash-subs>div:first-child{padding-left:0;border-left:0;}
.dash-subs .dash-label{font-size:10px;}
.dash-subs b{display:block;font-family:'Rajdhani',sans-serif;font-size:21px;font-weight:700;line-height:1.1;margin-top:3px;white-space:nowrap;}
.dash-subs small{font-size:10.5px;color:var(--text-dim);}

/* Receivables -> payables -> net position */
.dash-finance.has-pair{display:grid;grid-template-rows:repeat(2,minmax(0,1fr));}
.dash-finance.has-pair>.dash-t2,.dash-finance:not(.has-pair)>.dash-t2{justify-content:space-between;}
.dash-finance:not(.has-pair)>.dash-t2{flex:1;}
.dash-t2{position:relative;padding:12px 15px;background:var(--bg-card);border:1px solid var(--border1);
  border-left:3px solid var(--red);border-radius:6px;display:flex;flex-direction:column;gap:6px;min-width:0;}
.dash-ap{border-left-color:var(--border0);}
.dash-money-head{display:flex;justify-content:space-between;align-items:center;gap:8px;}
.dash-ar .dash-big,.dash-ap .dash-big{font-family:'Rajdhani',sans-serif;font-weight:700;font-size:31px;line-height:1.05;color:var(--text-light);}
.dash-sub{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.dash-flag{color:var(--d-bad);font-weight:600;}
.dash-clear{color:var(--d-good);font-weight:600;}
.dash-open{padding-left:8px;border-left:1px solid var(--border1);}
.dash-aging{display:flex;height:8px;border-radius:3px;overflow:hidden;background:var(--bg-tabs);margin-top:2px;}
.dash-aging i{display:block;height:100%;min-width:2px;}
.dash-aging i.b0{background:var(--d-b0);}
.dash-aging i.b1{background:var(--d-b1);}
.dash-aging i.b2{background:var(--d-b2);}
.dash-aging i.b3{background:var(--d-b3);}
.dash-aging i.b4{background:var(--d-b4);}
.dash-legend{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:3px;font-size:10px;color:var(--text-dim);}
.dash-legend span{display:block;line-height:1.35;min-width:0;}
.dash-legend b{display:block;font-size:10.5px;color:var(--text-light);font-weight:600;white-space:nowrap;}
.dash-legend span::before{content:"";display:inline-block;width:6px;height:6px;border-radius:2px;margin-right:3px;background:var(--lg);}
.dash-beam{display:flex;height:5px;border-radius:3px;overflow:hidden;background:var(--bg-tabs);margin-top:1px;}
.dash-beam i:first-child{background:var(--red);}
.dash-beam i:last-child{background:var(--text-dim);opacity:.55;}
.dash-beam-row{display:flex;justify-content:space-between;gap:8px;font-size:10.5px;color:var(--text-dim);}
.dash-beam-row b{font-weight:700;white-space:nowrap;}
.dash-beam-row b.positive{color:var(--d-good);}
.dash-beam-row b.negative{color:var(--d-bad);}

/* Operations, glance metrics, customers, and activity */
.dash-panel{background:var(--bg-card);border:1px solid var(--border1);border-radius:6px;padding:13px 15px;min-width:0;}
.dash-panel h3{font-size:13px;color:var(--text-light);font-weight:600;margin-bottom:9px;
  display:flex;justify-content:space-between;align-items:center;gap:8px;}
.dash-panel h3>span:last-child{font-size:10.5px;color:var(--text-dim);font-weight:500;}
.dash-section-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:10px;}
.dash-section-head h2{font-size:14px;font-weight:600;color:var(--text-light);}
.dash-section-head>span{font-size:10.5px;color:var(--text-dim);}
.dash-attn-cols{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.dash-attn-list{min-width:0;}
.dash-attn-list h3{padding-bottom:7px;border-bottom:1px solid var(--border1);margin-bottom:3px;}
.dash-row{display:flex;align-items:center;justify-content:space-between;gap:9px;padding:7px 0;
  border-bottom:1px solid var(--border1);font-size:11.5px;min-width:0;}
.dash-row:last-child{border-bottom:0;}
.dash-row .l{min-width:0;flex:1;}
.dash-row .l b{display:block;font-size:11.5px;font-weight:600;color:var(--text-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.dash-row .l small{color:var(--text-dim);font-size:10.5px;}
.dash-row .r{text-align:right;white-space:nowrap;font-weight:600;display:flex;flex-direction:column;align-items:flex-end;gap:3px;}
.dash-row .r strong{font-size:11.5px;font-weight:700;color:var(--text-light);}
.dash-pill{display:inline-flex;align-items:center;padding:2px 6px;border-radius:3px;font-size:10px;font-weight:700;line-height:1.25;}
.dash-pill.warning{color:var(--d-warn);background:var(--d-warn-soft);border-left:2px solid var(--d-warn);}
.dash-pill.overdue{color:var(--d-bad);background:var(--d-bad-soft);}
.dash-pill.critical{color:var(--d-bad);background:var(--d-bad-soft);border:1px solid var(--d-bad);text-transform:uppercase;}
.dash-stock{height:4px;border-radius:3px;background:var(--bg-tabs);margin-top:4px;overflow:hidden;}
.dash-stock i{display:block;height:100%;background:var(--d-warn);}
.is-out .dash-stock i{background:var(--d-bad);}
.dash-glance-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));}
.dash-glance-item{display:flex;justify-content:space-between;align-items:baseline;gap:8px;padding:7px 9px;
  border-top:1px solid var(--border1);min-width:0;}
.dash-glance-item:nth-child(odd){border-right:1px solid var(--border1);padding-left:0;}
.dash-glance-item:nth-child(even){padding-right:0;}
.dash-glance-item span{font-size:11px;color:var(--text-dim);}
.dash-glance-item b{font-family:'Rajdhani',sans-serif;font-size:17px;font-weight:700;color:var(--text-light);text-align:right;}
.dash-bar{display:grid;grid-template-columns:22px minmax(75px,1.15fr) minmax(45px,1fr) auto;align-items:center;gap:8px;padding:5px 0;font-size:11px;}
.dash-rank{color:var(--text-dim);font-size:10px;font-weight:600;}
.dash-customer-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.dash-bar>div{height:6px;border-radius:3px;background:var(--bg-tabs);overflow:hidden;}
.dash-bar>div i{display:block;height:100%;background:var(--red);opacity:.8;}
.dash-bar em{font-style:normal;font-weight:600;font-size:11px;white-space:nowrap;}
.dash-activity-row{gap:10px;padding:8px 0;}
.dash-activity-mark{width:24px;height:24px;display:grid;place-items:center;border-radius:4px;flex:none;font-size:10px;font-weight:700;}
.dash-activity-mark.inv{color:var(--red);background:var(--bg-hover);}
.dash-activity-mark.col{color:var(--d-good);background:var(--d-good-soft);}
.dash-type{width:72px;flex:none;font-size:11px;font-weight:600;}
.dash-type.inv{color:var(--text-mid);}
.dash-type.col{color:var(--d-good);}
.dash-activity-row .l{flex:1.5;}
.dash-activity-row .l b{font-size:11.5px;}
.dash-activity-row .l small{font-family:'Roboto',sans-serif;font-size:10px;}
.dash-activity-row time{width:58px;flex:none;text-align:right;color:var(--text-dim);font-size:10.5px;}
.dash-activity-row .r{width:130px;flex:none;text-align:right;font-size:11.5px;font-weight:700;color:var(--text-light);}
.dash-activity-row .r.credit{color:var(--d-good);}
.dash-empty{padding:14px 0;color:var(--text-dim);font-size:11.5px;text-align:center;}
.dash-side .dash-panel{padding:0;background:transparent;border:0;border-radius:0;}
.dash-side .dash-panel+.dash-panel{padding-top:10px;margin-top:10px;border-top:1px solid var(--border1);}

/* Loading and error states */
.dash-skel{height:180px;border-radius:6px;background:linear-gradient(90deg,var(--bg-card),var(--bg-hover),var(--bg-card));
  background-size:200% 100%;animation:dashShimmer 1.3s linear infinite;}
@keyframes dashShimmer{to{background-position:-200% 0;}}
.dash-error{padding:40px 20px;text-align:center;color:var(--text-mid);}
.dash-retry{margin-top:12px;padding:8px 16px;border-radius:5px;border:1px solid var(--red2);background:var(--red);color:#fff;font-weight:600;cursor:pointer;}

@media (max-width:1200px){
  .dash-grid{grid-template-columns:repeat(6,minmax(0,1fr));}
  .dash-hero,.dash-finance{grid-column:span 3;}
  .dash-skel.dash-finance-skel{grid-column:span 3;}
  .dash-attn,.dash-side{grid-column:1/-1;}
  .dash-attn-cols{grid-template-columns:repeat(2,minmax(0,1fr));}
  .dash-grid.nohero .dash-finance,.dash-grid.nofinance .dash-hero,.dash-grid.noside .dash-attn,.dash-grid.noattn .dash-side{grid-column:1/-1;}
}
@media (max-width:860px){
  .dash-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .dash-hero,.dash-finance,.dash-attn,.dash-side{grid-column:1/-1;}
  .dash-skel.dash-finance-skel{grid-column:1/-1;height:230px;}
  .dash-finance{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;}
  .dash-attn-cols{grid-template-columns:1fr;}
  .dash-side{display:flex;}
  .dash-side .dash-panel+.dash-panel{padding:10px 0 0;margin:10px 0 0;border-top:1px solid var(--border1);border-left:0;}
  .dash-finance.has-pair{grid-template-rows:auto;}
  .dash-grid.nohero .dash-finance,.dash-grid.nofinance .dash-hero,.dash-grid.noside .dash-attn,.dash-grid.noattn .dash-side{grid-column:1/-1;}
}
@media (max-width:620px){
  .app.dashboard-open{position:relative;}
  .app.dashboard-open #sb{position:fixed;top:0;bottom:0;left:0;z-index:50;width:min(280px,86vw);min-width:min(280px,86vw);
    max-width:86vw;transform:translateX(-105%);transition:transform .2s ease;box-shadow:4px 0 18px rgba(0,0,0,.2);}
  .app.dashboard-open.dash-nav-open::before{content:"";position:fixed;inset:0;z-index:40;background:rgba(0,0,0,.38);}
  .app.dashboard-open.dash-nav-open #sb{transform:translateX(0);}
  .app.dashboard-open.dash-nav-open .dash-drawer-close{display:grid;}
  .dash-page{padding:14px 12px 22px;}
  .dash-mast{gap:8px;margin-bottom:12px;}
  .dash-menu{display:inline-flex;flex:none;}
  .dash-mast h2{font-size:19px;}
  .dash-refresh{padding:7px 9px;}
  .dash-hero{padding:14px 14px 12px;}
  .dash-hero-fig{font-size:42px;}
  .dash-skel.dash-hero{height:332px;}
  .dash-skel.dash-finance-skel{height:318px;}
  .dash-chart{height:112px;min-height:112px;}
  .dash-subs>div{padding:0 7px;}
  .dash-subs b{font-size:18px;}
  .dash-subs small{font-size:9.5px;}
  .dash-finance{display:flex;}
  .dash-finance.has-pair{display:flex;}
  .dash-attn-cols{grid-template-columns:1fr;gap:12px;}
  .dash-panel{padding:12px;}
  .dash-activity-row{display:grid;grid-template-columns:24px minmax(0,1fr) auto;gap:5px 8px;}
  .dash-activity-mark{grid-row:1 / span 2;}
  .dash-type{width:auto;grid-column:2;grid-row:1;}
  .dash-activity-row .l{grid-column:2;grid-row:2;}
  .dash-activity-row time{width:auto;grid-column:3;grid-row:1;}
  .dash-activity-row .r{width:auto;grid-column:3;grid-row:2;font-size:10.5px;}
}
@media (prefers-reduced-motion:reduce){
  .dash-chart .draw{animation:none;stroke-dashoffset:0;}
  .dash-skel,.dash-refresh.busy span{animation:none;}
  .app.dashboard-open #sb{transition:none;}
}
@media print{.dash-refresh{display:none;}}