/* ===========================================================================
   ServeHub — Logged-in dashboard · rugged trade-built
   Adapted from the Claude Design dashboard prototype. Every rule is scoped
   under `.shd` (added to the signed-in shell) and uses class selectors only —
   no bare element/`*` resets — so it never restyles the Tailwind-based inner
   pages that render inside the shell via <main>/yield.
   =========================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@500;600;700;800&family=Barlow:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap');

.shd{
  --paper:#f3efe6; --paper-2:#ece6d8; --paper-3:#e4ddcc; --white:#fff;
  --ink:#17191d; --ink-2:#22262c; --ink-3:#2b3038; --ink-soft:#3a3f47;
  --steel:#6a7079; --steel-2:#8b9099; --steel-3:#aab0b8;
  --line:#d9d3c4; --line-2:#cfc8b6; --line-ink:#2e333b;
  --blue:#0ea5e9; --blue-deep:#0b6fa3; --blue-ink:#063f5c; --blue-wash:#e3f1f9;
  --amber:#f5a31f; --green:#18794e; --green-wash:#e2efe7; --red:#c14034; --red-wash:#f6e3e0;
  --shadow:3px 3px 0 var(--ink); --shadow-sm:2px 2px 0 var(--ink);
  --r:14px; --r-sm:10px;
}

/* ---------- shell ---------- */
.shd{background:var(--paper);min-width:0}
.shd .shd-fonts-cond{font-family:'Barlow Condensed',sans-serif}

/* paper working surface + faint blueprint grid on the main column */
.shd .shd-main{
  background:var(--paper);
  background-image:
    linear-gradient(rgba(23,25,29,.022) 1px,transparent 1px),
    linear-gradient(90deg,rgba(23,25,29,.022) 1px,transparent 1px);
  background-size:26px 26px;
}

/* ============ SIDE RAIL ============ */
.shd .shd-rail{
  background:var(--ink);
  border-right:2px solid #000;
  background-image:
    linear-gradient(rgba(14,165,233,.05) 1px,transparent 1px),
    linear-gradient(90deg,rgba(14,165,233,.05) 1px,transparent 1px);
  background-size:24px 24px;
}
/* brand block */
.shd .shd-rail-logo{border-bottom:2px solid #000}
.shd .shd-mark{
  width:38px;height:38px;border-radius:9px;background:var(--blue);
  display:grid;place-items:center;border:2px solid #04222f;flex:0 0 auto;
  box-shadow:inset 0 -3px 0 rgba(0,0,0,.18);
}
.shd .shd-mark svg{width:19px;height:19px;stroke:#04222f;fill:none;stroke-width:2.6}
.shd .shd-logo{width:46px;height:46px;flex:0 0 auto;object-fit:contain}
.shd .shd-wordmark{
  font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:27px;
  color:var(--paper);text-transform:uppercase;letter-spacing:.005em;line-height:1;white-space:nowrap;
}
.shd .shd-collapse{
  width:30px;height:30px;flex:0 0 auto;border:2px solid var(--line-ink);border-radius:8px;
  background:var(--ink-2);display:grid;place-items:center;cursor:pointer;color:var(--steel-2);transition:.15s;
}
.shd .shd-collapse:hover{color:var(--paper);border-color:var(--steel)}
.shd .shd-collapse svg{width:15px;height:15px}

/* group label */
.shd .shd-group-label{
  font-family:'JetBrains Mono',monospace;font-size:10.5px;font-weight:500;letter-spacing:.16em;
  text-transform:uppercase;color:var(--steel);display:flex;align-items:center;gap:8px;white-space:nowrap;
}
.shd .shd-group-label::before{content:"";width:14px;height:2px;background:var(--amber);flex:0 0 auto}
.shd .shd-group-label svg{color:var(--steel)}

/* nav item */
.shd .shd-nav-item{
  display:flex;align-items:center;gap:12px;padding:9px 10px;border-radius:var(--r-sm);
  color:var(--steel-3);text-decoration:none;
  font-family:'Barlow Condensed',sans-serif;font-weight:600;font-size:17.5px;letter-spacing:.01em;white-space:nowrap;
  border:2px solid transparent;position:relative;cursor:pointer;
  transition:background .14s,color .14s,border-color .14s;
}
.shd .shd-nav-item .shd-ico{width:22px;height:22px;flex:0 0 auto;display:grid;place-items:center}
.shd .shd-nav-item .shd-ico svg{width:21px;height:21px;stroke:currentColor;fill:none;stroke-width:1.9}
.shd .shd-nav-item .shd-lbl{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis}
.shd .shd-nav-item .shd-caret{width:15px;height:15px;flex:0 0 auto;color:var(--steel);opacity:.6}
.shd .shd-nav-item .shd-caret svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2.2}
.shd .shd-nav-item .shd-badge{
  font-family:'JetBrains Mono',monospace;font-size:10px;font-weight:700;
  background:var(--amber);color:#3a2403;border-radius:5px;padding:2px 6px;flex:0 0 auto;
}
.shd .shd-nav-item:hover{background:var(--ink-2);color:var(--paper)}
.shd .shd-nav-item:hover .shd-caret{opacity:1}
.shd .shd-nav-item.shd-active{
  background:var(--blue);color:#04222f;border-color:#04222f;box-shadow:2px 2px 0 #04222f;font-weight:700;
}
.shd .shd-nav-item.shd-active .shd-caret,
.shd .shd-nav-item.shd-active .shd-badge{color:#04222f}
.shd .shd-nav-item.shd-active .shd-badge{background:rgba(4,34,47,.16)}

/* rail footer / account */
.shd .shd-rail-foot{border-top:2px solid #000}
.shd .shd-acct{
  display:flex;align-items:center;gap:11px;padding:8px;border-radius:var(--r-sm);
  cursor:pointer;transition:background .14s;border:2px solid transparent;text-decoration:none;
}
.shd .shd-acct:hover{background:var(--ink-2)}
.shd .shd-acct .shd-pfp{
  width:36px;height:36px;border-radius:9px;flex:0 0 auto;background:var(--amber);color:#3a2403;
  border:2px solid #04222f;display:grid;place-items:center;font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:15px;
  object-fit:cover;
}
.shd .shd-acct .shd-meta{flex:1 1 auto;overflow:hidden;white-space:nowrap;min-width:0}
.shd .shd-acct .shd-nm{font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:16px;color:var(--paper);line-height:1.05;overflow:hidden;text-overflow:ellipsis}
.shd .shd-acct .shd-pl{font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--blue);letter-spacing:.04em;text-transform:uppercase}
.shd .shd-acct .shd-gear{color:var(--steel-2);flex:0 0 auto}
.shd .shd-acct .shd-gear svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:1.9}

/* ===== collapsed rail — icon-only (~78px). Desktop only; on mobile the rail is
   an overlay drawer that always shows full width, so the collapse is inert there.
   Both the in-flow spacer (the aside) and the fixed rail (its child) shrink. ===== */
@media(min-width:1024px){
  .shd .ff-sidebar.is-collapsed{width:78px}
  .shd .ff-sidebar.is-collapsed .shd-rail{width:78px}
  .shd .ff-sidebar.is-collapsed .shd-rail-logo{justify-content:center;padding-left:0;padding-right:0}
  .shd .ff-sidebar.is-collapsed .shd-wordmark,
  .shd .ff-sidebar.is-collapsed .shd-collapse,
  .shd .ff-sidebar.is-collapsed .shd-group-label,
  .shd .ff-sidebar.is-collapsed .shd-nav-item .shd-lbl,
  .shd .ff-sidebar.is-collapsed .shd-nav-item .shd-caret,
  .shd .ff-sidebar.is-collapsed .shd-nav-item .shd-badge,
  .shd .ff-sidebar.is-collapsed .shd-acct .shd-meta,
  .shd .ff-sidebar.is-collapsed .shd-acct .shd-gear,
  .shd .ff-sidebar.is-collapsed .shd-acct .shd-caret{display:none}
  .shd .ff-sidebar.is-collapsed .shd-nav-item{justify-content:center;padding:11px 0;gap:0}
  .shd .ff-sidebar.is-collapsed .shd-acct{justify-content:center;padding:8px 0;gap:0}
}

/* ============ TOP BAR ============ */
.shd .shd-topbar{
  background:var(--paper);
  border-bottom:2px solid var(--ink);
}
.shd .shd-search{position:relative;flex:0 1 440px}
.shd .shd-search input{
  width:100%;height:42px;border:2px solid var(--ink);border-radius:var(--r-sm);background:var(--white);
  padding:0 40px 0 42px;font-family:'Barlow',sans-serif;font-size:14.5px;color:var(--ink);
  box-shadow:var(--shadow-sm);transition:.12s;
}
.shd .shd-search input::placeholder{color:var(--steel-2)}
.shd .shd-search input:focus{outline:none;border-color:var(--blue);box-shadow:2px 2px 0 var(--blue-ink)}
.shd .shd-search .shd-si{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--steel);pointer-events:none}
.shd .shd-search .shd-si svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2}
.shd .shd-search .shd-kbd{position:absolute;right:10px;top:50%;transform:translateY(-50%);
  font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--steel-2);border:1px solid var(--line-2);
  border-radius:5px;padding:2px 6px;background:var(--paper-2)}

.shd .shd-icon-btn{
  width:42px;height:42px;border:2px solid var(--ink);border-radius:var(--r-sm);background:var(--white);
  display:grid;place-items:center;cursor:pointer;color:var(--ink);position:relative;
  box-shadow:var(--shadow-sm);transition:transform .05s,box-shadow .05s;
}
.shd .shd-icon-btn:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.shd .shd-icon-btn svg{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:1.9}
.shd .shd-icon-btn .shd-ping{
  position:absolute;top:-6px;right:-6px;min-width:18px;height:18px;padding:0 4px;background:var(--red);color:#fff;
  border:2px solid var(--paper);border-radius:9px;font-family:'JetBrains Mono',monospace;font-size:10px;font-weight:700;
  display:grid;place-items:center;
}
.shd .shd-top-user{
  display:flex;align-items:center;gap:8px;padding:4px 6px 4px 4px;border:2px solid var(--ink);border-radius:var(--r-sm);
  background:var(--white);cursor:pointer;box-shadow:var(--shadow-sm);transition:transform .05s,box-shadow .05s;
}
.shd .shd-top-user:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.shd .shd-top-user .shd-pfp{width:32px;height:32px;border-radius:7px;background:var(--ink);color:var(--paper);
  display:grid;place-items:center;font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:14px;object-fit:cover}
.shd .shd-top-user .shd-cv{color:var(--steel)}
.shd .shd-top-user .shd-cv svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2.4}

/* dropdown panels (notifications / user / search) — rugged card */
.shd .shd-pop{
  border:2px solid var(--ink);border-radius:var(--r-sm);background:var(--white);box-shadow:var(--shadow);overflow:hidden;
}

