.excessworking-app {
    /* Unified with app design system (variables.css) — was a standalone
       earthy/stone palette + IBM Plex Sans/Space Grotesk, now maps onto
       the same tokens every other page uses so this section matches the
       app's blue theme instead of looking like a separate product. */
    --ink:var(--text);
    --ink-soft:var(--muted);
    --paper:var(--bg);
    --panel:var(--surface);
    --line:var(--border);
    --teal:var(--accent);
    --teal-dark:var(--accent-dk);
    --rust:var(--red);
    --amber:var(--amber);
    --indigo:var(--accent);
    --rust-bg:var(--rlt);
    --amber-bg:var(--alt2);
    --indigo-bg:var(--alt);
    --slate:var(--t2);
    --slate-bg:var(--s3);
    --stone:var(--muted);
    --stone-bg:var(--s2);
    /* --mono/--sans inherit directly from :root (variables.css) now;
       --display collapses onto --sans since there's no separate display
       face in the app's type system. */
    --display:var(--sans);
  }
.excessworking-app * {box-sizing:border-box;}
.excessworking-app {
    margin:0;
    background:var(--paper);
    color:var(--ink);
    font-family:var(--sans);
    -webkit-font-smoothing:antialiased;
  }
.excessworking-app ::selection {background:var(--teal); color:#fff;}
.excessworking-app header {
    background:var(--ink);
    color:#EFEFEA;
    padding:28px clamp(16px,4vw,48px) 24px;
    position:relative;
    overflow:hidden;
  }
.excessworking-app header::after {
    content:"";
    position:absolute; top:0; right:0; bottom:0; width:260px;
    background:
      repeating-linear-gradient(135deg, rgba(255,255,255,0.035) 0 2px, transparent 2px 14px);
    pointer-events:none;
  }
.excessworking-app .eyebrow {
    font-family:var(--mono);
    font-size:11px;
    letter-spacing:.14em;
    text-transform:uppercase;
    color:#8FB8B0;
    margin:0 0 6px;
  }
.excessworking-app h1 {
    font-family:var(--display);
    font-weight:700;
    font-size:clamp(26px,3.4vw,38px);
    margin:0 0 6px;
    letter-spacing:-0.01em;
  }
.excessworking-app .sub {
    color:#B9C0BE;
    font-size:14px;
    max-width:640px;
    line-height:1.5;
    margin:0;
  }
.excessworking-app .asof {
    font-family:var(--mono);
    font-size:12px;
    color:#8FB8B0;
    margin-top:14px;
  }
.excessworking-app .uploadwrap {
    padding:20px clamp(16px,4vw,48px);
  }
.excessworking-app .dropzone {
    background:var(--panel);
    border:1.5px dashed var(--line);
    border-radius:6px;
    padding:22px;
    display:flex;
    align-items:center;
    gap:18px;
    flex-wrap:wrap;
    transition:border-color .15s ease, background .15s ease;
  }
.excessworking-app .dropzone.drag {
    border-color:var(--teal);
    background:var(--indigo-bg);
  }
.excessworking-app .dropzone .icon {
    width:38px; height:38px; flex:none;
    border-radius:50%;
    background:var(--teal-dark);
    color:#fff;
    display:flex; align-items:center; justify-content:center;
    font-family:var(--mono);
    font-size:16px;
  }
.excessworking-app .dropzone .text strong {display:block; font-size:14.5px; margin-bottom:2px;}
.excessworking-app .dropzone .text span {font-size:12.5px; color:var(--ink-soft);}
.excessworking-app .filebtn {
    margin-left:auto;
    background:var(--teal);
    color:#fff;
    border:none;
    padding:10px 18px;
    border-radius:5px;
    font-family:var(--sans);
    font-weight:600;
    font-size:13.5px;
    cursor:pointer;
    transition:background .15s ease;
  }
.excessworking-app .filebtn:hover {background:var(--teal-dark);}
.excessworking-app #sl-fileInput {display:none;}
.excessworking-app .filename {font-family:var(--mono); font-size:12px; color:var(--ink-soft);}
.excessworking-app .loaderr {color:var(--rust); font-size:13px; font-family:var(--mono); margin-top:10px; display:none;}
.excessworking-app .dbxpanel {
    margin-top:14px;
    border:1px solid var(--line);
    border-radius:6px;
    background:var(--panel);
    overflow:hidden;
  }
.excessworking-app .dbxtoggle {
    width:100%;
    background:none;
    border:none;
    padding:13px 16px;
    display:flex;
    align-items:center;
    gap:8px;
    font-family:var(--display);
    font-weight:600;
    font-size:14px;
    color:var(--ink);
    cursor:pointer;
  }
.excessworking-app .dbxicon {color:var(--indigo); font-size:15px;}
.excessworking-app .dbxtoggle .chev {margin-left:auto; color:var(--ink-soft); font-size:11px; transition:transform .15s ease;}
.excessworking-app .dbxtoggle.open .chev {transform:rotate(180deg);}
.excessworking-app .dbxbody {
    display:none;
    padding:4px 16px 18px;
    border-top:1px solid var(--paper);
  }
.excessworking-app .dbxbody.open {display:block;}
.excessworking-app .dbxstep {margin-top:14px;}
.excessworking-app .dbxlabel {
    font-size:12.5px;
    font-weight:600;
    color:var(--ink);
    margin:0 0 6px;
  }
.excessworking-app .dbxhint {
    font-weight:400;
    color:var(--ink-soft);
    font-size:11.5px;
  }
.excessworking-app .dbxrow {display:flex; gap:8px; flex-wrap:wrap;}
.excessworking-app .dbxrow input {
    flex:1; min-width:180px;
    padding:9px 11px;
    border:1px solid var(--line);
    border-radius:5px;
    font-family:var(--mono);
    font-size:12.5px;
    background:var(--panel);
  }
.excessworking-app .dbxrow .btn-ghost, .excessworking-app .dbxrow .filebtn {white-space:nowrap;}
.excessworking-app .dbxstatus {
    font-family:var(--mono);
    font-size:12px;
    color:var(--ink-soft);
    margin:14px 0 0;
    min-height:16px;
  }
.excessworking-app .dbxstatus.err {color:var(--rust);}
.excessworking-app .dbxstatus.ok {color:var(--teal-dark);}
.excessworking-app .dbxlabel.ok {color:var(--teal-dark);}
.excessworking-app .srctag {
  font-family:var(--mono); font-size:9.5px; letter-spacing:.06em; text-transform:uppercase;
  background:var(--indigo-bg); color:var(--indigo); padding:2px 7px; border-radius:20px;
  font-weight:600; margin-left:2px;
}
.excessworking-app .fallbacklabel {
  font-family:var(--mono); font-size:11px; letter-spacing:.04em; text-transform:uppercase;
  color:var(--ink-soft); margin:16px 0 8px;
}
.excessworking-app .exportbar {
    display:flex; align-items:center; gap:12px;
    margin-bottom:18px;
  }
.excessworking-app .exportbar .filebtn {background:var(--indigo); margin-left:0;}
.excessworking-app .exportbar .filebtn:hover {background:var(--teal-dark);}
.excessworking-app main {padding:0 clamp(16px,4vw,48px) 60px; display:none;}
.excessworking-app .empty {
    padding:60px clamp(16px,4vw,48px);
    text-align:center;
    color:var(--ink-soft);
    font-size:14px;
  }
.excessworking-app .empty strong {display:block; color:var(--ink); font-family:var(--display); font-size:19px; margin-bottom:6px; font-weight:600;}
.excessworking-app .cards {
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(230px,1fr));
    gap:14px;
    margin:22px 0 26px;
  }
.excessworking-app .card {
    background:var(--panel);
    border:1px solid var(--line);
    border-radius:6px;
    padding:18px 18px 16px;
    position:relative;
    overflow:hidden;
  }
.excessworking-app .card .tag {
    font-family:var(--mono);
    font-size:10.5px;
    letter-spacing:.1em;
    text-transform:uppercase;
    padding:3px 8px;
    border-radius:20px;
    display:inline-block;
    margin-bottom:12px;
    font-weight:600;
  }
.excessworking-app .card.rust .tag {background:var(--rust-bg); color:var(--rust);}
.excessworking-app .card.amber .tag {background:var(--amber-bg); color:var(--amber);}
.excessworking-app .card.indigo .tag {background:var(--indigo-bg); color:var(--indigo);}
.excessworking-app .card.slate .tag {background:var(--slate-bg); color:var(--slate);}
.excessworking-app .card.stone .tag {background:var(--stone-bg); color:var(--stone);}
.excessworking-app .card .num {
    font-family:var(--display);
    font-size:30px;
    font-weight:700;
    line-height:1;
    margin-bottom:6px;
  }
.excessworking-app .card .lbl {font-size:12.5px; color:var(--ink-soft);}
.excessworking-app .stamp {
    position:absolute; top:14px; right:-10px;
    font-family:var(--mono); font-size:10px; letter-spacing:.08em;
    color:currentColor; opacity:.35;
    border:1.5px solid currentColor; border-radius:4px;
    padding:3px 8px;
    transform:rotate(9deg);
  }