/* ---------- buttons ---------- */
.shd .shd-btn{
  font-family:'Barlow Condensed',sans-serif;font-weight:700;text-transform:uppercase;letter-spacing:.02em;font-size:16px;
  display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 17px;
  border:2px solid var(--ink);border-radius:var(--r-sm);background:var(--white);color:var(--ink);cursor:pointer;text-decoration:none;
  box-shadow:var(--shadow);transition:transform .05s,box-shadow .05s;white-space:nowrap;
}
.shd .shd-btn:active{transform:translate(3px,3px);box-shadow:0 0 0 var(--ink)}
.shd .shd-btn svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2.4}
.shd .shd-btn-primary{background:var(--blue);color:#04222f}
.shd .shd-btn-amber{background:var(--amber);color:#3a2403}
.shd .shd-btn-ink{background:var(--ink);color:var(--paper)}
.shd .shd-btn-sm{font-size:14px;padding:8px 13px;box-shadow:var(--shadow-sm)}
.shd .shd-btn-sm:active{transform:translate(2px,2px)}
.shd .shd-btn-block{width:100%}

/* ============ CONTENT ============ */
.shd .shd-page-head{margin-bottom:26px}
.shd .shd-page-head h1{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:46px;line-height:1;letter-spacing:-.005em;color:var(--ink);text-wrap:balance}
.shd .shd-page-head .shd-date{
  font-family:'JetBrains Mono',monospace;font-size:12.5px;color:var(--steel);letter-spacing:.04em;margin-top:8px;
  display:inline-flex;align-items:center;gap:8px;
}
.shd .shd-page-head .shd-date::before{content:"";width:14px;height:2px;background:var(--amber)}

/* KPI strip */
.shd .shd-kpis{display:grid;grid-template-columns:repeat(4,1fr);margin-bottom:26px;
  border:2px solid var(--ink);border-radius:var(--r);background:var(--white);box-shadow:var(--shadow);overflow:hidden}
.shd .shd-kpi{padding:18px 20px;border-right:2px solid var(--line)}
.shd .shd-kpi:last-child{border-right:none}
.shd .shd-kpi .shd-k{font-family:'JetBrains Mono',monospace;font-size:11px;text-transform:uppercase;letter-spacing:.08em;
  color:var(--steel);display:flex;align-items:center;gap:7px}
.shd .shd-kpi .shd-k .shd-dot{width:7px;height:7px;border-radius:2px;flex:0 0 auto}
.shd .shd-kpi .shd-v{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:38px;line-height:1;margin-top:8px;color:var(--ink)}
.shd .shd-kpi .shd-t{font-family:'JetBrains Mono',monospace;font-size:11px;margin-top:6px;display:flex;align-items:center;gap:5px}
.shd .shd-kpi .shd-t.up{color:var(--green)}
.shd .shd-kpi .shd-t.down{color:var(--red)}
.shd .shd-kpi .shd-t.flat{color:var(--steel)}

/* card */
.shd .shd-card{border:2px solid var(--ink);border-radius:var(--r);background:var(--white);box-shadow:var(--shadow);overflow:hidden}
.shd .shd-card-head{display:flex;align-items:flex-start;gap:14px;padding:20px 22px;border-bottom:2px solid var(--ink)}
.shd .shd-card-head .shd-ttl{flex:1 1 auto;min-width:0}
.shd .shd-card-head h2{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:27px;line-height:1;color:var(--ink)}
.shd .shd-card-head .shd-sub{font-size:13.5px;color:var(--steel);margin-top:5px}
.shd .shd-card-body{padding:22px}

.shd .shd-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.shd .shd-grid-2.wide-right{grid-template-columns:1fr 1.15fr}
.shd .shd-subhead{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:23px;margin-bottom:14px;color:var(--ink);
  display:flex;align-items:center;justify-content:space-between;gap:12px}
.shd .shd-subhead .shd-pill{font-family:'JetBrains Mono',monospace;font-size:11px;font-weight:700;background:var(--amber);color:#3a2403;border-radius:6px;padding:3px 8px}

/* empty success */
.shd .shd-allclear{display:flex;align-items:center;gap:13px;padding:18px;border:2px dashed var(--line-2);border-radius:var(--r-sm);background:var(--paper-2)}
.shd .shd-allclear .shd-ck{width:36px;height:36px;border-radius:9px;background:var(--green);color:#fff;display:grid;place-items:center;flex:0 0 auto;border:2px solid #0c4a30}
.shd .shd-allclear .shd-ck svg{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:2.6}
.shd .shd-allclear .shd-tx{font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:18px;text-transform:uppercase;color:var(--ink)}
.shd .shd-allclear .shd-tx small{display:block;font-family:'Barlow',sans-serif;font-weight:500;font-size:12.5px;color:var(--steel);text-transform:none;letter-spacing:0}

/* invoice / contract rows */
.shd .shd-list{display:grid;gap:12px}
.shd .shd-row{
  border:2px solid var(--ink);border-radius:var(--r-sm);background:var(--white);padding:14px 16px;box-shadow:var(--shadow-sm);
  display:grid;grid-template-columns:1fr auto;gap:8px 14px;align-items:start;transition:transform .08s,box-shadow .08s;
}
.shd .shd-row.alert{border-color:var(--red);background:var(--red-wash)}
.shd .shd-row:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--ink)}
.shd .shd-row .shd-num{font-family:'JetBrains Mono',monospace;font-size:12.5px;font-weight:500;color:var(--ink);word-break:break-all}
.shd .shd-row .shd-cust{font-size:13px;color:var(--steel);margin-top:2px}
.shd .shd-row .shd-right{text-align:right}
.shd .shd-row .shd-st{font-family:'JetBrains Mono',monospace;font-size:10px;text-transform:uppercase;letter-spacing:.06em;
  color:var(--blue-deep);background:var(--blue-wash);border-radius:5px;padding:2px 7px;display:inline-block}
.shd .shd-row .shd-st.overdue{color:var(--red);background:var(--red-wash)}
.shd .shd-row .shd-amt{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:24px;line-height:1;margin-top:6px;color:var(--ink)}
.shd .shd-row .shd-act{grid-column:1 / -1;margin-top:4px;display:flex;gap:8px;flex-wrap:wrap}
.shd .shd-row .shd-act .shd-btn{flex:1 1 auto}

/* business health bars */
.shd .shd-health{display:grid;gap:14px}
.shd .shd-bar-row .shd-bl{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}
.shd .shd-bar-row .shd-lab{font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:16px;text-transform:uppercase;color:var(--ink)}
.shd .shd-bar-row .shd-val{font-family:'JetBrains Mono',monospace;font-size:13px;font-weight:700;color:var(--ink)}
.shd .shd-bar{height:14px;border:2px solid var(--ink);border-radius:8px;background:var(--paper-2);overflow:hidden}
.shd .shd-bar i{display:block;height:100%;background:var(--blue)}
.shd .shd-bar.amber i{background:var(--amber)}
.shd .shd-bar.green i{background:var(--green)}
.shd .shd-bar.red i{background:var(--red)}

/* sparkline panel */
.shd .shd-spark{border:2px solid var(--ink);border-radius:var(--r-sm);background:var(--paper-2);padding:14px;margin-top:18px}
.shd .shd-spark-legend{margin-top:10px;display:flex;flex-wrap:wrap;gap:6px 16px;font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--steel)}
.shd .shd-spark-legend .dot{width:8px;height:8px;border-radius:2px;display:inline-block;margin-right:5px}

/* jobs to watch */
.shd .shd-job{display:flex;align-items:center;gap:14px;padding:13px 0;border-bottom:1px solid var(--line);text-decoration:none}
.shd .shd-job:last-child{border-bottom:none}
.shd .shd-job .shd-meter{width:54px;height:46px;flex:0 0 auto;border-radius:11px;border:2px solid var(--ink);
  display:grid;place-items:center;font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:15px;background:var(--red-wash);color:var(--red)}
.shd .shd-job .shd-meter.warn{background:#fbf0dc;color:#a9710c}
.shd .shd-job .shd-jinfo{flex:1 1 auto;min-width:0}
.shd .shd-job .shd-jn{font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:18px;text-transform:uppercase;line-height:1.05;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.shd .shd-job .shd-jm{font-size:13px;color:var(--steel);margin-top:3px}
.shd .shd-job .shd-arrow{color:var(--steel-2);flex:0 0 auto}
.shd .shd-job .shd-arrow svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2.2}

/* ============ BUTTON EXTRAS (ghost / xs) ============ */
.shd .shd-btn-ghost{background:var(--white);color:var(--ink-soft);box-shadow:none;border-color:var(--line-2)}
.shd .shd-btn-ghost:hover{border-color:var(--ink);color:var(--ink);box-shadow:var(--shadow-sm)}
.shd .shd-btn-ghost:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.shd .shd-btn-xs{font-size:13px;padding:6px 11px;border-radius:8px;box-shadow:var(--shadow-sm)}
.shd .shd-btn-xs:active{transform:translate(2px,2px)}

/* ============ STATUS BADGES ============ */
.shd .shd-stbadge{font-family:'JetBrains Mono',monospace;font-size:10.5px;font-weight:700;text-transform:uppercase;
  letter-spacing:.05em;padding:4px 9px;border-radius:6px;border:1.5px solid;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.shd .shd-stbadge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex:0 0 auto}
.shd .shd-stbadge.accepted,.shd .shd-stbadge.paid,.shd .shd-stbadge.signed,.shd .shd-stbadge.completed,.shd .shd-stbadge.active{background:var(--green-wash);color:#136a45;border-color:#bcdcc9}
.shd .shd-stbadge.sent,.shd .shd-stbadge.viewed,.shd .shd-stbadge.quote{background:var(--blue-wash);color:var(--blue-deep);border-color:#bfe0f1}
.shd .shd-stbadge.draft,.shd .shd-stbadge.void,.shd .shd-stbadge.pending{background:var(--paper-2);color:var(--steel);border-color:var(--line-2)}
.shd .shd-stbadge.overdue,.shd .shd-stbadge.declined,.shd .shd-stbadge.failed,.shd .shd-stbadge.cancelled{background:var(--red-wash);color:var(--red);border-color:#e6c4bf}
.shd .shd-stbadge.lead,.shd .shd-stbadge.partial,.shd .shd-stbadge.partially_paid{background:#fbf0dc;color:#a9710c;border-color:#ecd6ae}

/* ============ TABLE TOOLBAR ============ */
.shd .shd-tbl-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:22px;border:2px solid var(--ink);
  border-radius:var(--r);background:var(--white);box-shadow:var(--shadow);padding:14px 16px;flex-wrap:wrap}
.shd .shd-tbl-toolbar .shd-search{flex:1 1 260px}
.shd .shd-tbl-toolbar .shd-search input{box-shadow:none;width:100%}
.shd .shd-tbl-toolbar .shd-filters{display:flex;gap:8px;flex:0 0 auto;flex-wrap:wrap}

/* ============ DATA TABLE ============ */
.shd .shd-tbl-wrap{border:2px solid var(--ink);border-radius:var(--r);background:var(--white);box-shadow:var(--shadow);overflow:hidden}
.shd .shd-tbl-scroll{overflow-x:auto}
.shd .shd-table{width:100%;border-collapse:collapse;min-width:840px}
.shd .shd-table thead th{font-family:'JetBrains Mono',monospace;font-size:11px;font-weight:700;text-transform:uppercase;
  letter-spacing:.07em;color:var(--steel);text-align:left;padding:14px 18px;background:var(--paper-2);
  border-bottom:2px solid var(--ink);white-space:nowrap}
.shd .shd-table thead th.num,.shd .shd-table thead th.act{text-align:right}
.shd .shd-table thead th a{color:var(--steel);text-decoration:none;display:inline-flex;align-items:center;gap:6px}
.shd .shd-table thead th a:hover{color:var(--ink)}
.shd .shd-table tbody td{padding:15px 18px;border-bottom:1px solid var(--line);font-size:14px;vertical-align:middle;color:var(--ink)}
.shd .shd-table tbody tr:last-child td{border-bottom:none}
.shd .shd-table tbody tr{transition:background .1s}
.shd .shd-table tbody tr:hover{background:var(--paper)}
.shd .shd-table .shd-lnk{font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:17px;color:var(--blue-deep);
  text-decoration:none;text-transform:uppercase;letter-spacing:.005em}
.shd .shd-table .shd-lnk:hover{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:2px}
.shd .shd-table td.cust{color:var(--ink-soft);font-weight:500}
.shd .shd-table td.num,.shd .shd-table td.amt{text-align:right}
.shd .shd-table td.amt{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:19px;white-space:nowrap}
.shd .shd-table td.date{font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--steel);white-space:nowrap}
.shd .shd-table td.act{text-align:right}
.shd .shd-table td.act .row-actions{display:inline-flex;gap:7px;justify-content:flex-end;flex-wrap:wrap}

/* table footer wraps the existing pager */
.shd .shd-tbl-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;
  border-top:2px solid var(--ink);background:var(--paper-2);flex-wrap:wrap}
.shd .shd-tbl-foot .shd-count{font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--steel);text-transform:uppercase;letter-spacing:.05em}

/* ===== rugged pager (matches design) — used by render_pagination everywhere in the shell ===== */
.shd .pager{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.shd .pager .pager-pages{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.shd .pager .pg{min-width:36px;height:36px;padding:0 9px;border:2px solid var(--ink);border-radius:8px;
  background:var(--white);font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:16px;
  display:inline-grid;place-items:center;cursor:pointer;color:var(--ink);box-shadow:var(--shadow-sm);
  transition:transform .05s,box-shadow .05s;text-decoration:none}
.shd .pager .pg:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.shd .pager .pg:hover{background:var(--paper)}
.shd .pager .pg.active{background:var(--blue);color:#04222f}
.shd .pager .pg.active:hover{background:var(--blue)}
.shd .pager .pg.nav{display:inline-flex;gap:6px;align-items:center;text-transform:uppercase;font-size:14px;padding:0 12px}
.shd .pager .pg.nav svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2.4}
.shd .pager .pg.disabled{opacity:.4;pointer-events:none;box-shadow:none}
.shd .pager .pg.gap{border:none;box-shadow:none;background:transparent;cursor:default;color:var(--steel)}

/* ============ EMPTY STATE ============ */
.shd .shd-empty{border:2px dashed var(--line-2);border-radius:var(--r);background:var(--paper-2);
  padding:48px 24px;text-align:center}
.shd .shd-empty h3{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:24px;color:var(--ink);margin-top:14px}
.shd .shd-empty p{font-size:14px;color:var(--steel);margin-top:6px}
.shd .shd-empty .shd-btn{margin-top:18px}

/* ============ BUSINESS CONFIG SUB-NAV ============ */
.shd .shd-subnav{border:2px solid var(--ink);border-radius:var(--r);background:var(--white);box-shadow:var(--shadow);
  padding:10px;margin-bottom:26px;display:flex;flex-wrap:wrap;gap:8px}
.shd .shd-subnav a{display:inline-flex;align-items:center;gap:9px;font-family:'Barlow Condensed',sans-serif;font-weight:700;
  font-size:16px;text-transform:uppercase;letter-spacing:.01em;color:var(--ink-soft);text-decoration:none;
  padding:9px 14px;border:2px solid transparent;border-radius:var(--r-sm);transition:background .12s,color .12s,border-color .12s;white-space:nowrap}
.shd .shd-subnav a .shd-subnav-ico{width:18px;height:18px;flex:0 0 auto;display:grid;place-items:center}
.shd .shd-subnav a .shd-subnav-ico svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.9}
.shd .shd-subnav a:hover{background:var(--paper-2);color:var(--ink)}
.shd .shd-subnav a.active{background:var(--ink);color:var(--paper);border-color:#04222f;box-shadow:2px 2px 0 var(--blue-ink)}
/* on phones the tab row scrolls sideways instead of wrapping into a tall stack */
@media(max-width:680px){
  .shd .shd-subnav{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .shd .shd-subnav::-webkit-scrollbar{display:none}
  .shd .shd-subnav a{flex:0 0 auto}
}

/* mini inline tag (REC / AUTO / SUB) */
.shd .shd-tag{font-family:'JetBrains Mono',monospace;font-size:9px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
  border:1.5px solid var(--line-2);border-radius:4px;padding:1px 5px;color:var(--steel);background:var(--paper-2);margin-left:6px;white-space:nowrap}

/* danger row button */
.shd .shd-btn-danger{color:var(--red);border-color:#e6c4bf;background:var(--white);box-shadow:none}
.shd .shd-btn-danger:hover{border-color:var(--red);background:var(--red-wash)}
.shd .shd-btn-danger:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}

/* header count chip */
.shd .shd-chip{display:inline-flex;align-items:center;gap:6px;font-family:'JetBrains Mono',monospace;font-size:11px;font-weight:700;
  text-transform:uppercase;letter-spacing:.04em;padding:5px 10px;border:1.5px solid;border-radius:7px;white-space:nowrap}
.shd .shd-chip .d{width:7px;height:7px;border-radius:50%;background:currentColor;flex:0 0 auto}
.shd .shd-chip.green{color:#136a45;border-color:#bcdcc9;background:var(--green-wash)}
.shd .shd-chip.red{color:var(--red);border-color:#e6c4bf;background:var(--red-wash)}

/* inline select used inside table cells (transactions job attach) */
.shd .shd-inp-sm{border:2px solid var(--ink);border-radius:8px;background:var(--white);padding:7px 10px;
  font-family:'Barlow',sans-serif;font-size:13px;color:var(--ink);box-shadow:var(--shadow-sm)}
.shd .shd-inp-sm:focus{outline:none;border-color:var(--blue);box-shadow:2px 2px 0 var(--blue-ink)}

/* ============ GLOBAL FORM CONTROLS — rugged reskin ============
   Element-scoped under .shd so every dashboard form picks up the rugged look
   with no markup changes. More specific helpers (.shd-search input, .shd-inp-sm)
   still win. Signed-out / portal pages are outside .shd and unaffected. */
.shd input[type="text"],.shd input[type="email"],.shd input[type="tel"],.shd input[type="url"],
.shd input[type="password"],.shd input[type="number"],.shd input[type="search"],.shd input[type="date"],
.shd input[type="datetime-local"],.shd input[type="time"],.shd input[type="month"],.shd input[type="week"],
.shd input:not([type]),.shd textarea,.shd select{
  border:2px solid var(--ink);border-radius:var(--r-sm);background:var(--white);
  padding:10px 13px;font-family:'Barlow',sans-serif;font-size:14.5px;color:var(--ink);line-height:1.3;
  box-shadow:var(--shadow-sm);transition:border-color .12s,box-shadow .12s;
}
.shd input::placeholder,.shd textarea::placeholder{color:var(--steel-2)}
.shd input:focus,.shd textarea:focus,.shd select:focus{outline:none;border-color:var(--blue);box-shadow:2px 2px 0 var(--blue-ink)}
.shd input:disabled,.shd textarea:disabled,.shd select:disabled{background:var(--paper-2);color:var(--steel);cursor:not-allowed}
.shd textarea{resize:vertical;min-height:90px}
.shd select{
  -webkit-appearance:none;appearance:none;cursor:pointer;padding-right:38px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2317191d' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 13px center;background-size:16px;
}
.shd select[multiple]{background-image:none;padding-right:13px}
/* Leading-icon / prefix inputs need room for the glyph. The global reskin above uses
   attribute selectors (input[type="search"]/[type="number"]) that TIE on specificity
   with these icon helpers, so without this they'd reset the padding and the icon/$/%
   would sit on top of the text. Re-assert the icon padding after the global block. */
.shd .shd-search input{padding:0 40px 0 42px}
.shd .numwrap input{padding-left:24px}
.shd .numwrap.cur input{padding-left:24px}
.shd .iv-numwrap .iv-din{padding-left:24px}
/* checkboxes & radios — native accent keeps every toggle working, just rugged-colored */
.shd input[type="checkbox"],.shd input[type="radio"]{accent-color:var(--blue);width:17px;height:17px;cursor:pointer;box-shadow:none}
.shd input[type="checkbox"]:focus,.shd input[type="radio"]:focus{outline:2px solid var(--blue);outline-offset:1px}
/* range / color keep native sizing, just remove the heavy border treatment */
.shd input[type="range"],.shd input[type="color"]{border:none;box-shadow:none;padding:0;background:transparent}
/* labels inside dashboard forms */
.shd form label,.shd .shd-flabel{font-family:'Barlow',sans-serif;font-weight:600;color:var(--ink)}

/* unify ALL dashboard page headings to the rugged condensed type (keeps existing colors/sizes) */
.shd h1,.shd h2,.shd h3,.shd h4{font-family:'Barlow Condensed',sans-serif;font-weight:800;letter-spacing:-.005em}

/* ============ GLOBAL BUTTON RESKIN ============
   Reskins the app button system (.ff-button via the button_classes helper) inside
   the dashboard only. Padding/sizing stays from the size utilities; we override
   look + color. !important is required to beat theme.css's `color:#fff !important`. */
.shd .ff-button{
  font-family:'Barlow Condensed',sans-serif;font-weight:700;text-transform:uppercase;letter-spacing:.02em;font-size:14px;
  display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:8px 13px;white-space:nowrap;
  border:2px solid var(--ink);border-radius:var(--r-sm);box-shadow:var(--shadow-sm);background-image:none;
  transition:transform .05s,box-shadow .05s;
}
.shd .ff-button:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.shd .ff-button svg{width:16px;height:16px}

.shd .ff-button--primary{background:var(--blue);box-shadow:var(--shadow-sm)}
.shd .ff-button--primary,.shd .ff-button--primary *{color:#04222f !important}
.shd .ff-button--primary:hover{background:var(--blue);box-shadow:var(--shadow)}

.shd .ff-button--secondary,.shd .ff-button--subtle{background:var(--white);border:2px solid var(--line-2);box-shadow:none}
.shd .ff-button--secondary,.shd .ff-button--secondary *,.shd .ff-button--subtle,.shd .ff-button--subtle *{color:var(--ink-soft) !important}
.shd .ff-button--secondary:hover,.shd .ff-button--subtle:hover{border-color:var(--ink);box-shadow:var(--shadow-sm)}

.shd .ff-button--ghost{background:transparent;border:2px solid var(--line-2);box-shadow:none}
.shd .ff-button--ghost,.shd .ff-button--ghost *{color:var(--ink-soft) !important}
.shd .ff-button--ghost:hover{background:var(--paper-2);border-color:var(--ink)}

.shd .ff-button--danger{background:var(--red);border-color:var(--ink);box-shadow:var(--shadow-sm)}
.shd .ff-button--danger,.shd .ff-button--danger *{color:#fff !important}
.shd .ff-button--danger:hover{box-shadow:var(--shadow)}

/* responsive */
@media(max-width:1080px){
  .shd .shd-kpis{grid-template-columns:1fr 1fr}
  .shd .shd-kpi:nth-child(2){border-right:none}
  .shd .shd-kpi:nth-child(1),.shd .shd-kpi:nth-child(2){border-bottom:2px solid var(--line)}
  .shd .shd-grid-2,.shd .shd-grid-2.wide-right{grid-template-columns:1fr}
}
@media(max-width:640px){
  .shd .shd-kpis{grid-template-columns:1fr}
  .shd .shd-kpi{border-right:none;border-bottom:2px solid var(--line)}
  .shd .shd-kpi:last-child{border-bottom:none}
  .shd .shd-page-head h1{font-size:34px}
}

/* ============ MENU REDESIGN — hamburger + unified account menu ============ */
/* sidebar account block becomes a button: online dot + caret + open state */
.shd .shd-acct{width:100%;font-family:inherit;background:transparent;text-align:left;border:2px solid transparent;cursor:pointer}
.shd .shd-acct .shd-pfp{position:relative}
.shd .shd-acct .shd-pfp .shd-dot{position:absolute;right:-3px;bottom:-3px;width:11px;height:11px;border-radius:50%;background:var(--green);border:2px solid var(--ink)}
.shd .shd-acct .shd-caret{color:var(--steel-2);flex:0 0 auto;display:grid;transition:transform .16s,color .14s}
.shd .shd-acct .shd-caret svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:2.2}
.shd .shd-acct:hover .shd-caret{color:var(--paper)}
.shd .shd-acct[aria-expanded="true"]{background:var(--ink-2);border-color:var(--line-ink)}
.shd .shd-acct[aria-expanded="true"] .shd-caret{transform:rotate(180deg);color:var(--paper)}
/* topbar avatar open state */
.shd .shd-top-user .shd-cv{transition:transform .16s}
.shd .shd-top-user[aria-expanded="true"]{background:var(--blue-wash);border-color:var(--blue)}
.shd .shd-top-user[aria-expanded="true"] .shd-cv{transform:rotate(180deg)}

/* account menu popover (rendered inside .shd so the design tokens inherit) */
.shd-acct-menu{position:fixed;z-index:95;width:288px;background:var(--white);border:2px solid var(--ink);border-radius:var(--r);
  box-shadow:5px 5px 0 var(--ink);overflow:hidden;opacity:0;transform:translateY(6px) scale(.99);pointer-events:none;
  transition:opacity .14s,transform .14s;font-family:'Barlow',system-ui,sans-serif}
.shd-acct-menu.open{opacity:1;transform:none;pointer-events:auto}
.shd-acct-menu .am-head{display:flex;gap:12px;align-items:center;padding:16px;border-bottom:2px solid var(--line)}
.shd-acct-menu .am-pfp{width:46px;height:46px;border-radius:11px;flex:0 0 auto;background:var(--amber);color:#3a2403;border:2px solid #04222f;
  display:grid;place-items:center;font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:19px;object-fit:cover}
.shd-acct-menu .am-id{min-width:0}
.shd-acct-menu .am-nm{display:block;font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:20px;line-height:1.05;color:var(--ink)}
.shd-acct-menu .am-em{display:block;font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--steel);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.shd-acct-menu .am-plan{display:flex;align-items:center;gap:11px;padding:12px 16px;background:var(--paper-2);border-bottom:2px solid var(--line)}
.shd-acct-menu .am-pl-badge{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:10px;letter-spacing:.05em;background:var(--blue);color:#04222f;border:2px solid #04222f;border-radius:6px;padding:4px 7px;flex:0 0 auto}
.shd-acct-menu .am-pl-txt{flex:1 1 auto;min-width:0}
.shd-acct-menu .am-pl-txt strong{display:block;font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:15px;text-transform:uppercase;line-height:1.1;color:var(--ink)}
.shd-acct-menu .am-pl-txt span{display:block;font-family:'JetBrains Mono',monospace;font-size:10.5px;color:var(--steel)}
.shd-acct-menu .am-pl-link{font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:14px;text-transform:uppercase;color:var(--blue-deep);text-decoration:none;flex:0 0 auto;white-space:nowrap}
.shd-acct-menu .am-pl-link:hover{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:2px}
.shd-acct-menu .am-nav{padding:8px}
.shd-acct-menu .am-foot{padding:8px;border-top:2px solid var(--line)}
.shd-acct-menu .am-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--r-sm);
  font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:16.5px;text-transform:uppercase;letter-spacing:.01em;
  color:var(--ink-soft);text-decoration:none;border:2px solid transparent;transition:background .12s,color .12s,border-color .12s;
  white-space:nowrap;width:100%;background:transparent;cursor:pointer;text-align:left}
.shd-acct-menu .am-item svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.9;flex:0 0 auto;color:var(--steel)}
.shd-acct-menu .am-item:hover{background:var(--paper-2);color:var(--ink)}
.shd-acct-menu .am-item:hover svg{color:var(--ink)}
.shd-acct-menu .am-signout{color:var(--red)}
.shd-acct-menu .am-signout svg{color:var(--red)}
.shd-acct-menu .am-signout:hover{background:var(--red-wash);color:var(--red);border-color:#e6c4bf}
.shd-acct-menu .am-signout form{margin:0}
.shd-acct-menu .am-signout button{width:100%}

/* ===========================================================================
   DARK THEME — "asphalt & steel". Activated by data-theme="dark" on <body>
   (server-rendered) or .dark on <html> (live theme toggle). Because the whole
   rugged system reads from these tokens, remapping them flips the entire shell,
   the rugged index tables, and the account menu at once.
   =========================================================================== */
:is([data-theme="dark"], .dark) .shd{
  --paper:#111419; --paper-2:#171b21; --paper-3:#1d222a; --white:#1a1e25;
  --ink:#e4ddcc; --ink-2:#23272f; --ink-3:#2c313a; --ink-soft:#cdd2da;
  --steel:#8b929c; --steel-2:#727983; --steel-3:#aab0b8;
  --line:#2b3038; --line-2:#363c45; --line-ink:#343a43;
  --blue:#27b2f2; --blue-deep:#63c6f3; --blue-press:#3aa9e6; --blue-ink:#04222f; --blue-wash:#0f3040;
  --amber:#f5a31f; --green:#33b87c; --green-wash:#123221; --red:#e35c4d; --red-wash:#371c19;
  --shadow:3px 3px 0 #000; --shadow-sm:2px 2px 0 #000;
}
/* rail stays deep dark (it uses --ink as bg + --paper as light text in light
   mode — both invert under the remap, so pin them back) */
:is([data-theme="dark"], .dark) .shd .shd-rail{background:#0b0d11}
:is([data-theme="dark"], .dark) .shd .shd-wordmark,
:is([data-theme="dark"], .dark) .shd .shd-nav-item:hover,
:is([data-theme="dark"], .dark) .shd .shd-acct .shd-nm{color:#f3efe6}
/* table row hover should lift lighter than the card, not sink darker */
:is([data-theme="dark"], .dark) .shd .shd-table tbody tr:hover{background:#22272f}
/* select caret art is a baked dark stroke — swap to light */
:is([data-theme="dark"], .dark) .shd select,
:is([data-theme="dark"], .dark) .shd .shd-inp-sm{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23e4ddcc' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
}
/* overlays keep black hard shadows (a light shadow glares) */
:is([data-theme="dark"], .dark) .shd-acct-menu{box-shadow:5px 5px 0 #000}
/* status badges: dark washes + matching outlines */
:is([data-theme="dark"], .dark) .shd .shd-stbadge.accepted,
:is([data-theme="dark"], .dark) .shd .shd-stbadge.paid,
:is([data-theme="dark"], .dark) .shd .shd-stbadge.signed,
:is([data-theme="dark"], .dark) .shd .shd-stbadge.completed,
:is([data-theme="dark"], .dark) .shd .shd-stbadge.active{background:#123221;color:#52cf95;border-color:#1f4d33}
:is([data-theme="dark"], .dark) .shd .shd-stbadge.sent,
:is([data-theme="dark"], .dark) .shd .shd-stbadge.viewed,
:is([data-theme="dark"], .dark) .shd .shd-stbadge.quote{background:#0f3040;color:#5cc6f2;border-color:#1d4d64}
:is([data-theme="dark"], .dark) .shd .shd-stbadge.draft,
:is([data-theme="dark"], .dark) .shd .shd-stbadge.pending,
:is([data-theme="dark"], .dark) .shd .shd-stbadge.void{background:#1d222a;color:#9aa0aa;border-color:#363c45}
:is([data-theme="dark"], .dark) .shd .shd-stbadge.overdue,
:is([data-theme="dark"], .dark) .shd .shd-stbadge.declined,
:is([data-theme="dark"], .dark) .shd .shd-stbadge.failed,
:is([data-theme="dark"], .dark) .shd .shd-stbadge.cancelled{background:#371c19;color:#f08a7e;border-color:#5a2c27}
:is([data-theme="dark"], .dark) .shd .shd-stbadge.lead,
:is([data-theme="dark"], .dark) .shd .shd-stbadge.partial,
:is([data-theme="dark"], .dark) .shd .shd-stbadge.partially_paid{background:#33260a;color:#e7b24f;border-color:#5a4516}
/* online dot ring reads against the dark card, not the light --ink */
:is([data-theme="dark"], .dark) .shd .shd-acct .shd-pfp .shd-dot{border-color:#0b0d11}

/* ===========================================================================
   INVOICE BUILDER — rugged "Split" layout (scoped under .shd)
   Reskins app/views/invoices/_form. The line-item table markup is kept so the
   invoice-form Stimulus controller (targets/templates) works unchanged; only
   the look is restyled to the trade-built tokens. Right column = live totals.
   =========================================================================== */
.shd .iv-wrap{max-width:1180px;margin:0 auto;width:100%;padding:24px 16px 40px}
.shd .iv-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;flex-wrap:wrap;margin-bottom:24px}
.shd .iv-head h1{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:44px;line-height:1;color:var(--ink);text-wrap:balance}
.shd .iv-head .sub{font-size:14px;color:var(--steel);margin-top:7px;max-width:54ch}

.shd .iv-split{display:grid;grid-template-columns:minmax(0,1fr) 372px;gap:24px;align-items:start}
.shd .iv-side{position:sticky;top:24px;display:grid;gap:18px}

/* sectioned main card */
.shd .iv-sec{padding:22px 24px}
.shd .iv-sec + .iv-sec{border-top:2px solid var(--line)}
.shd .iv-sec-h{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}
.shd .iv-sec-h h2{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:23px;line-height:1;color:var(--ink);text-transform:none}
.shd .iv-link{appearance:none;border:none;background:transparent;cursor:pointer;font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:15px;text-transform:uppercase;letter-spacing:.02em;color:var(--blue-deep);display:inline-flex;align-items:center;gap:6px;padding:4px 2px}
.shd .iv-link svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2.4}
.shd .iv-link:hover{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}

/* field grids */
.shd .iv-grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.shd .iv-field{display:grid;gap:6px}
.shd .iv-field.col2{grid-column:1 / -1}
.shd .iv-field > label{font-family:'JetBrains Mono',monospace;font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--steel);font-weight:500}
.shd .iv-field .hint{font-size:12px;color:var(--steel)}
.shd .iv-datewrap{position:relative}
.shd .iv-datewrap .cal{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--steel);pointer-events:none}
.shd .iv-datewrap .cal svg{width:16px;height:16px}
.shd .iv-datewrap input{padding-left:38px !important}

/* estimate / template import bars */
.shd .iv-import{display:flex;align-items:center;gap:14px;padding:14px 16px;border:2px solid var(--ink);border-radius:var(--r-sm);background:var(--blue-wash);box-shadow:var(--shadow-sm);margin-bottom:16px;flex-wrap:wrap}
.shd .iv-import.muted{background:var(--paper-2)}
.shd .iv-import .ico{width:38px;height:38px;flex:0 0 auto;border:2px solid #04222f;border-radius:9px;background:var(--blue);display:grid;place-items:center;color:#04222f;box-shadow:inset 0 -3px 0 rgba(0,0,0,.18)}
.shd .iv-import.muted .ico{background:var(--ink);border-color:var(--ink);color:var(--paper);box-shadow:none}
.shd .iv-import .ico svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:2}
.shd .iv-import .tx{flex:1 1 180px;min-width:0}
.shd .iv-import .tx strong{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:17px;text-transform:uppercase;line-height:1;display:block;color:var(--ink)}
.shd .iv-import .tx span{font-size:12px;color:var(--blue-ink);display:block;margin-top:3px}
.shd .iv-import.muted .tx span{color:var(--steel)}
.shd .iv-import form{margin:0;flex:1 1 280px}
.shd .iv-import select{width:100%}

/* line items editor (table kept for the Stimulus controller) */
.shd .iv-lines{border:2px solid var(--ink);border-radius:var(--r-sm);overflow:hidden;box-shadow:var(--shadow-sm);background:var(--white)}
.shd .iv-lines table{width:100%;border-collapse:collapse}
.shd .iv-lines thead th{font-family:'JetBrains Mono',monospace;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--steel);background:var(--paper-2);border-bottom:2px solid var(--ink);padding:11px 10px;text-align:left;white-space:nowrap}
.shd .iv-lines thead th.num{text-align:right}
.shd .iv-lrow{border-bottom:1px solid var(--line);transition:background .1s}
.shd .iv-lrow:last-child{border-bottom:none}
.shd .iv-lrow:hover{background:var(--paper)}
.shd .iv-lrow > td{padding:7px 10px;vertical-align:middle}
.shd .iv-cell-desc{min-width:0}
.shd .iv-lrow .iv-din{width:100%;border:1.5px solid transparent;border-radius:8px;background:transparent;font-family:'Barlow',sans-serif;font-size:14.5px;color:var(--ink);padding:7px 9px;transition:.12s;box-shadow:none}
.shd .iv-lrow .iv-din::placeholder{color:var(--steel-2)}
.shd .iv-lrow .iv-din:hover{border-color:var(--line-2);background:var(--white)}
.shd .iv-lrow .iv-din:focus{outline:none;border-color:var(--blue);background:var(--white);box-shadow:0 0 0 3px var(--blue-wash)}
.shd .iv-lrow .iv-din.r{text-align:right}
.shd .iv-lrow .iv-din.mono{font-family:'JetBrains Mono',monospace;font-size:13px}
.shd .iv-numwrap{position:relative;display:flex;align-items:center}
.shd .iv-numwrap .pre{position:absolute;left:9px;color:var(--steel-2);font-family:'JetBrains Mono',monospace;font-size:13px;pointer-events:none;z-index:1}
.shd .iv-numwrap.cur .iv-din{padding-left:20px}
.shd .iv-amt{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:18px;text-align:right;white-space:nowrap;color:var(--ink);display:block}
.shd .iv-cost-amt{font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--steel);text-align:right;white-space:nowrap;display:block}
.shd .iv-del-cell{text-align:center}
.shd .iv-del{width:30px;height:30px;border:2px solid var(--line-2);border-radius:8px;background:var(--white);cursor:pointer;display:grid;place-items:center;color:var(--steel);transition:.12s;margin:0 auto}
.shd .iv-del svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2.2}
.shd .iv-del:hover{border-color:var(--red);color:var(--red);background:var(--red-wash)}

/* add line + catalog picker */
.shd .iv-addbar{margin-top:14px;position:relative}
.shd .iv-add{width:100%;display:inline-flex;align-items:center;gap:9px;border:2px dashed var(--line-2);border-radius:var(--r-sm);background:var(--white);cursor:pointer;padding:13px 15px;font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:16px;text-transform:uppercase;letter-spacing:.02em;color:var(--ink-soft);transition:.12s}
.shd .iv-add > svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2.4}
.shd .iv-add:hover{border-color:var(--ink);color:var(--ink);border-style:solid;box-shadow:var(--shadow-sm)}
.shd .iv-add .chev{margin-left:auto;transition:transform .16s}
.shd .iv-add .chev.rotate-180{transform:rotate(180deg)}
.shd .iv-catalog{position:absolute;z-index:30;top:calc(100% + 8px);left:0;right:0;background:var(--white);border:2px solid var(--ink);border-radius:var(--r);box-shadow:5px 5px 0 var(--ink);overflow:hidden}
.shd .iv-catalog .iv-cat-search{padding:10px;border-bottom:2px solid var(--line)}
.shd .iv-catalog .iv-cat-search input{width:100%}
.shd .iv-catalog .iv-cat-list{max-height:288px;overflow-y:auto}
.shd .iv-catalog .iv-cat-foot{border-top:2px solid var(--line)}
.shd .iv-catalog .iv-cat-custom{display:flex;align-items:center;gap:9px;width:100%;padding:12px 14px;background:transparent;border:none;cursor:pointer;font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:15px;text-transform:uppercase;letter-spacing:.01em;color:var(--blue-deep)}
.shd .iv-catalog .iv-cat-custom:hover{background:var(--blue-wash)}
.shd .iv-catalog .iv-cat-custom svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2.2}

/* taxes editor */
.shd .iv-tax-list{display:grid;gap:10px}
.shd .iv-tax-item{display:grid;grid-template-columns:minmax(0,1fr) 96px minmax(0,1.1fr) 36px;gap:10px;align-items:center}
.shd .iv-tax-item input{width:100%}
.shd .iv-tax-pct{position:relative}
.shd .iv-tax-pct input{text-align:right;padding-right:26px}
.shd .iv-tax-pct .pc{position:absolute;right:11px;top:50%;transform:translateY(-50%);color:var(--steel);font-family:'JetBrains Mono',monospace;font-size:13px;pointer-events:none}
.shd .iv-tax-del{width:34px;height:34px;border:2px solid var(--line-2);border-radius:8px;background:var(--white);cursor:pointer;display:grid;place-items:center;color:var(--steel);transition:.12s}
.shd .iv-tax-del:hover{border-color:var(--red);color:var(--red);background:var(--red-wash)}
.shd .iv-tax-del svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2.2}

/* deposit */
.shd .iv-deptoggle{display:flex;align-items:center;gap:11px;cursor:pointer}
.shd .iv-deptoggle .tx strong{display:block;font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:18px;text-transform:uppercase;color:var(--ink);line-height:1}
.shd .iv-deptoggle .tx span{display:block;font-size:12.5px;color:var(--steel);margin-top:3px}
.shd .iv-depbox{margin-top:14px;border:2px solid var(--line-2);border-radius:var(--r-sm);background:var(--paper-2);padding:16px;display:grid;gap:14px}
.shd .iv-mode{display:inline-flex;border:2px solid var(--ink);border-radius:9px;overflow:hidden;box-shadow:var(--shadow-sm);width:fit-content}
.shd .iv-mode label{display:inline-flex;align-items:center;gap:7px;border-right:2px solid var(--line);background:var(--white);cursor:pointer;font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:14px;text-transform:uppercase;letter-spacing:.03em;color:var(--steel);padding:8px 14px;transition:.12s;margin:0}
.shd .iv-mode label:last-child{border-right:none}
.shd .iv-mode label:hover{background:var(--paper-2);color:var(--ink)}
.shd .iv-mode label:has(input:checked){background:var(--blue);color:#04222f}
.shd .iv-mode input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.shd .iv-depfields{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}
.shd .iv-depfields input[type="number"]{width:120px}
.shd .iv-depnote{border:2px solid var(--ink);border-radius:var(--r-sm);background:var(--blue-wash);overflow:hidden}
.shd .iv-depnote .dr{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:10px 14px}
.shd .iv-depnote .dr + .dr{border-top:1.5px solid #bfe0f1}
.shd .iv-depnote .dr .k{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:15px;text-transform:uppercase;color:var(--blue-ink)}
.shd .iv-depnote .dr .v{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:19px;color:var(--blue-ink)}

/* live summary panel */
.shd .iv-summary{border:2px solid var(--ink);border-radius:var(--r);background:var(--white);box-shadow:var(--shadow);overflow:hidden}
.shd .iv-summary-h{padding:15px 20px;border-bottom:2px solid var(--ink);background:var(--ink);color:var(--paper);display:flex;align-items:center;justify-content:space-between;gap:10px}
.shd .iv-summary-h h3{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:21px;text-transform:uppercase;color:var(--paper)}
.shd .iv-summary-h .cnt{font-family:'JetBrains Mono',monospace;font-size:10.5px;color:var(--blue);letter-spacing:.06em;display:flex;align-items:center;gap:6px}
.shd .iv-summary-h .cnt::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--blue)}
.shd .iv-summary-b{padding:16px 20px}
.shd .iv-summary-b .iv-srow,.shd .iv-summary-b [data-invoice-form-target="taxBreakdown"] > div{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:6px 0;font-size:14px;color:var(--steel)}
.shd .iv-summary-b .iv-srow .v,.shd .iv-summary-b [data-invoice-form-target="taxBreakdown"] dd{font-family:'JetBrains Mono',monospace;font-size:13.5px;font-weight:500;color:var(--ink);white-space:nowrap}
.shd .iv-srule{height:2px;background:var(--line);margin:8px 0}
.shd .iv-stotal{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:10px 0 2px}
.shd .iv-stotal .k{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:21px;text-transform:uppercase;color:var(--ink)}
.shd .iv-stotal .v{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:32px;line-height:1;color:var(--ink)}
.shd .iv-costsum{margin-bottom:8px;padding-bottom:10px;border-bottom:2px dashed var(--line-2);display:grid;gap:5px}
.shd .iv-costsum .cr{display:flex;align-items:baseline;justify-content:space-between;gap:12px;font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--steel)}
.shd .iv-costsum .cr.profit{color:var(--green)}
.shd .iv-summary-foot{padding:16px 20px;border-top:2px solid var(--line);display:grid;gap:10px}
.shd .iv-summary-foot .shd-btn{width:100%}

/* responsive */
@media(max-width:1080px){
  .shd .iv-split{grid-template-columns:1fr}
  .shd .iv-side{position:static}
}
@media(max-width:680px){
  .shd .iv-grid2,.shd .iv-tax-item{grid-template-columns:1fr}
  .shd .iv-tax-item{gap:8px}
  .shd .iv-head h1{font-size:34px}
}

/* editor card — no overflow clip so the catalog picker can drop past a section edge */
.shd .iv-editor{border:2px solid var(--ink);border-radius:var(--r);background:var(--white);box-shadow:var(--shadow)}

/* ===========================================================================
   ESTIMATE BUILDER — rugged 5-step wizard (scoped under .shd)
   Reskins estimates/new · sections · review_sections · deliver_form.
   Section editing stays modal-driven (server) — rows are display rows, the
   ledger + client-quote rail re-renders with the estimate-sections-table frame.
   =========================================================================== */
.shd .est-wrap{max-width:1320px;margin:0 auto;width:100%}
.shd .est-eyebrow{font-family:'JetBrains Mono',monospace;font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--steel);display:flex;align-items:center;gap:8px;margin-bottom:9px}
.shd .est-eyebrow::before{content:"";width:16px;height:2px;background:var(--amber)}
.shd .est-head h1{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:44px;line-height:1;color:var(--ink);text-transform:none}
.shd .est-head .sub{font-size:14px;color:var(--steel);margin-top:7px;max-width:60ch}

/* stepper */
.shd .est-stepper{display:flex;align-items:stretch;border:2px solid var(--ink);border-radius:var(--r);background:var(--white);box-shadow:var(--shadow);overflow:hidden;margin:18px 0 26px}
.shd .est-step{flex:1 1 0;display:flex;align-items:center;gap:11px;padding:14px 16px;border-right:2px solid var(--line);position:relative;text-decoration:none;transition:background .12s;min-width:0;overflow:hidden}
.shd .est-step:last-child{border-right:none}
.shd .est-step.link:hover{background:var(--paper)}
.shd .est-step .sn{width:28px;height:28px;flex:0 0 auto;border:2px solid var(--ink);border-radius:8px;background:var(--white);display:grid;place-items:center;font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:15px;color:var(--ink);transition:.14s}
.shd .est-step .sn svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:3}
.shd .est-step .sname{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:17px;text-transform:uppercase;letter-spacing:.01em;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink)}
.shd .est-step.done .sn{background:var(--green);border-color:#0c4a30;color:#fff}
.shd .est-step.active{background:var(--ink)}
.shd .est-step.active .sn{background:var(--amber);border-color:#3a2403;color:#3a2403}
.shd .est-step.active .sname{color:var(--paper)}
.shd .est-step.locked{opacity:.5;pointer-events:none}
@media(max-width:920px){.shd .est-step .sname{display:none}.shd .est-step{justify-content:center;padding:13px}}

/* split + sticky rail */
.shd .est-split{display:grid;grid-template-columns:minmax(0,1fr) 376px;gap:24px;align-items:start}
.shd .est-side{position:sticky;top:24px;display:grid;gap:18px}
@media(max-width:1080px){.shd .est-split{grid-template-columns:1fr}.shd .est-side{position:static}}

.shd .est-card{border:2px solid var(--ink);border-radius:var(--r);background:var(--white);box-shadow:var(--shadow)}
.shd .est-card-h{padding:20px 24px;border-bottom:2px solid var(--line)}
.shd .est-card-h h2{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:25px;text-transform:none;line-height:1;color:var(--ink)}
.shd .est-card-h .d{font-size:13.5px;color:var(--steel);margin-top:6px}
.shd .est-card-b{padding:22px 24px}
.shd .est-form{display:grid;gap:20px;max-width:680px}
.shd .est-form .field{display:grid;gap:6px}
.shd .est-form .field > label,.shd .est-field > label{font-family:'JetBrains Mono',monospace;font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--steel);font-weight:500}
.shd .est-form .field .hint,.shd .est-hint{font-size:12px;color:var(--steel)}

/* section toolbar */
.shd .est-tools{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:18px}
.shd .est-tool{display:inline-flex;align-items:center;gap:8px;border:2px solid var(--ink);border-radius:var(--r-sm);background:var(--white);box-shadow:var(--shadow-sm);cursor:pointer;font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:14px;text-transform:uppercase;letter-spacing:.02em;color:var(--ink);padding:9px 14px;transition:transform .05s,box-shadow .05s;text-decoration:none}
.shd .est-tool svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2.4}
.shd .est-tool:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.shd .est-tool.primary{background:var(--blue);color:#04222f}
.shd .est-tool.amber{background:var(--amber);color:#3a2403}

/* section card */
.shd .sec{border:2px solid var(--ink);border-radius:var(--r);background:var(--white);box-shadow:var(--shadow);margin-bottom:18px;overflow:hidden}
.shd .sec-h{display:flex;align-items:center;gap:13px;padding:15px 18px;background:var(--paper-2);border-bottom:2px solid var(--ink)}
.shd .sec-h .idx{width:30px;height:30px;flex:0 0 auto;border:2px solid var(--ink);border-radius:8px;background:var(--ink);color:var(--paper);display:grid;place-items:center;font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:16px}
.shd .sec-h .nm{flex:1 1 auto;min-width:0}
.shd .sec-h .nm h3{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:22px;text-transform:uppercase;letter-spacing:.005em;color:var(--ink);line-height:1.05;margin:0}
.shd .sec-h .nm p{font-size:12.5px;color:var(--steel);margin-top:3px}
.shd .sec-h .acts{display:flex;gap:8px;flex:0 0 auto;flex-wrap:wrap}

/* section stat strip */
.shd .sec-stats{display:grid;grid-template-columns:repeat(5,1fr);border-bottom:2px solid var(--line)}
.shd .sec-stat{padding:12px 16px;border-right:1px solid var(--line)}
.shd .sec-stat:last-child{border-right:none}
.shd .sec-stat .k{font-family:'JetBrains Mono',monospace;font-size:9.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--steel);display:flex;align-items:center;gap:5px}
.shd .sec-stat .v{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:20px;line-height:1;margin-top:6px;color:var(--ink)}
.shd .sec-stat .v small{font-size:13px;font-weight:700}
.shd .sec-stat.mat{background:var(--blue-wash)}.shd .sec-stat.mat .k,.shd .sec-stat.mat .v{color:var(--blue-ink)}
.shd .sec-stat.lab{background:#fbf4e4}.shd .sec-stat.lab .k,.shd .sec-stat.lab .v{color:#8a5a0c}
.shd .sec-stat.profit{background:var(--green-wash)}.shd .sec-stat.profit .k,.shd .sec-stat.profit .v{color:#136a45}
.shd .sec-stat.profit.neg .k,.shd .sec-stat.profit.neg .v{color:var(--red)}
.shd .sec-stat.price{background:var(--paper-2)}
@media(max-width:680px){.shd .sec-stats{grid-template-columns:1fr 1fr}.shd .sec-stat{border-bottom:1px solid var(--line)}}

/* material / labour columns */
.shd .sec-cols{display:grid;grid-template-columns:1fr 1fr}
.shd .sec-col{padding:16px 18px}
.shd .sec-col:first-child{border-right:2px solid var(--line)}
@media(max-width:760px){.shd .sec-cols{grid-template-columns:1fr}.shd .sec-col:first-child{border-right:none;border-bottom:2px solid var(--line)}}
.shd .sec-col-h{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.shd .sec-col-h .ic{width:30px;height:30px;flex:0 0 auto;border:2px solid var(--ink);border-radius:8px;display:grid;place-items:center;box-shadow:inset 0 -2px 0 rgba(0,0,0,.12)}
.shd .sec-col-h.mat .ic{background:var(--blue);color:#04222f}
.shd .sec-col-h.lab .ic{background:var(--amber);color:#3a2403}
.shd .sec-col-h .ic svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2}
.shd .sec-col-h .t{flex:1 1 auto;min-width:0}
.shd .sec-col-h .t strong{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:18px;text-transform:uppercase;letter-spacing:.01em;display:block;line-height:1;color:var(--ink)}
.shd .sec-col-h .t span{font-size:11.5px;color:var(--steel)}
.shd .sec-col-h .addbtn{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;border:2px solid var(--ink);border-radius:8px;background:var(--white);cursor:pointer;color:var(--ink);box-shadow:var(--shadow-sm);transition:transform .05s,box-shadow .05s;padding:6px 10px;font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:12.5px;text-transform:uppercase;letter-spacing:.02em;text-decoration:none}
.shd .sec-col-h .addbtn svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2.6}
.shd .sec-col-h .addbtn:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}

/* display rows (modal-edited) */
.shd .erow{display:flex;align-items:flex-start;gap:10px;padding:9px 0;border-bottom:1px solid var(--line)}
.shd .erow:last-of-type{border-bottom:none}
.shd .erow .ei{flex:1 1 auto;min-width:0}
.shd .erow .en{font-family:'Barlow',sans-serif;font-weight:600;font-size:14px;color:var(--ink);line-height:1.2}
.shd .erow .ed{font-family:'JetBrains Mono',monospace;font-size:10.5px;color:var(--steel);margin-top:3px;letter-spacing:.01em}
.shd .erow .eacts{display:flex;gap:6px;flex:0 0 auto}
.shd .est-rowbtn{display:inline-grid;place-items:center;width:28px;height:28px;border:1.5px solid var(--line-2);border-radius:7px;background:var(--white);cursor:pointer;color:var(--steel);transition:.1s;text-decoration:none}
.shd .est-rowbtn svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2}
.shd .est-rowbtn:hover{border-color:var(--ink);color:var(--ink)}
.shd .est-rowbtn.danger:hover{border-color:var(--red);color:var(--red);background:var(--red-wash)}
.shd .est-rowbtn form{margin:0;display:contents}
.shd .est-rowbtn button{all:unset;display:grid;place-items:center;cursor:pointer;width:100%;height:100%}
.shd .eempty{text-align:center;color:var(--steel-2);font-size:12.5px;padding:14px 0;font-family:'JetBrains Mono',monospace}
.shd .sub-tot{display:flex;align-items:center;justify-content:space-between;margin-top:12px;padding:9px 12px;border-radius:8px;font-family:'Barlow Condensed',sans-serif;font-weight:800;text-transform:uppercase;letter-spacing:.01em}
.shd .sub-tot.mat{background:var(--blue-wash);color:var(--blue-ink)}
.shd .sub-tot.lab{background:#fbf4e4;color:#8a5a0c}
.shd .sub-tot .lab-k{font-size:13.5px}.shd .sub-tot .lab-v{font-size:18px}

/* empty sections */
.shd .est-empty{border:2px dashed var(--line-2);border-radius:var(--r);background:var(--white);padding:42px 20px;text-align:center}
.shd .est-empty .plus{width:54px;height:54px;margin:0 auto 14px;border:2px solid var(--line-2);border-radius:14px;display:grid;place-items:center;color:var(--steel-2)}
.shd .est-empty .plus svg{width:26px;height:26px;stroke:currentColor;fill:none;stroke-width:2.4}
.shd .est-empty h3{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:25px;text-transform:none;margin-bottom:6px;color:var(--ink)}
.shd .est-empty p{font-size:14px;color:var(--steel);max-width:42ch;margin:0 auto 18px}

/* overhead & machines */
.shd .est-oh{display:grid;gap:18px}
.shd .mch-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 14px;border:2px solid var(--line-2);border-radius:var(--r-sm);background:var(--paper-2)}
.shd .mch-row.on{border-color:var(--ink);background:var(--white);box-shadow:var(--shadow-sm)}
.shd .mch-row .mn{flex:1 1 200px;min-width:0}
.shd .mch-row .mn strong{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:17px;text-transform:uppercase;display:block;line-height:1;color:var(--ink)}
.shd .mch-row .mn span{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--steel);display:block;margin-top:3px}

/* ===== sticky ink ledger rail ===== */
.shd .led{border:2px solid var(--ink);border-radius:var(--r);background:var(--ink);color:var(--paper);box-shadow:var(--shadow);overflow:hidden;background-image:linear-gradient(rgba(14,165,233,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(14,165,233,.05) 1px,transparent 1px);background-size:22px 22px}
.shd .led-h{padding:16px 20px 14px;border-bottom:2px solid var(--line-ink)}
.shd .led-h .k{font-family:'JetBrains Mono',monospace;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--steel-2);display:flex;align-items:center;gap:7px}
.shd .led-h .k::before{content:"";width:14px;height:2px;background:var(--amber)}
.shd .led-h .v{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:44px;line-height:1;margin-top:8px;color:var(--paper)}
.shd .led-grid{display:grid;grid-template-columns:1fr 1fr;border-bottom:2px solid var(--line-ink)}
.shd .led-cell{padding:13px 18px;border-right:1px solid var(--line-ink)}
.shd .led-cell:nth-child(2n){border-right:none}
.shd .led-cell .k{font-family:'JetBrains Mono',monospace;font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--steel-2);display:flex;align-items:center;gap:5px}
.shd .led-cell .k svg{width:12px;height:12px;stroke:currentColor;fill:none;stroke-width:2}
.shd .led-cell .v{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:22px;line-height:1;margin-top:5px;color:var(--paper)}
.shd .led-cell.profit .v,.shd .led-cell.profit .k{color:#52cf95}
.shd .led-margin{padding:14px 20px}
.shd .led-margin .top{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:9px}
.shd .led-margin .top .k{font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.07em;text-transform:uppercase;color:var(--steel-2)}
.shd .led-margin .top .v{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:23px;color:#52cf95}
.shd .led-margin .top .v.low{color:#e0925a}
.shd .led-bar{height:12px;border:2px solid var(--line-ink);border-radius:7px;background:#0d0f12;overflow:hidden}
.shd .led-bar i{display:block;height:100%;background:linear-gradient(90deg,#2ab07a,#52cf95);transition:width .25s}
.shd .led-bar i.low{background:linear-gradient(90deg,#c9603a,#e0925a)}
.shd .led-break{padding:6px 20px 16px}
.shd .led-break .br{display:flex;align-items:center;justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--line-ink)}
.shd .led-break .br:last-child{border-bottom:none}
.shd .led-break .br .bk{color:var(--steel-2);display:flex;align-items:center;gap:8px;font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:.03em;text-transform:uppercase}
.shd .led-break .br .bk i{width:8px;height:8px;border-radius:2px;flex:0 0 auto}
.shd .led-break .br .bv{font-family:'JetBrains Mono',monospace;font-size:12.5px;color:var(--paper)}

/* client quote preview */
.shd .quote{border:2px solid var(--ink);border-radius:var(--r);background:var(--green-wash);box-shadow:var(--shadow);overflow:hidden}
.shd .quote-h{padding:14px 18px;border-bottom:2px solid #bcdcc9;display:flex;align-items:center;gap:11px}
.shd .quote-h .eye{width:32px;height:32px;flex:0 0 auto;border:2px solid #0c4a30;border-radius:8px;background:var(--green);color:#fff;display:grid;place-items:center}
.shd .quote-h .eye svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:2}
.shd .quote-h .t strong{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:18px;text-transform:uppercase;letter-spacing:.01em;color:#0c4a30;display:block;line-height:1}
.shd .quote-h .t span{font-size:11px;color:#136a45}
.shd .quote-b{padding:8px 14px 14px}
.shd .quote-line{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:11px 12px;background:var(--white);border:1.5px solid #cfe6d8;border-radius:9px;margin-top:8px}
.shd .quote-line .qn{font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:15px;text-transform:uppercase;letter-spacing:.005em;color:var(--ink)}
.shd .quote-line .qv{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:17px;color:var(--ink);white-space:nowrap}
.shd .quote-empty{padding:14px 12px;text-align:center;color:#136a45;font-family:'JetBrains Mono',monospace;font-size:12px}
.shd .quote-tot{display:flex;align-items:center;justify-content:space-between;margin-top:12px;padding:13px 14px;background:var(--green);border-radius:10px}
.shd .quote-tot .qk{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:17px;text-transform:uppercase;color:#fff}
.shd .quote-tot .qv{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:25px;color:#fff;line-height:1}

/* step footer */
.shd .est-foot{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:24px;flex-wrap:wrap}
.shd .est-foot .right{display:flex;gap:12px;flex-wrap:wrap}

/* review */
.shd .rev-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px 28px}
@media(max-width:680px){.shd .rev-grid{grid-template-columns:1fr}}
.shd .rev-meta{display:grid;gap:5px}
.shd .rev-meta .k{font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--steel)}
.shd .rev-meta .v{font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:19px;line-height:1.15;color:var(--ink)}
.shd .rev-sec{padding:16px 0;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:14px}
.shd .rev-sec .rn{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:19px;text-transform:uppercase;color:var(--ink)}
.shd .rev-sec .rd{font-family:'JetBrains Mono',monospace;font-size:11.5px;color:var(--steel);margin-top:3px}
.shd .rev-sec .rv{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:22px;white-space:nowrap;color:var(--ink)}

/* send */
.shd .send-grid{display:grid;grid-template-columns:340px minmax(0,1fr);gap:24px;align-items:start}
@media(max-width:980px){.shd .send-grid{grid-template-columns:1fr}}
.shd .send-side{display:grid;gap:18px}
.shd .info-card{border:2px solid var(--ink);border-radius:var(--r);background:var(--white);box-shadow:var(--shadow);overflow:hidden}
.shd .info-card h3{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:23px;text-transform:none;padding:15px 20px;border-bottom:2px solid var(--line);line-height:1;color:var(--ink)}
.shd .info-rows{padding:8px 20px 16px}
.shd .info-rows .ir{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--line)}
.shd .info-rows .ir:last-child{border-bottom:none}
.shd .info-rows .ir .ik{font-family:'JetBrains Mono',monospace;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--steel)}
.shd .info-rows .ir .iv{font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:17px;text-align:right;color:var(--ink)}
.shd .info-rows .ir .iv.big{font-size:23px;font-weight:800}
.shd .method-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:520px){.shd .method-grid{grid-template-columns:1fr}}
.shd .method{display:flex;align-items:center;gap:11px;border:2px solid var(--ink);border-radius:var(--r-sm);background:var(--white);box-shadow:var(--shadow-sm);padding:12px 15px;cursor:pointer;transition:.12s;margin:0}
.shd .method:hover{background:var(--paper)}
.shd .method.on{background:var(--blue-wash);border-color:var(--blue);box-shadow:2px 2px 0 var(--blue-ink)}
.shd .method.disabled{opacity:.45;cursor:not-allowed}
.shd .method .ml{font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:16px;text-transform:uppercase;letter-spacing:.01em;color:var(--ink)}
.shd .method .mi{margin-left:auto;color:var(--steel);display:grid}
.shd .method .mi svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2}
.shd .method input[type="radio"]{margin:0}

/* done */
.shd .done-card{max-width:640px;margin:10px auto;border:2px solid var(--ink);border-radius:var(--r);background:var(--white);box-shadow:var(--shadow);overflow:hidden;text-align:center}
.shd .done-top{padding:34px 28px 26px;background:var(--green-wash);border-bottom:2px solid var(--ink)}
.shd .done-top .ck{width:68px;height:68px;margin:0 auto 16px;border:2px solid #0c4a30;border-radius:20px;background:var(--green);color:#fff;display:grid;place-items:center;box-shadow:var(--shadow)}
.shd .done-top .ck svg{width:36px;height:36px;stroke:currentColor;fill:none;stroke-width:3}
.shd .done-top h2{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:34px;text-transform:none;line-height:1;color:#0c4a30}
.shd .done-top p{font-size:14px;color:#136a45;margin-top:9px}
.shd .done-sum{padding:20px 28px;display:grid;grid-template-columns:1fr 1fr 1fr}
.shd .done-sum .ds{padding:0 14px;border-right:1px solid var(--line)}
.shd .done-sum .ds:last-child{border-right:none}
.shd .done-sum .ds .k{font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--steel)}
.shd .done-sum .ds .v{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:25px;line-height:1;margin-top:6px;color:var(--ink)}
.shd .done-foot{padding:18px 28px;border-top:2px solid var(--line);display:flex;gap:12px;justify-content:center;flex-wrap:wrap}

/* shared numwrap for $ prefixed inputs */
.shd .numwrap{position:relative;display:flex;align-items:center}
.shd .numwrap .pre{position:absolute;left:11px;color:var(--steel-2);font-family:'JetBrains Mono',monospace;font-size:13px;pointer-events:none;z-index:1}
.shd .numwrap.cur input{padding-left:24px}

/* ===========================================================================
   INVOICE REVIEW — rugged "document" view (scoped under .shd)
   Reskins invoices/review: the invoice document (overview + meta + lines +
   totals) on the left, a sticky action column (send / payments / recurring /
   attachments) on the right. Collapsibles use the existing `toggle` controller.
   =========================================================================== */
.shd .iv-doc{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:24px;align-items:start}
.shd .iv-doc-main{display:grid;gap:24px;min-width:0}
.shd .iv-doc-side{display:grid;gap:18px;position:sticky;top:24px}
@media(max-width:1080px){.shd .iv-doc{grid-template-columns:1fr}.shd .iv-doc-side{position:static}}

.shd .iv-card{border:2px solid var(--ink);border-radius:var(--r);background:var(--white);box-shadow:var(--shadow);overflow:hidden}

/* overview header */
.shd .iv-overview-h{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 24px;border-bottom:2px solid var(--ink)}
.shd .iv-overview-h .ttl{display:grid;gap:7px;min-width:0}
.shd .iv-overview-h .ttl h2{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:27px;text-transform:none;line-height:1.04;color:var(--ink)}
.shd .iv-overview-h .ttl .no{font-family:'JetBrains Mono',monospace;font-size:12.5px;color:var(--steel);letter-spacing:.02em}
.shd .iv-ovacts{display:flex;gap:8px;flex-wrap:wrap;flex:0 0 auto;align-items:center}
.shd .iv-ovacts .iv-logo{height:40px;width:auto;border:2px solid var(--line-2);border-radius:8px;background:var(--white);padding:3px}

/* meta grid */
.shd .iv-meta-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:18px 24px;padding:20px 24px}
@media(max-width:680px){.shd .iv-meta-grid{grid-template-columns:1fr 1fr}}
.shd .iv-meta{display:grid;gap:5px;min-width:0}
.shd .iv-meta .ml{font-family:'JetBrains Mono',monospace;font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--steel)}
.shd .iv-meta .mv{font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:19px;line-height:1.15;color:var(--ink);word-break:break-word}
.shd .iv-meta .mv.mono{font-family:'JetBrains Mono',monospace;font-size:13.5px;font-weight:500}
.shd .iv-meta .mv.big{font-size:24px}

/* document section heading */
.shd .iv-doc-sec-h{padding:18px 24px 0}
.shd .iv-doc-sec-h h2{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:22px;text-transform:none;color:var(--ink)}

/* document line-items table */
.shd .iv-doc-table{width:100%;border-collapse:collapse;margin-top:12px}
.shd .iv-doc-table thead th{font-family:'JetBrains Mono',monospace;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--steel);text-align:left;padding:10px 24px;background:var(--paper-2);border-top:2px solid var(--line);border-bottom:2px solid var(--line);white-space:nowrap}
.shd .iv-doc-table thead th.r{text-align:right}
.shd .iv-doc-table thead th.cost{color:#8a5a0c}
.shd .iv-doc-table tbody td{padding:11px 24px;border-bottom:1px solid var(--line);font-size:14px;color:var(--ink);vertical-align:top}
.shd .iv-doc-table tbody tr:last-child td{border-bottom:none}
.shd .iv-doc-table td.r{text-align:right;white-space:nowrap}
.shd .iv-doc-table td.amt{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:16px}
.shd .iv-doc-table td.mono{font-family:'JetBrains Mono',monospace;font-size:12.5px}
.shd .iv-doc-table td.cost{font-family:'JetBrains Mono',monospace;font-size:12px;color:#8a5a0c}
.shd .iv-doc-empty{padding:24px;text-align:center;color:var(--steel);font-family:'JetBrains Mono',monospace;font-size:12.5px}

/* cost/profit note */
.shd .iv-costnote{margin:14px 24px 0;border:2px solid #ecd6ae;background:#fbf4e4;border-radius:var(--r-sm);padding:12px 14px;display:grid;gap:5px}
.shd .iv-costnote .cr{display:flex;align-items:baseline;justify-content:space-between;font-family:'JetBrains Mono',monospace;font-size:12px;color:#8a5a0c}
.shd .iv-costnote .cr.profit{color:#136a45}.shd .iv-costnote .cr.loss{color:var(--red)}

/* totals */
.shd .iv-doc-totals{padding:16px 24px;border-top:2px solid var(--line);display:grid;gap:2px;max-width:440px;margin-left:auto;width:100%}
.shd .iv-doc-totals .iv-srow{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:6px 0;font-size:14px;color:var(--steel)}
.shd .iv-doc-totals .iv-srow .v{font-family:'JetBrains Mono',monospace;font-size:13.5px;font-weight:500;color:var(--ink)}
.shd .iv-doc-deposit{margin-top:14px;border:2px solid var(--ink);border-radius:var(--r-sm);background:var(--blue-wash);overflow:hidden;max-width:440px;margin-left:auto;width:100%}
.shd .iv-doc-deposit .dr{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:10px 14px}
.shd .iv-doc-deposit .dr + .dr{border-top:1.5px solid #bfe0f1}
.shd .iv-doc-deposit .dr .k{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:15px;text-transform:uppercase;color:var(--blue-ink);display:flex;align-items:center;gap:7px}
.shd .iv-doc-deposit .dr .k .badge{font-family:'JetBrains Mono',monospace;font-size:9.5px;font-weight:700;background:var(--blue);color:#04222f;border-radius:4px;padding:1px 5px}
.shd .iv-doc-deposit .dr .v{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:19px;color:var(--blue-ink)}

/* tax breakdown rows */
.shd .iv-taxlist{padding:8px 24px 18px;display:grid;gap:8px}
.shd .iv-taxlist .tr{display:flex;align-items:baseline;justify-content:space-between;gap:12px;font-size:14px;color:var(--ink)}
.shd .iv-taxlist .tr .v{font-family:'JetBrains Mono',monospace;font-size:13px}
.shd .iv-taxlist .tr .tid{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--steel)}

/* send-to-customer panel */
.shd .iv-send{border:2px solid var(--ink);border-radius:var(--r);background:var(--blue-wash);box-shadow:var(--shadow);padding:20px 22px}
.shd .iv-send h3{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:23px;text-transform:none;line-height:1;color:var(--ink)}
.shd .iv-send .to{font-size:12.5px;color:var(--blue-ink);margin:9px 0 16px;font-family:'JetBrains Mono',monospace;word-break:break-word}
.shd .iv-send .row{display:flex;gap:10px;flex-wrap:wrap}
.shd .iv-send .warn{margin-top:12px;font-size:12px;color:#8a5a0c}

/* collapsible action panels */
.shd .iv-panel{border:2px solid var(--ink);border-radius:var(--r);background:var(--white);box-shadow:var(--shadow);overflow:hidden}
.shd .iv-panel-h{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:15px 20px;cursor:pointer;width:100%;background:transparent;border:none;text-align:left;font:inherit}
.shd .iv-panel-h h3{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:20px;text-transform:none;color:var(--ink);line-height:1}
.shd .iv-panel-h .chev{color:var(--steel);transition:transform .16s;flex:0 0 auto;display:grid}
.shd .iv-panel-h .chev svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2.2}
.shd .iv-panel-h .chev.rotate-180{transform:rotate(180deg)}
.shd .iv-panel-b{padding:0 20px 20px}
.shd .iv-panel-b .desc{font-size:13px;color:var(--steel);margin-bottom:14px}
.shd .iv-panel-static{padding:18px 20px}
.shd .iv-panel-static h3{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:20px;color:var(--ink);margin-bottom:4px}
.shd .iv-panel-static p{font-size:13px;color:var(--steel)}

/* status banner panel (paid / partial) */
.shd .iv-statebox{border:2px solid var(--ink);border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden}
.shd .iv-statebox.paid{background:var(--green-wash)}
.shd .iv-statebox.partial{background:#fbf4e4}
.shd .iv-statebox-h{display:flex;align-items:center;gap:10px;padding:14px 18px;font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:18px;text-transform:uppercase}
.shd .iv-statebox.paid .iv-statebox-h{color:#136a45}.shd .iv-statebox.partial .iv-statebox-h{color:#8a5a0c}
.shd .iv-statebox-h svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:2.2}
.shd .iv-statebox ul{list-style:none;margin:0;padding:0 18px}
.shd .iv-statebox li{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:6px 0;font-size:13px}
.shd .iv-statebox .foot{padding:12px 18px;border-top:2px solid rgba(0,0,0,.08);display:grid;gap:4px}
.shd .iv-statebox .foot .fr{display:flex;align-items:baseline;justify-content:space-between;font-family:'Barlow Condensed',sans-serif;font-weight:800;text-transform:uppercase;font-size:15px}

/* attachments */
.shd .iv-filelist{display:grid;gap:8px;margin-bottom:12px}
.shd .iv-filerow{display:flex;align-items:center;justify-content:space-between;gap:10px;border:2px solid var(--line-2);border-radius:var(--r-sm);padding:9px 11px;background:var(--paper-2)}
.shd .iv-filerow .fn{display:flex;align-items:center;gap:8px;min-width:0;font-size:13px;color:var(--ink)}
.shd .iv-filerow .fn svg{width:16px;height:16px;flex:0 0 auto;stroke:currentColor;fill:none;stroke-width:1.8;color:var(--steel)}
.shd .iv-filerow .fn .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.shd .iv-filerow .sz{font-family:'JetBrains Mono',monospace;font-size:10.5px;color:var(--steel-2);flex:0 0 auto}
.shd .iv-attach-form{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.shd .iv-attach-form input[type="file"]{flex:1 1 auto;font-size:12.5px}

/* copy-link row */
.shd .iv-copyrow{display:flex;align-items:center;gap:8px;margin-top:10px}
.shd .iv-copyrow input{flex:1 1 auto;font-family:'JetBrains Mono',monospace;font-size:11px}

/* contract panel accent */
.shd .iv-contract{border:2px solid var(--ink);border-radius:var(--r);background:#efeafc;box-shadow:var(--shadow);padding:18px 20px}
.shd .iv-contract h3{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:18px;text-transform:uppercase;color:#4b2e83;display:flex;align-items:center;justify-content:space-between;gap:10px}

/* rugged modal shell */
.shd-rugged-modal{border:2px solid var(--ink)!important;border-radius:var(--r)!important;box-shadow:6px 6px 0 var(--ink)!important;background:var(--paper)!important}
.shd-rugged-modal .rm-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:18px 22px;border-bottom:2px solid var(--ink);background:var(--white)}
.shd-rugged-modal .rm-head h2{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:24px;color:var(--ink);line-height:1}
.shd-rugged-modal .rm-head .sub{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--steel);margin-top:4px}
.shd-rugged-modal .rm-x{width:34px;height:34px;border:2px solid var(--line-2);border-radius:8px;background:var(--white);display:grid;place-items:center;cursor:pointer;color:var(--steel);flex:0 0 auto}
.shd-rugged-modal .rm-x:hover{border-color:var(--ink);color:var(--ink)}
.shd-rugged-modal .rm-x svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2.2}
.shd-rugged-modal .rm-body{padding:20px 22px}
.shd-rugged-modal .rm-foot{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:16px 22px;border-top:2px solid var(--line)}
.shd .iv-method-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media(max-width:520px){.shd .iv-method-grid{grid-template-columns:1fr}}

/* Wordmark "Hub" accent — sky blue on the charcoal rail (dark theme keeps it sky). */
.shd .shd-wordmark b{color:var(--blue);font-weight:inherit}

/* template-form section boxes (service templates) */
.shd .iv-tplsec{border:2px solid var(--line);border-radius:var(--r-sm);background:var(--paper-2);padding:16px}
.shd .iv-tplsec.amber{border-color:#ecd6ae;background:#fbf4e4}
.shd .iv-tplsec .shd-subhead{font-family:'Barlow Condensed',sans-serif;color:var(--ink)}

/* ===========================================================================
   BUSINESS CONFIGURATION — rugged section content (scoped under .shd)
   The config nav is already rugged; these style the section panels, list rows
   and headings. Form controls inherit the global .shd input/select reskin.
   =========================================================================== */
.shd .cfg-sec{display:grid;gap:22px}
.shd .cfg-head h1{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:30px;line-height:1;color:var(--ink);text-transform:none}
.shd .cfg-head p{font-size:13.5px;color:var(--steel);margin-top:7px;max-width:60ch}
.shd .cfg-card{border:2px solid var(--ink);border-radius:var(--r);background:var(--white);box-shadow:var(--shadow);padding:20px}
.shd .cfg-card-h{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.shd .cfg-card-h h3{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:20px;color:var(--ink);line-height:1}
.shd .cfg-card-h .sub,.shd .cfg-card .cfg-note{font-size:12.5px;color:var(--steel)}
.shd .cfg-field{display:grid;gap:6px}
.shd .cfg-field > label{font-family:'JetBrains Mono',monospace;font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--steel);font-weight:500}
/* Bring the section forms that still use generic neutral-Tailwind fields onto the
   rugged grid (labels + headings). Inputs already inherit the global .shd input
   reskin, so only the block field labels, section headings, and muted help text
   need remapping — covers every settings section without per-field markup edits. */
.shd .cfg-card label.block,.shd .cfg-sec label.block{font-family:'JetBrains Mono',monospace;font-size:10.5px;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--steel)}
.shd .cfg-card h2{font-family:'Barlow Condensed',sans-serif;font-weight:800;letter-spacing:.005em;color:var(--ink)}
.shd .cfg-card .text-neutral-900{color:var(--ink)}
.shd .cfg-card .text-neutral-500,.shd .cfg-card .text-neutral-400{color:var(--steel)}
.shd .cfg-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}
.shd .cfg-row:last-child{border-bottom:none}
.shd .cfg-row .nm{font-family:'Barlow',sans-serif;font-weight:600;font-size:14px;color:var(--ink)}
.shd .cfg-row .meta{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--steel);margin-top:2px}
.shd .cfg-row .acts{display:flex;gap:7px;flex:0 0 auto;flex-wrap:wrap}
.shd .cfg-empty{text-align:center;color:var(--steel);font-family:'JetBrains Mono',monospace;font-size:12.5px;padding:18px;border:2px dashed var(--line-2);border-radius:var(--r-sm);background:var(--paper-2)}
.shd .cfg-toggle{display:flex;align-items:center;gap:10px;cursor:pointer}

/* config list rows (materials / machines / labour / tax / catalog / services) */
.shd .cfg-list{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:8px}
.shd .cfg-listrow{border:2px solid var(--line-2);border-radius:8px;background:var(--white);padding:9px 12px}
.shd .cfg-listrow .nm{font-family:'Barlow',sans-serif;font-weight:600;font-size:14px;color:var(--ink)}
.shd .cfg-listrow .meta{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--steel);margin-top:2px}
.shd .cfg-listrow button.flex-1{background:transparent;border:none;cursor:pointer;padding:0}
.shd .cfg-listrow button.flex-1:hover .nm{color:var(--blue-deep)}
.shd .cfg-listrow.tappable{cursor:pointer;background:var(--white);text-align:left;width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;transition:.1s}
.shd .cfg-listrow.tappable:hover{border-color:var(--ink);box-shadow:var(--shadow-sm)}

/* config section headings/cards (broad-mapped from the old Tailwind) */
.shd .cfg-h1{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:28px;line-height:1;color:var(--ink)}
.shd .cfg-desc{font-size:13.5px;color:var(--steel);margin-top:7px;max-width:62ch}
.shd .cfg-h3{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:19px;color:var(--ink);line-height:1}

/* ===========================================================================
   MOBILE POLISH (≤680 / ≤480) — keep every reskinned feature usable on phones
   =========================================================================== */
/* tablet — single-column field grids before the phone card-ify */
@media(max-width:820px){
  .shd .iv-grid2{grid-template-columns:1fr}
}
@media(max-width:680px){
  /* Invoice line items → stacked, labeled cards (table reflowed to a grid) */
  .shd .iv-lines{overflow:visible}
  .shd .iv-lines table,.shd .iv-lines tbody{display:block;width:auto}
  .shd .iv-lines thead{display:none}
  .shd .iv-lrow{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:13px 12px;padding:15px 14px 16px;border-bottom:2px solid var(--line)}
  .shd .iv-lrow:last-child{border-bottom:none}
  .shd .iv-lrow > td{display:block;padding:0}
  .shd .iv-cell-desc{grid-column:1 / -1;padding-right:44px}

  /* visible, 16px touch inputs (16px avoids iOS focus-zoom) */
  .shd .iv-lrow .iv-din{border-color:var(--line-2);background:var(--white);padding:11px 12px;font-size:16px}
  .shd .iv-lrow .iv-din.mono{font-size:16px}
  .shd .iv-lrow .iv-din.r{text-align:left}
  .shd .iv-lrow .iv-numwrap.cur .iv-din{padding-left:22px}
  .shd .iv-lrow .iv-numwrap .pre{font-size:15px}

  /* label each number field above its input */
  .shd .iv-lrow > td[data-label]{display:flex;flex-direction:column;gap:6px}
  .shd .iv-lrow > td[data-label]::before{content:attr(data-label);font-family:'JetBrains Mono',monospace;font-size:10px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--steel)}

  /* amount gets its own full-width row, label left / value right */
  .shd .iv-lrow > td:has(.iv-amt){grid-column:1 / -1;flex-direction:row;align-items:baseline;justify-content:space-between;border-top:1.5px dashed var(--line);padding-top:12px;margin-top:2px}
  .shd .iv-lrow .iv-amt{font-size:24px;text-align:right}

  /* delete pinned to the card's top-right corner */
  .shd .iv-del-cell{position:absolute;top:11px;right:12px;padding:0}
  .shd .iv-lrow .iv-del{width:36px;height:36px;margin:0}

  /* segmented layout switcher spans the row */
  .shd .iv-seg{display:flex;width:100%}
  .shd .iv-seg button{flex:1 1 0;justify-content:center;padding:9px 4px}
  .shd .iv-head-actions{width:100%}

  /* worksheet bottom bar + ledger running header go full-width */
  .shd .iv-bb-tot{flex:1 1 100%}
  .shd .iv-bb-actions{width:100%}
  .shd .iv-bb-actions .shd-btn{flex:1 1 auto;justify-content:center}
  .shd .iv-runhead{flex-wrap:wrap}
  .shd .iv-runhead .ra{width:100%}
  .shd .iv-runhead .ra .shd-btn{flex:1 1 auto;justify-content:center}

  /* dropdowns / selects go full-width and wrap instead of overflowing */
  .shd .iv-import form{flex:1 1 100%;width:100%}
  .shd .iv-import select{width:100%}
  .shd .iv-field select,.shd .iv-grid2 select{width:100%}
  .shd .iv-recur{flex-wrap:wrap}
  .shd .iv-recur select{width:100% !important;flex:1 1 100% !important}

  /* Tax editor rows already stack at 680 (iv-tax-item → 1fr); give the delete room */
  .shd .iv-tax-item .iv-tax-del{justify-self:start}
}

/* phone full-bleed — invoice builder uses the whole screen (iPhone Pro ≈390px) */
@media(max-width:480px){
  .shd .iv-wrap{padding-left:0;padding-right:0}
  .shd .iv-head{padding-left:16px;padding-right:16px}
  /* containers span edge-to-edge: drop side borders, radius, and offset shadow */
  .shd .iv-import,
  .shd .iv-editor,
  .shd .iv-summary,
  .shd .iv-bottombar,
  .shd .iv-runhead,
  .shd .iv-canvas[data-layout="worksheet"] .iv-editor > .iv-sec{
    border-radius:0;border-left:none;border-right:none;box-shadow:none}
  /* worksheet stacks lose the grid side gap so cards reach both edges */
  .shd .iv-canvas[data-layout="worksheet"] .iv-editor{gap:14px}
  .shd .iv-canvas[data-layout="worksheet"] .iv-inline-slot .iv-summary{max-width:none}
}
@media(max-width:640px){
  .shd .iv-sec{padding:16px}
  .shd .iv-overview-h,.shd .iv-meta-grid,.shd .iv-doc-totals{padding-left:16px;padding-right:16px}
  .shd .iv-summary-h,.shd .iv-summary-b,.shd .iv-summary-foot{padding-left:16px;padding-right:16px}
  .shd .cfg-card{padding:16px}
  .shd .iv-head h1,.shd .est-head h1,.shd .cfg-h1{font-size:28px}
  .shd .est-card-b,.shd .est-card-h{padding-left:18px;padding-right:18px}
  .shd .iv-doc-table thead th,.shd .iv-doc-table tbody td{padding-left:14px;padding-right:14px}
  /* let read-only doc/tax tables scroll instead of crushing */
  .shd .iv-doc-table{display:block;overflow-x:auto;white-space:nowrap}
}
@media(max-width:480px){
  .shd .iv-meta-grid{grid-template-columns:1fr}
  .shd .iv-doc-totals,.shd .iv-doc-deposit{max-width:none}
  .shd .iv-stotal .v{font-size:26px}
}

/* ===========================================================================
   INVOICE CREATE — 3-layout switcher (Split / Stacked / Ledger)
   The editor + live summary are shared; the canvas[data-layout] rearranges them
   and shows the matching total bar (sidebar / bottom bar / running header).
   =========================================================================== */
.shd .iv-head-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.shd .iv-seg-label{font-family:'JetBrains Mono',monospace;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--steel);align-self:center}
.shd .iv-seg{display:inline-flex;border:2px solid var(--ink);border-radius:var(--r-sm);background:var(--white);box-shadow:var(--shadow-sm);overflow:hidden}
.shd .iv-seg button{appearance:none;border:none;background:transparent;cursor:pointer;font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:14px;text-transform:uppercase;letter-spacing:.03em;color:var(--steel);padding:9px 14px;display:inline-flex;align-items:center;gap:7px;border-right:2px solid var(--line);transition:background .12s,color .12s}
.shd .iv-seg button:last-child{border-right:none}
.shd .iv-seg button svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2}
.shd .iv-seg button:hover{background:var(--paper-2);color:var(--ink)}
.shd .iv-seg button.on{background:var(--ink);color:var(--paper)}

/* shared bars (hidden unless their layout is active) */
.shd .iv-runhead,.shd .iv-bottombar{display:none}

/* ── SPLIT: editor + sticky summary sidebar ── */
.shd .iv-canvas[data-layout="split"]{display:grid;grid-template-columns:minmax(0,1fr) 372px;gap:24px;align-items:start}
.shd .iv-canvas[data-layout="split"] .iv-side{position:sticky;top:24px;display:grid;gap:18px}

/* ── STACKED (worksheet): each section its own card, inline summary, bottom bar ── */
.shd .iv-canvas[data-layout="worksheet"]{display:block;max-width:980px;margin:0 auto}
.shd .iv-canvas[data-layout="worksheet"] .iv-editor{border:none;border-radius:0;background:transparent;box-shadow:none;display:grid;gap:24px}
.shd .iv-canvas[data-layout="worksheet"] .iv-editor > .iv-sec{border:2px solid var(--ink);border-radius:var(--r);background:var(--white);box-shadow:var(--shadow)}
.shd .iv-canvas[data-layout="worksheet"] .iv-editor > .iv-sec + .iv-sec{border-top:2px solid var(--ink)}
.shd .iv-canvas[data-layout="worksheet"] .iv-inline-slot{display:block}
.shd .iv-canvas[data-layout="worksheet"] .iv-inline-slot .iv-summary{max-width:560px;margin-left:auto}
.shd .iv-canvas[data-layout="worksheet"] .iv-summary-foot{display:none}
.shd .iv-canvas[data-layout="worksheet"] .iv-side{display:none}
.shd .iv-canvas[data-layout="worksheet"] .iv-bottombar{display:flex}

/* ── LEDGER: centered single card (summary moves inside it) + running header ── */
.shd .iv-canvas[data-layout="ledger"]{display:block;max-width:860px;margin:0 auto}
.shd .iv-canvas[data-layout="ledger"] .iv-side{display:none}
.shd .iv-canvas[data-layout="ledger"] .iv-runhead{display:flex}
.shd .iv-canvas[data-layout="ledger"] .iv-inline-slot{border-top:2px solid var(--line);padding:22px 24px}
.shd .iv-canvas[data-layout="ledger"] .iv-inline-slot .iv-summary{box-shadow:none}

/* worksheet bottom bar */
.shd .iv-bottombar{position:sticky;bottom:0;z-index:35;margin-top:24px;border:2px solid var(--ink);border-radius:var(--r);background:var(--white);box-shadow:0 -3px 0 var(--ink),var(--shadow);padding:14px 20px;align-items:center;gap:20px;flex-wrap:wrap}
.shd .iv-bb-tot{display:flex;align-items:baseline;gap:10px;flex:1 1 auto;flex-wrap:wrap}
.shd .iv-bb-tot .k{font-family:'JetBrains Mono',monospace;font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--steel)}
.shd .iv-bb-tot .v{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:30px;line-height:1;color:var(--ink)}
.shd .iv-bb-tot .sub{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--steel)}
.shd .iv-bb-actions{display:flex;gap:10px;flex-wrap:wrap}

/* ledger running header */
.shd .iv-runhead{position:sticky;top:12px;z-index:30;align-items:center;justify-content:space-between;gap:14px;padding:12px 18px;border:2px solid var(--ink);border-radius:var(--r);background:var(--ink);color:var(--paper);box-shadow:var(--shadow);margin-bottom:18px}
.shd .iv-runhead .rl{font-family:'JetBrains Mono',monospace;font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--steel-2)}
.shd .iv-runhead .rv{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:30px;line-height:1;color:var(--blue)}
.shd .iv-runhead .ra{display:flex;gap:10px}

@media(max-width:1080px){
  .shd .iv-canvas[data-layout="split"]{grid-template-columns:1fr}
  .shd .iv-canvas[data-layout="split"] .iv-side{position:static}
}
@media(max-width:680px){
  .shd .iv-runhead{flex-wrap:wrap}
  .shd .iv-bottombar{padding:12px 14px}
  .shd .iv-bb-tot .v{font-size:24px}
}

/* per-line taxable chip + inline recurring toggle */
.shd .iv-lmeta{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:6px}
.shd .iv-taxchip{appearance:none;cursor:pointer;font-family:'JetBrains Mono',monospace;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;border:1.5px solid var(--line-2);border-radius:5px;padding:2px 7px;background:var(--paper-2);color:var(--steel-2);transition:.1s;display:inline-flex;align-items:center;gap:4px}
.shd .iv-taxchip::before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.45}
.shd .iv-taxchip.on{background:var(--blue-wash);color:var(--blue-deep);border-color:#bfe0f1}
.shd .iv-taxchip.on::before{opacity:1}
.shd .iv-taxchip:hover{border-color:var(--ink);color:var(--ink)}
.shd .iv-recur{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:14px 16px;border:2px solid var(--line-2);border-radius:var(--r-sm);background:var(--paper-2)}
.shd .iv-recur.on{border-color:var(--ink);background:var(--white);box-shadow:var(--shadow-sm)}
.shd .iv-recur .rtx{flex:1 1 220px}
.shd .iv-recur .rtx strong{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:18px;text-transform:uppercase;display:block;line-height:1;color:var(--ink)}
.shd .iv-recur .rtx span{font-size:12.5px;color:var(--steel);display:block;margin-top:3px}
.shd .iv-switch{position:relative;width:46px;height:26px;flex:0 0 auto;border:2px solid var(--ink);border-radius:14px;background:var(--paper-2);cursor:pointer;transition:.14s;box-shadow:var(--shadow-sm);padding:0}
.shd .iv-switch::after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:var(--ink);transition:.16s}
.shd .iv-switch.on{background:var(--blue)}
.shd .iv-switch.on::after{transform:translateX(20px);background:#04222f}