.excessworking-app .card.rust .stamp {color:var(--rust);}
.excessworking-app .card.amber .stamp {color:var(--amber);}
.excessworking-app .card.indigo .stamp {color:var(--indigo);}
.excessworking-app .card.slate .stamp {color:var(--slate);}
.excessworking-app .card.stone .stamp {color:var(--stone);}
.excessworking-app .tabs {
    display:flex;
    gap:4px;
    border-bottom:2px solid var(--line);
    margin-bottom:18px;
    flex-wrap:wrap;
  }
.excessworking-app .tab {
    font-family:var(--display);
    font-weight:600;
    font-size:14.5px;
    background:none;
    border:none;
    padding:12px 16px 11px;
    cursor:pointer;
    color:var(--ink-soft);
    border-bottom:3px solid transparent;
    margin-bottom:-2px;
    display:flex; align-items:center; gap:8px;
  }
.excessworking-app .tab .count {
    font-family:var(--mono);
    font-size:11px;
    background:var(--paper);
    color:var(--ink-soft);
    padding:1px 7px;
    border-radius:20px;
  }
.excessworking-app .tab.active {color:var(--ink);}
.excessworking-app .tab.active.rust {border-color:var(--rust);}
.excessworking-app .tab.active.amber {border-color:var(--amber);}
.excessworking-app .tab.active.indigo {border-color:var(--indigo);}
.excessworking-app .tab.active.slate {border-color:var(--slate);}
.excessworking-app .tab.active.stone {border-color:var(--stone);}
.excessworking-app .tab.active.teal {border-color:var(--teal);}
.excessworking-app .tab.active .count {background:var(--ink); color:#fff;}
.excessworking-app .panel {display:none;}
.excessworking-app .panel.active {display:block;}
.excessworking-app .controls {
    display:flex;
    align-items:center;
    gap:14px;
    flex-wrap:wrap;
    margin-bottom:14px;
  }
.excessworking-app .search {
    flex:1; min-width:200px;
    position:relative;
  }
.excessworking-app .search input {
    width:100%;
    padding:9px 12px 9px 30px;
    border:1px solid var(--line);
    border-radius:5px;
    font-size:13.5px;
    font-family:var(--sans);
    background:var(--panel);
  }
.excessworking-app .search::before {
    content:"⌕";
    position:absolute; left:10px; top:50%; transform:translateY(-50%);
    color:var(--ink-soft); font-size:14px;
  }
.excessworking-app .toggle-group {
    display:flex;
    background:var(--panel);
    border:1px solid var(--line);
    border-radius:5px;
    overflow:hidden;
  }
.excessworking-app .toggle-group button {
    border:none; background:none; padding:8px 14px;
    font-family:var(--mono); font-size:12.5px; cursor:pointer;
    color:var(--ink-soft);
  }
.excessworking-app .toggle-group button.active {background:var(--ink); color:#fff;}
.excessworking-app .btn-ghost {
    border:1px solid var(--line);
    background:var(--panel);
    padding:8px 14px;
    border-radius:5px;
    font-size:12.5px;
    font-family:var(--mono);
    cursor:pointer;
    color:var(--ink-soft);
  }
.excessworking-app .btn-ghost:hover {border-color:var(--ink); color:var(--ink);}
.excessworking-app .note {
    font-size:12.5px;
    color:var(--ink-soft);
    margin:0 0 14px;
    line-height:1.5;
    background:var(--panel);
    border-left:3px solid var(--line);
    padding:10px 14px;
    border-radius:0 4px 4px 0;
  }
.excessworking-app .tablewrap {
    background:var(--panel);
    border:1px solid var(--line);
    border-radius:6px;
    overflow:auto;
    max-height:64vh;
  }
.excessworking-app table {border-collapse:collapse; width:100%; font-size:12.8px;}
/* Table shell (thead/tbody/tfoot/hover/num/name-cell/sub/val/
   noresults/footer + the 640px padding media query) now lives in
   css/components.css, shared with .stockledger-app/.reorder-app —
   see that file's "SHARED REPORT TABLE SHELL" comment. Kept out of
   here to kill the 3x-duplicated-block drift risk; nothing about how
   this page looks changed. */
/* ============================================================
   EXCESS WORKING — additions on top of the shared stockledger
   design language (stat cards, retain chips, status pills, donut).
============================================================ */
.excessworking-app .stat-grid {
  display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
  gap:14px; margin:0 0 18px;
}
.excessworking-app .stat {
  background:var(--panel); border:1px solid var(--line); border-left:4px solid var(--line);
  border-radius:6px; padding:16px 16px 14px;
}
.excessworking-app .stat-top {display:flex; align-items:center; justify-content:space-between; margin-bottom:8px;}
.excessworking-app .stat .val {font-family:var(--display); font-size:26px; font-weight:700; line-height:1; margin-bottom:8px;}
.excessworking-app .stat.excess {border-left-color:var(--rust);}
.excessworking-app .stat.retained {border-left-color:var(--indigo);}
.excessworking-app .stat.loose {border-left-color:var(--slate);}
.excessworking-app .stat.corrected {border-left-color:var(--teal);}
.excessworking-app .bar-track {height:5px; border-radius:3px; background:var(--paper); overflow:hidden;}
.excessworking-app .stat.excess .bar-fill {background:var(--rust); height:100%;}
.excessworking-app .stat.retained .bar-fill {background:var(--indigo); height:100%;}
.excessworking-app .stat.loose .bar-fill {background:var(--slate); height:100%;}
.excessworking-app .stat.corrected .bar-fill {background:var(--teal); height:100%;}

.excessworking-app .status-pill {
  font-family:var(--mono); font-size:10.5px; letter-spacing:.04em; text-transform:uppercase;
  padding:3px 9px; border-radius:20px; font-weight:600; white-space:nowrap;
}
.excessworking-app .status-pill.Excess {background:var(--rust-bg); color:var(--rust);}
.excessworking-app .status-pill.Retained {background:var(--indigo-bg); color:var(--indigo);}
.excessworking-app .status-pill.Loose {background:var(--slate-bg); color:var(--slate);}

.excessworking-app .retain-toggle-btn {
  border:1px solid var(--line); background:var(--panel); width:30px; height:30px;
  border-radius:50%; display:inline-flex; align-items:center; justify-content:center;
  cursor:pointer; color:var(--ink-soft); padding:0;
}
.excessworking-app .retain-toggle-btn .material-symbols-outlined {font-size:18px;}
.excessworking-app .retain-toggle-btn:hover {border-color:var(--indigo); color:var(--indigo);}
.excessworking-app .retain-toggle-btn.active {background:var(--indigo-bg); border-color:var(--indigo); color:var(--indigo);}
.excessworking-app td.retain-col {text-align:center; white-space:nowrap;}
.excessworking-app th.retain-col-h {text-align:center;}

.excessworking-app tr.group-header {cursor:pointer; background:var(--paper);}
.excessworking-app tr.group-header:hover {background:var(--line);}
.excessworking-app tr.group-header td {padding:8px 12px; font-family:var(--mono); border-bottom:1px solid var(--line); white-space:nowrap;}
.excessworking-app tr.group-header .group-chev {font-size:16px; vertical-align:middle; margin-right:4px; color:var(--ink-soft);}
.excessworking-app tr.group-header .group-name {font-weight:700; color:var(--ink);}
.excessworking-app tr.group-header .group-count {margin-left:8px; font-size:11px;}
.excessworking-app tr.group-header .group-total {float:right; font-weight:700;}

.excessworking-app .add-row {display:flex; gap:8px; flex-wrap:wrap; align-items:center;}
.excessworking-app .add-row input[type="text"] {
  flex:1; min-width:200px; padding:9px 12px; border:1px solid var(--line); border-radius:5px;
  font-family:var(--sans); font-size:13.5px; background:var(--panel);
}
.excessworking-app .btn {
  border:1px solid var(--line); background:var(--panel); padding:9px 15px; border-radius:5px;
  font-size:13px; font-family:var(--sans); font-weight:600; cursor:pointer; color:var(--ink);
  display:inline-flex; align-items:center; gap:6px; white-space:nowrap;
}
.excessworking-app .btn:hover {border-color:var(--ink);}
.excessworking-app .btn-primary {background:var(--teal); color:#fff; border-color:var(--teal);}
.excessworking-app .btn-primary:hover {background:var(--teal-dark); border-color:var(--teal-dark);}
.excessworking-app .btn-sm {padding:6px 11px; font-size:12px;}
.excessworking-app .btn-group {display:flex; gap:8px; flex-wrap:wrap;}

.excessworking-app .chip-list {display:flex; flex-wrap:wrap; gap:8px; margin-top:14px;}
.excessworking-app .chip {
  display:flex; align-items:center; gap:6px; background:var(--indigo-bg); color:var(--indigo);
  padding:5px 6px 5px 12px; border-radius:20px; font-size:12.5px; font-weight:500;
}
.excessworking-app .chip button {
  border:none; background:none; color:var(--indigo); cursor:pointer; display:flex; align-items:center;
  padding:3px; border-radius:50%; font-size:14px; line-height:1;
}
.excessworking-app .chip button:hover {background:rgba(51,80,125,.15);}

.excessworking-app .field-row {display:flex; gap:16px; flex-wrap:wrap; margin-top:4px;}
.excessworking-app .field {flex:1; min-width:180px;}
.excessworking-app .field-label {display:block; font-size:12px; font-weight:600; color:var(--ink-soft); margin-bottom:5px;}
.excessworking-app .field input {
  width:100%; padding:9px 12px; border:1px solid var(--line); border-radius:5px;
  font-family:var(--mono); font-size:13.5px; background:var(--panel);
}

.excessworking-app .card-head {display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:10px; flex-wrap:wrap;}
.excessworking-app .card-head h3 {font-family:var(--display); font-size:15.5px; font-weight:700; margin:0;}
.excessworking-app .hint {font-size:11.5px; color:var(--ink-soft); font-family:var(--mono);}

.excessworking-app .chart-row {display:flex; align-items:center; gap:24px; flex-wrap:wrap;}
.excessworking-app .donut {width:120px; height:120px; border-radius:50%; flex:none;}
.excessworking-app .donut-legend {display:flex; flex-direction:column; gap:8px;}
.excessworking-app .li {display:flex; align-items:center; gap:8px; font-size:13px;}
.excessworking-app .sw {width:10px; height:10px; border-radius:3px; flex:none;}
.excessworking-app .lbl {color:var(--ink-soft); min-width:66px;}
.excessworking-app .lv {font-weight:600;}

.excessworking-app .filter-row {display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:14px;}
.excessworking-app .ftab {
  border:1px solid var(--line); background:var(--panel); padding:7px 14px; border-radius:20px;
  font-size:12.5px; font-family:var(--sans); font-weight:600; cursor:pointer; color:var(--ink-soft);
}
.excessworking-app .ftab.active {background:var(--ink); color:#fff; border-color:var(--ink);}
.excessworking-app .search-box {position:relative; flex:1; min-width:200px;}
.excessworking-app .search-box span.material-symbols-outlined {
  position:absolute; left:10px; top:50%; transform:translateY(-50%); color:var(--ink-soft); font-size:16px;
}
.excessworking-app .search-box input {
  width:100%; padding:8px 12px 8px 32px; border:1px solid var(--line); border-radius:20px;
  font-size:13px; font-family:var(--sans); background:var(--panel);
}

.excessworking-app .export-actions {display:flex; gap:8px; margin-left:auto;}
.excessworking-app .note.warn {border-left-color:var(--amber); background:var(--amber-bg);}
.excessworking-app .note.danger {border-left-color:var(--rust); background:var(--rust-bg); color:#8a1917;}
.excessworking-app .note.ok {border-left-color:var(--teal); background:var(--tlt); color:var(--teal-dark);}
.excessworking-app .mono {font-family:var(--mono);}
.excessworking-app .badge {
  font-family:var(--mono); font-size:11px; background:var(--paper); color:var(--ink-soft);
  padding:3px 9px; border-radius:20px; font-weight:600;
}
.excessworking-app .cards.top-cards {margin-bottom:6px;}
.excessworking-app .no-data-note {padding:40px 20px; text-align:center; color:var(--ink-soft); font-size:13.5px;}
.excessworking-app .no-data-note strong {display:block; color:var(--ink); font-family:var(--display); font-size:18px; margin-bottom:6px;}
.excessworking-app .reload-row {display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-bottom:16px;}

@media (max-width:640px){
  .excessworking-app .export-actions {margin-left:0; width:100%;}
  .excessworking-app .chart-row {flex-direction:column; align-items:flex-start;}
}

.excessworking-app .material-symbols-outlined {
  font-family: 'Material Symbols Outlined';
  font-weight: normal; font-style: normal; font-size: 18px;
  line-height: 1; letter-spacing: normal; text-transform: none;
  display: inline-block; white-space: nowrap; word-wrap: normal;
  direction: ltr; vertical-align: middle;
}
