:root{
    --paper:#F4F6F8;
    --surface:#FFFFFF;
    --ink:#12263A;
    --ink-soft:#33495E;
    --muted:#6B7C8E;
    --faint:#9AA8B6;
    --line:#E3E8EE;
    --line-soft:#EDF1F5;
    --accent:#2D6CDF;
    --accent-dark:#1F52B0;
    --shadow:0 1px 2px rgba(18,38,58,.04), 0 8px 24px rgba(18,38,58,.06);
    --radius:14px;

    /* status palette */
    --s-new:#7C8A99;        --s-new-bg:#EEF2F6;
    --s-contacted:#2D6CDF;  --s-contacted-bg:#E7F0FE;
    --s-voicemail:#7857D6;  --s-voicemail-bg:#F0EBFC;
    --s-later:#8B5E34;      --s-later-bg:#F5EBDD;
    --s-callback:#BE7B0C;   --s-callback-bg:#FBF0D9;
    --s-interested:#0C9385; --s-interested-bg:#D9F2EF;
    --s-meeting:#178A4C;    --s-meeting-bg:#D8F2E2;
    --s-letter:#1E6F8C;     --s-letter-bg:#DCEEF4;
    --s-delivered:#5B4AB8;  --s-delivered-bg:#EAE7FA;
    --s-won:#8A6D00;        --s-won-bg:#FAEEC2;
    --s-notint:#C0432C;     --s-notint-bg:#FAE5E0;
    --s-badnum:#8A765C;     --s-badnum-bg:#F2EBE0;
    --s-dq:#5A6573;         --s-dq-bg:#EBEEF1;
    --s-dnc:#8B2635;        --s-dnc-bg:#F7E1E5;
  }

  *{box-sizing:border-box}
  html,body{margin:0;padding:0}
  body{
    background:var(--paper);
    color:var(--ink);
    font-family:'Inter',system-ui,-apple-system,sans-serif;
    font-size:14px;
    line-height:1.45;
    -webkit-font-smoothing:antialiased;
  }
  .wrap{max-width:1560px;margin:0 auto;padding:22px 20px 80px}

  /* ---------- header ---------- */
  header.top{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;flex-wrap:wrap;margin-bottom:18px}
  .brand{display:flex;align-items:center;gap:12px}
  .brand .mark{
    width:40px;height:40px;border-radius:11px;flex:none;
    background:transparent;padding:2px;
    display:grid;place-items:center;
    font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:19px;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.12);
  }
  .brand h1{
    font-family:'Space Grotesk',sans-serif;font-size:21px;font-weight:700;
    letter-spacing:-.02em;margin:0;line-height:1.05;
  }
  .brand .sub{font-size:12.5px;color:var(--muted);margin-top:1px}
  .savebar{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted)}
  .save-dot{width:7px;height:7px;border-radius:50%;background:var(--s-meeting);box-shadow:0 0 0 0 rgba(23,138,76,.4)}
  .save-dot.flash{animation:pulse .9s ease}
  @keyframes pulse{0%{box-shadow:0 0 0 0 rgba(23,138,76,.45)}100%{box-shadow:0 0 0 9px rgba(23,138,76,0)}}

  /* ---------- stat cards ---------- */
  .rangebar{display:flex;align-items:center;gap:6px;margin:0 2px 10px}
  .rbtn{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:5px 12px;
    font:600 11.5px 'Inter',sans-serif;color:var(--muted);cursor:pointer}
  .rbtn:hover{border-color:var(--faint);color:var(--ink)}
  .rbtn.active{background:var(--ink);border-color:var(--ink);color:#fff}
  .rangenote{font-size:11px;color:var(--muted);margin-left:6px}
  .stats{display:grid;grid-template-columns:repeat(7,1fr);gap:12px;margin-bottom:14px}
  @media(max-width:1420px){.stats{grid-template-columns:repeat(4,1fr)}}
  @media(max-width:1180px){.stats{grid-template-columns:repeat(3,1fr)}}
  .stat{
    background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
    padding:14px 16px;box-shadow:var(--shadow);position:relative;overflow:hidden;
  }
  .stat .label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600}
  .stat .val{font-family:'Space Grotesk',sans-serif;font-size:30px;font-weight:700;letter-spacing:-.02em;margin-top:3px;line-height:1;cursor:pointer;border-radius:6px;display:inline-block;padding:0 2px;transition:background .12s}
  .stat .val:hover{background:var(--line-soft)}
  .stat .val .minput{font-family:'Space Grotesk',sans-serif;font-size:28px;font-weight:700;width:84px;border:1px solid var(--accent);border-radius:7px;padding:1px 6px;color:var(--ink);box-shadow:0 0 0 3px rgba(45,108,223,.14);outline:none}
  .mtag{font-size:9px;text-transform:uppercase;letter-spacing:.06em;background:var(--accent);color:#fff;border-radius:999px;padding:1px 6px;vertical-align:middle;font-weight:700}
  .mrevert{color:var(--accent);cursor:pointer;text-decoration:none}
  .mrevert:hover{text-decoration:underline}
  .stat.win .val{color:var(--s-meeting)}
  .stat.won .val{color:var(--s-won)}
  .stat.pipe .val{color:var(--accent);font-size:26px}
  .stat.pipe .edge{background:var(--accent)}
  .stat.wonval .val{color:var(--s-meeting);font-size:26px}
  .stat.wonval .edge{background:var(--s-meeting)}
  .stat.hot .val{color:var(--s-interested)}
  .stat .foot{font-size:11.5px;color:var(--faint);margin-top:4px}
  .stat .edge{position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--accent)}
  .stat.win .edge{background:var(--s-meeting)}
  .stat.won .edge{background:var(--s-won)}
  .stat.hot .edge{background:var(--s-interested)}
  .stat.rate .val{color:var(--s-delivered)}
  .stat.rate .edge{background:var(--s-delivered)}
  .stat.total .edge{background:var(--ink)}

  /* ---------- pipeline strip ---------- */
  .pipe{
    background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
    box-shadow:var(--shadow);padding:12px 14px;margin-bottom:14px;
  }
  .pipe .pipe-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
  .pipe .pipe-head .t{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600}
  .pipe .pipe-head .clear{font-size:11.5px;color:var(--accent);cursor:pointer;background:none;border:none;font-family:inherit;padding:0}
  .pipe .pipe-head .clear:hover{text-decoration:underline}
  .bar{display:flex;height:9px;border-radius:6px;overflow:hidden;background:var(--line-soft);margin-bottom:12px}
  .bar span{height:100%;transition:width .35s ease}
  .chips{display:flex;flex-wrap:wrap;gap:7px}
  .chip{
    display:inline-flex;align-items:center;gap:7px;cursor:pointer;user-select:none;
    border:1px solid var(--line);background:var(--surface);
    border-radius:999px;padding:5px 11px 5px 9px;font-size:12.5px;font-weight:500;color:var(--ink-soft);
    transition:border-color .15s, background .15s, transform .05s;
  }
  .chip:hover{border-color:var(--faint)}
  .chip:active{transform:translateY(1px)}
  .chip .dot{width:9px;height:9px;border-radius:50%;flex:none}
  .chip .c{font-family:'Space Mono',monospace;font-weight:700;font-size:12px;color:var(--ink)}
  .chip.active{border-color:var(--ink);background:var(--ink);color:#fff;box-shadow:var(--shadow)}
  .chip.active .c{color:#fff}
  .chip.muted{opacity:.6}
  .chip.muted:hover,.chip.muted.active{opacity:1}

  /* ---------- client quick actions ---------- */
  .quickdesk{
    background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
    box-shadow:var(--shadow);padding:13px 14px;margin-bottom:14px;position:relative;z-index:8;
  }
  .quickdesk-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:10px}
  .quick-kicker{font-size:10px;text-transform:uppercase;letter-spacing:.085em;color:var(--accent);font-weight:800}
  .quick-heading{font:700 15px 'Space Grotesk',sans-serif;color:var(--ink);margin-top:1px}
  .quick-hint{font-size:11.5px;color:var(--muted);text-align:right}
  .quickdesk-row{display:flex;align-items:center;gap:9px}
  .quick-client-search{position:relative;flex:1;min-width:260px}
  .quick-client-search>svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--faint);z-index:2;pointer-events:none}
  .quick-client-search>input{
    width:100%;border:1px solid var(--line);background:#FBFCFD;border-radius:10px;
    padding:10px 13px 10px 38px;font:13.5px 'Inter',sans-serif;color:var(--ink);
    transition:border-color .15s,box-shadow .15s,background .15s;
  }
  .quick-client-search>input:focus{outline:none;border-color:var(--accent);background:#fff;box-shadow:0 0 0 3px rgba(45,108,223,.12)}
  .quick-service-picker{display:flex;align-items:center;gap:7px;flex:none;border:1px solid var(--line);background:#FBFCFD;border-radius:10px;padding:5px 8px 5px 10px;min-height:39px}
  .quick-service-picker>span{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.055em;color:var(--muted);white-space:nowrap}
  .quick-service-picker>select{border:0;background:transparent;color:var(--ink);font:700 12.5px 'Inter',sans-serif;outline:none;max-width:180px;cursor:pointer;padding:3px 22px 3px 2px}
  .quick-service-picker:focus-within{border-color:var(--accent);background:#fff;box-shadow:0 0 0 3px rgba(45,108,223,.12)}
  .quick-results{
    position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:80;background:#fff;
    border:1px solid var(--line);border-radius:12px;box-shadow:0 16px 40px rgba(18,38,58,.16);
    max-height:390px;overflow:auto;padding:5px;
  }
  .quick-results[hidden]{display:none}
  .quick-result{display:flex;align-items:center;gap:10px;padding:8px;border-radius:9px;border-bottom:1px solid var(--line-soft)}
  .quick-result:last-child{border-bottom:none}
  .quick-result:hover{background:#F8FAFC}
  .quick-result-main{flex:1;min-width:0;border:0;background:transparent;text-align:left;padding:0;cursor:pointer;font-family:inherit;color:inherit}
  .quick-result-name{font-size:13px;font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .quick-result-meta{font-size:11.5px;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .quick-result-actions{display:flex;gap:5px;flex:none}
  .quick-result-actions .btn{padding:6px 8px;border-radius:8px;font-size:11px;box-shadow:none}
  .quick-empty{padding:14px 12px;color:var(--muted);font-size:12.5px}
  .quick-selected{
    margin-top:9px;border-top:1px solid var(--line-soft);padding-top:9px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;
    font-size:12px;color:var(--muted);
  }
  .quick-selected[hidden]{display:none}
  .quick-selected strong{color:var(--ink);font-size:12.5px}
  .quick-selected .qmeta{min-width:0;flex:1}
  .quick-selected .qactions{display:flex;gap:7px;align-items:center}
  .quick-selected .qactions button{border:0;background:transparent;color:var(--accent);font:700 11.5px 'Inter',sans-serif;cursor:pointer;padding:2px 0}
  .quick-selected .qactions button:hover{text-decoration:underline}
  @media(max-width:900px){
    .quickdesk-head{align-items:flex-start;flex-direction:column;gap:3px}.quick-hint{text-align:left}
    .quickdesk-row{flex-wrap:wrap}.quick-client-search{flex-basis:100%}.quick-service-picker{flex:1;justify-content:space-between}.quickdesk-row>.btn{flex:1;justify-content:center}
  }

  /* ---------- toolbar ---------- */
  .toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
  .view-switch{display:inline-flex;border:1px solid var(--line);border-radius:9px;background:var(--surface);padding:2px;box-shadow:0 1px 2px rgba(18,38,58,.03)}
  .viewbtn{border:0;background:transparent;color:var(--muted);font:600 12px 'Inter',sans-serif;padding:6px 10px;border-radius:7px;cursor:pointer}
  .viewbtn.active{background:var(--ink);color:#fff}
  .search{position:relative;flex:1;min-width:200px}
  .search input{
    width:100%;border:1px solid var(--line);background:var(--surface);border-radius:10px;
    padding:10px 12px 10px 34px;font-family:inherit;font-size:13.5px;color:var(--ink);
    box-shadow:var(--shadow);
  }
  .search input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(45,108,223,.14)}
  .search svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--faint)}
  .btn{
    border:1px solid var(--line);background:var(--surface);color:var(--ink);
    border-radius:10px;padding:10px 14px;font-family:inherit;font-size:13px;font-weight:600;
    cursor:pointer;box-shadow:var(--shadow);display:inline-flex;align-items:center;gap:7px;
    transition:border-color .15s,background .15s,transform .05s;white-space:nowrap;
  }
  .btn:hover{border-color:var(--faint)}
  .btn:active{transform:translateY(1px)}
  .btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
  .btn.primary:hover{background:var(--accent-dark);border-color:var(--accent-dark)}
  .btn.ghost{background:transparent;box-shadow:none;color:var(--muted)}
  .btn.ghost:hover{background:var(--surface);color:var(--ink)}

  /* ---------- table ---------- */
  .tablewrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
  .scroll{overflow-x:auto}
  table{width:100%;border-collapse:collapse;min-width:1040px}
  thead th{
    position:sticky;top:0;z-index:2;background:#FBFCFD;text-align:left;
    font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:600;
    padding:11px 8px;border-bottom:1px solid var(--line);white-space:nowrap;
  }
  tbody td{padding:11px 8px;border-bottom:1px solid var(--line-soft);vertical-align:top}
  tbody tr:last-child td{border-bottom:none}
  /* keep the company name readable: it loses the width fight to the nowrap columns */
  tbody td:nth-child(3){min-width:190px}
  tbody td:nth-child(4){min-width:150px}
  .reg .rw{white-space:nowrap}
  tbody tr:hover{background:#FAFBFD}
  .num{font-family:'Space Mono',monospace;color:var(--faint);font-size:12px;width:34px}
  .co{font-weight:600;color:var(--ink);font-size:13.5px;line-height:1.25}
  .addr{font-size:11.5px;color:var(--muted);margin-top:3px;max-width:230px}
  .contact a{color:var(--accent);text-decoration:none;font-size:12.5px;display:block;line-height:1.5}
  .contact a:hover{text-decoration:underline}
  .contact .ph{font-family:'Space Mono',monospace;color:var(--ink-soft);font-size:12px}
  .reg .rn{font-family:'Space Mono',monospace;font-size:12px;color:var(--ink-soft)}
  .reg .rw{font-size:11px;color:var(--faint);margin-top:2px}

  /* status select */
  .status-select{
    appearance:none;-webkit-appearance:none;border:1px solid transparent;cursor:pointer;
    font-family:'Inter',sans-serif;font-size:12px;font-weight:600;border-radius:999px;
    padding:5px 26px 5px 22px;background-repeat:no-repeat;background-position:right 8px center,9px center;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='9' viewBox='0 0 12 12'%3E%3Cpath d='M2 4l4 4 4-4' stroke='%23667' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3C/svg%3E"),radial-gradient(circle,currentColor 3px,transparent 3px);
    transition:filter .12s;max-width:150px;
  }
  .status-select:hover{filter:brightness(.97)}
  .status-select:focus{outline:none;box-shadow:0 0 0 3px rgba(45,108,223,.18)}

  .notes-input{
    width:100%;min-width:160px;border:1px solid transparent;background:transparent;
    font-family:inherit;font-size:12.5px;color:var(--ink-soft);border-radius:7px;padding:6px 8px;resize:none;
    line-height:1.4;
  }
  .notes-input:hover{background:#F4F6F8}
  .notes-input:focus{outline:none;background:#fff;border-color:var(--accent);box-shadow:0 0 0 3px rgba(45,108,223,.12)}
  .notes-input::placeholder{color:var(--faint)}

  /* calls / attempts */
  .calls{white-space:nowrap}
  .callrow{display:flex;align-items:center;gap:7px}
  .callbtn{
    border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer;
    width:24px;height:24px;border-radius:7px;font-size:15px;font-weight:700;line-height:1;
    display:grid;place-items:center;flex:none;transition:filter .12s,transform .05s;
  }
  .callbtn:hover{filter:brightness(1.08)}
  .callbtn:active{transform:translateY(1px)}
  .callminus{
    border:1px solid var(--line);background:var(--surface);color:var(--muted);cursor:pointer;
    width:20px;height:24px;border-radius:7px;font-size:14px;line-height:1;display:grid;place-items:center;flex:none;
  }
  .callminus:hover{border-color:var(--faint);color:var(--ink)}
  .callcount{font-family:'Space Mono',monospace;font-weight:700;font-size:14px;color:var(--ink)}
  .callcount.done{color:var(--s-meeting)}
  .callcount small{color:var(--faint);font-weight:400;font-size:11px}
  .pips{display:flex;gap:2px;margin-top:5px}
  .pip{width:11px;height:4px;border-radius:2px;background:var(--line)}
  .pip.on{background:var(--accent)}
  .pip.on.full{background:var(--s-meeting)}
  .lastcall{font-size:10.5px;color:var(--faint);margin-top:4px}
  .nextcall{
    margin-top:5px;border:1px solid var(--line);border-radius:6px;padding:2px 5px;
    font-family:'Inter',sans-serif;font-size:11px;color:var(--ink-soft);background:var(--surface);
    width:106px;cursor:pointer;
  }
  .nextcall:focus{outline:none;border-color:var(--accent)}
  .nextcall.due{border-color:var(--s-callback);background:var(--s-callback-bg);color:var(--s-callback);font-weight:600}
  .nextcall.overdue{border-color:var(--s-notint);background:var(--s-notint-bg);color:var(--s-notint);font-weight:600}
  .nextcall{width:100px}
  .nextcalltime{
    margin-top:4px;border:1px solid var(--line);border-radius:6px;padding:2px 5px;
    font-family:'Inter',sans-serif;font-size:11px;color:var(--ink-soft);background:var(--surface);
    width:100px;cursor:pointer;display:block;
  }
  .nextcalltime:focus{outline:none;border-color:var(--accent)}
  .nextcalltime:disabled{opacity:.4;cursor:not-allowed}
  .nextcalltime.due{border-color:var(--s-callback);background:var(--s-callback-bg);color:var(--s-callback);font-weight:600}
  .nextcalltime.overdue{border-color:var(--s-notint);background:var(--s-notint-bg);color:var(--s-notint);font-weight:600}
  .datetime{display:flex;gap:8px}
  .datetime input[type=date]{flex:1}
  .datetime input[type=time]{width:110px}
  .duebadge{
    display:inline-block;font-size:10px;font-weight:700;border-radius:999px;padding:1px 8px;
    margin-left:7px;vertical-align:1px;letter-spacing:.02em;
  }
  .duebadge.today{background:var(--s-callback-bg);color:var(--s-callback)}
  .duebadge.over{background:var(--s-notint-bg);color:var(--s-notint)}
  .starbtn{
    border:none;background:transparent;cursor:pointer;font-size:15px;line-height:1;
    color:var(--line);width:22px;height:22px;padding:0;flex:none;transition:transform .08s,color .12s;
  }
  .starbtn:hover{transform:scale(1.18);color:var(--s-callback)}
  .starbtn.on{color:#E8A317}
  .cohead{display:flex;align-items:center;gap:6px}
  tr.prio td{background:linear-gradient(90deg,rgba(232,163,23,.07),transparent 55%)}
  tr.prio:hover td{background:linear-gradient(90deg,rgba(232,163,23,.12),#FAFBFD 55%)}
  .btn.toggle.today.active{background:var(--s-callback);border-color:var(--s-callback)}
  .btn.toggle.overdue.active{background:var(--s-notint);border-color:var(--s-notint)}
  .assbadge{display:inline-block;margin-left:8px;padding:1px 8px;border-radius:999px;background:#EEF2F7;border:1px solid var(--line);color:var(--muted);font-size:10.5px;font-weight:600;vertical-align:1px;white-space:nowrap}
  #whoSel{border:1px solid var(--line);border-radius:9px;padding:9px 10px;font-family:inherit;font-size:13px;color:var(--ink);background:var(--surface);cursor:pointer}
  #bulkAssign{border:1px solid var(--s-notint);border-radius:8px;padding:6px 8px;font-family:inherit;font-size:12.5px;background:#FFF;cursor:pointer}
  .selcol{width:30px}
  .rowsel{width:30px;text-align:center}
  .rowsel input,.selcol input{width:15px;height:15px;cursor:pointer;accent-color:var(--accent)}
  #bulkbar{
    display:none;align-items:center;gap:12px;margin-bottom:12px;
    background:var(--s-notint-bg);border:1px solid var(--s-notint);border-radius:10px;
    padding:9px 14px;font-size:13px;color:var(--s-notint);font-weight:600;
  }
  #bulkbar.show{display:flex}
  #bulkbar .btn{padding:7px 12px;font-size:12.5px}
  #bulkbar .btn.danger{background:var(--s-notint);border-color:var(--s-notint);color:#fff}
  #bulkbar .btn.danger:hover{filter:brightness(.92)}
  .teamrow{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}
  .teamrow:last-child{border-bottom:none}
  .teamrow .nm{flex:1}
  .teamrow .nm input{width:100%;border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-family:inherit;font-size:13.5px;color:var(--ink)}
  .teamrow .em{font-size:11.5px;color:var(--muted);margin-top:3px}
  .teamrow .cnt{font-size:12.5px;color:var(--muted);white-space:nowrap}
  .teamadd{display:flex;gap:8px;margin-top:14px}
  .teamadd input{flex:1;border:1px solid var(--line);border-radius:8px;padding:9px 10px;font-family:inherit;font-size:13.5px}
  .duprow{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:10px}
  .duprow .dl{display:flex;align-items:flex-start;gap:8px;padding:5px 0;font-size:13px}
  .duprow .dl .meta{color:var(--muted);font-size:12px}
  .duprow .dhead{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}
  .duprow .dhead .t{font-weight:700;font-size:13.5px}
  .toastact{margin-left:12px;background:rgba(255,255,255,.18);border:none;color:#fff;border-radius:999px;padding:4px 12px;font-size:12.5px;font-weight:700;cursor:pointer;font-family:inherit}
  .toastact:hover{background:rgba(255,255,255,.3)}
  .btn.toggle.prio.active{background:#E8A317;border-color:#E8A317}
  .valcell{white-space:nowrap;text-align:right}
  .valinput{
    width:74px;border:1px solid transparent;background:transparent;border-radius:6px;
    font-family:'Space Mono',monospace;font-size:12.5px;color:var(--ink);padding:4px 6px;text-align:right;
  }
  .valinput:hover{background:#F4F6F8}
  .valinput:focus{outline:none;background:#fff;border-color:var(--accent);box-shadow:0 0 0 3px rgba(45,108,223,.12)}
  .valinput::placeholder{color:var(--line)}
  .valfee{font-weight:700;color:var(--s-won)}
  .vallabel{font-size:9.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--faint);margin-right:4px}
  th.sortable{cursor:pointer;user-select:none}
  th.sortable:hover{color:var(--ink)}
  th.sortable.on{color:var(--accent)}

  .btn.toggle.active{background:var(--ink);border-color:var(--ink);color:#fff}
  .btn .badge{background:rgba(255,255,255,.22);border-radius:999px;padding:1px 7px;font-size:11px;font-family:'Space Mono',monospace}
  .btn.toggle:not(.active) .badge{background:var(--line-soft);color:var(--ink)}

  .rowact{display:flex;gap:4px;justify-content:flex-end}
  .iconbtn{
    border:none;background:transparent;cursor:pointer;color:var(--faint);
    width:28px;height:28px;border-radius:7px;display:grid;place-items:center;transition:background .12s,color .12s;
  }
  .iconbtn:hover{background:var(--line-soft);color:var(--ink)}
  .iconbtn.del:hover{background:var(--s-notint-bg);color:var(--s-notint)}

  .empty{padding:48px 20px;text-align:center;color:var(--muted)}
  .empty .big{font-family:'Space Grotesk',sans-serif;font-size:16px;color:var(--ink-soft);font-weight:600;margin-bottom:4px}

  .tablefoot{display:flex;align-items:center;justify-content:space-between;padding:11px 14px;border-top:1px solid var(--line);font-size:12px;color:var(--muted);background:#FBFCFD}

  /* ---------- modal ---------- */
  .overlay{position:fixed;inset:0;background:rgba(18,38,58,.42);backdrop-filter:blur(2px);display:none;align-items:flex-start;justify-content:center;padding:40px 16px;z-index:50;overflow:auto}
  .overlay.show{display:flex}
  .modal{background:var(--surface);border-radius:18px;box-shadow:0 24px 60px rgba(18,38,58,.28);width:100%;max-width:540px;overflow:hidden;animation:rise .2s ease}
  @keyframes rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
  .modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid var(--line)}
  .modal-head h2{font-family:'Space Grotesk',sans-serif;font-size:17px;margin:0;font-weight:700;letter-spacing:-.01em}
  .modal-body{padding:18px 20px;display:grid;grid-template-columns:1fr 1fr;gap:13px}
  .field{display:flex;flex-direction:column;gap:5px}
  .field[hidden]{display:none!important}
  .field.full{grid-column:1 / -1}
  .field label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600}
  .field input,.field select,.field textarea{
    border:1px solid var(--line);border-radius:9px;padding:9px 11px;font-family:inherit;font-size:13.5px;color:var(--ink);background:var(--surface);
  }
  .field textarea{resize:vertical;min-height:60px}
  .field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(45,108,223,.14)}
  .modal-foot{display:flex;justify-content:flex-end;gap:9px;padding:16px 20px;border-top:1px solid var(--line);background:#FBFCFD}

  @media(max-width:820px){
    .stats{grid-template-columns:repeat(2,1fr)}
    .modal-body{grid-template-columns:1fr}
  }
  @media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

#pipelineSection[hidden],#quickActionsSection[hidden],#toolbarSection[hidden],#tableSection[hidden],#boardSection[hidden]{display:none!important}
.cobtn{border:0;background:transparent;padding:0;color:inherit;font:inherit;font-weight:600;text-align:left;cursor:pointer}.cobtn:hover{color:var(--accent);text-decoration:underline}
.metalink{display:inline-block;margin-left:6px;font-size:10px;font-weight:700;color:var(--accent);text-decoration:none;vertical-align:1px}.metalink:hover{text-decoration:underline}
.contactname{font-weight:650;color:var(--ink);margin-bottom:2px}.coho-link{font-family:'Space Mono',monospace;font-size:11.5px;color:var(--accent);text-decoration:none}.coho-link:hover{text-decoration:underline}
.rd-yearend{display:flex;flex-direction:column;gap:4px;min-width:108px}.rd-yearend strong{font-size:12px}.rd-notif{display:inline-flex;width:max-content;max-width:150px;border-radius:999px;padding:2px 7px;background:#EEF2F6;color:var(--muted);font-size:9.5px;font-weight:700;white-space:nowrap}.rd-notif.soon{background:#FFF2CC;color:#7A5700}.rd-notif.urgent,.rd-notif.passed{background:#FBE5E1;color:#A03424}
.detail-overlay{justify-content:flex-end;padding:0}.detail-panel{width:min(560px,100%);min-height:100%;background:var(--surface);box-shadow:-20px 0 55px rgba(18,38,58,.2);animation:slidein .2s ease}.detail-body{padding:18px 20px 50px;overflow:auto;max-height:calc(100vh - 64px)}@keyframes slidein{from{transform:translateX(18px);opacity:.4}to{transform:none;opacity:1}}
.detail-actions{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 18px}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:14px 0}.detail-kv{padding:10px 11px;border:1px solid var(--line-soft);border-radius:10px;background:#FBFCFD}.detail-kv .k{font-size:9.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:700}.detail-kv .v{font-size:12.5px;color:var(--ink);margin-top:2px;word-break:break-word}.timeline{border-left:2px solid var(--line);margin-left:8px;padding-left:18px}.activity{position:relative;padding:0 0 16px}.activity:before{content:'';position:absolute;left:-24px;top:3px;width:10px;height:10px;border-radius:50%;background:var(--accent);border:3px solid #fff;box-shadow:0 0 0 1px var(--line)}.activity .at{font-size:12.5px;font-weight:700}.activity .am{font-size:11px;color:var(--muted);margin:2px 0}.activity .an{font-size:12.5px;color:var(--ink-soft);white-space:pre-wrap}.activity-empty{color:var(--muted);font-size:12.5px;padding:14px 0}
.setup-error{background:var(--s-notint-bg);border:1px solid var(--s-notint);color:var(--s-notint);padding:11px;border-radius:9px;font-size:12.5px;margin-top:12px}

/* ---------- optional pipeline board ---------- */
.pipeline-board-wrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
.pipeline-board-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:12px 14px;border-bottom:1px solid var(--line-soft)}
.pipeline-board-head strong{font-size:13px}.pipeline-board-head span{font-size:11.5px;color:var(--muted)}
.pipeline-board{display:grid;grid-template-columns:repeat(7,minmax(210px,1fr));gap:10px;padding:12px;overflow-x:auto;align-items:start}
.pipeline-col{background:#F7F9FB;border:1px solid var(--line);border-radius:11px;min-height:180px;overflow:hidden}
.pipeline-col-head{display:flex;justify-content:space-between;align-items:center;padding:9px 10px 4px;font-size:11px;font-weight:750;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft)}
.pipeline-col-head b{background:var(--surface);border:1px solid var(--line);border-radius:999px;min-width:23px;text-align:center;padding:1px 6px;font-size:10px}.pipeline-col-value{padding:0 10px 7px;font-size:10.5px;color:var(--muted)}
.pipeline-cards{display:grid;gap:7px;padding:7px}.pipeline-card{background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:9px;box-shadow:0 1px 2px rgba(18,38,58,.035)}
.pipeline-company{border:0;background:transparent;padding:0;color:var(--ink);font:650 12.5px 'Inter',sans-serif;cursor:pointer;text-align:left}.pipeline-company:hover{color:var(--accent);text-decoration:underline}.pipeline-contact{font-size:11px;color:var(--muted);margin-top:2px}.pipeline-meta{display:flex;justify-content:space-between;gap:8px;margin-top:7px;font-size:10.5px;color:var(--muted)}.pipeline-meta strong{color:var(--ink)}
.pipeline-rd{margin-top:7px;border-radius:6px;background:#EEF2F6;padding:4px 6px;font-size:9.5px;color:var(--muted)}.pipeline-rd.soon{background:#FFF2CC;color:#7A5700}.pipeline-rd.urgent,.pipeline-rd.passed{background:#FBE5E1;color:#A03424}.pipeline-next{margin-top:7px;font-size:9.5px;color:var(--muted)}.pipeline-next.today{color:#7A5700;font-weight:700}.pipeline-next.over{color:#A03424;font-weight:700}.pipeline-empty{padding:18px 8px;text-align:center;color:var(--faint);font-size:10.5px}
#boardSection[hidden]{display:none!important}
@media(max-width:720px){
  .wrap{padding:14px 10px 60px}.stats{grid-template-columns:repeat(2,1fr)}.toolbar{gap:7px}.toolbar .search{flex-basis:100%}.view-switch{order:2}.pipeline-board{grid-template-columns:repeat(7,minmax(190px,1fr))}
  .tablewrap{background:transparent;border:0;box-shadow:none;overflow:visible}.scroll{overflow:visible}table{min-width:0;display:block}thead{display:none}tbody{display:grid;gap:10px}tbody tr{display:grid;grid-template-columns:28px 1fr auto;background:var(--surface);border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow);padding:10px}tbody td{display:block;border:0;padding:5px 7px;min-width:0}tbody td:nth-child(1){grid-column:1;grid-row:1}tbody td:nth-child(2){display:none}tbody td:nth-child(3){grid-column:2;grid-row:1}tbody td:nth-child(4){grid-column:2/4;grid-row:2}tbody td:nth-child(5){display:none}tbody td:nth-child(6){grid-column:3;grid-row:1}tbody td:nth-child(7){grid-column:2;grid-row:3}tbody td:nth-child(8){grid-column:3;grid-row:3}tbody td:nth-child(9){grid-column:2/4;grid-row:4}tbody td:nth-child(10){grid-column:3;grid-row:5}.addr{max-width:none}.detail-grid{grid-template-columns:1fr}.tablefoot{display:block}
}

.check-row{display:flex;align-items:center;gap:22px;flex-wrap:wrap}.check-row label{display:flex;align-items:center;gap:8px;text-transform:none;letter-spacing:0;font-size:13px;color:var(--ink);cursor:pointer}.check-row input{width:auto}


/* v2 workflow refinements */
.field-help{font-size:11px;color:var(--muted);margin-top:6px;line-height:1.4}
.statrate{display:inline-flex;align-items:center;border-radius:999px;background:var(--line-soft);color:var(--ink-soft);font-weight:700;padding:2px 7px;margin-right:4px}
.import-modes{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:0 0 11px}.import-modes label{display:flex;gap:9px;align-items:flex-start;border:1px solid var(--line);border-radius:10px;padding:10px 11px;cursor:pointer;background:#fff}.import-modes label:has(input:checked){border-color:var(--accent);box-shadow:0 0 0 3px rgba(45,108,223,.1)}.import-modes input{margin-top:3px}.import-modes span{display:grid;gap:2px}.import-modes strong{font-size:12.5px}.import-modes small{font-size:10.5px;color:var(--muted);line-height:1.35}.import-warning{background:#FFF8E7;border:1px solid #E6C66A;border-radius:9px;padding:9px 10px;margin:0 0 11px;font-size:11.5px;color:#6C570D}
.inline-input,.inline-textarea{width:100%;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--ink);font:12px 'Inter',sans-serif;padding:6px 7px}.inline-input:focus,.inline-textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(45,108,223,.11)}.inline-textarea{resize:vertical;min-height:54px;line-height:1.35}.inline-stack{display:grid;gap:5px}.inline-label{font-size:9px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700}.rowact .textbtn{width:auto;min-width:auto;padding:5px 8px;border-radius:7px;font-size:11px;font-weight:700}.rowact .savequick{background:var(--accent);color:#fff}.rowact .savequick:hover{background:var(--accent-dark);color:#fff}.rowact .cancelquick{background:var(--line-soft)}
.activity-summary{display:grid;gap:4px;min-width:150px}.activity-summary .latest{font-size:11.5px;color:var(--ink-soft);line-height:1.35}.activity-summary .latest strong{color:var(--ink)}.activity-summary .legacy{font-size:10.5px;color:var(--muted);white-space:pre-wrap;line-height:1.35;max-height:42px;overflow:hidden}.activity-summary .quicklinks{display:flex;gap:5px;flex-wrap:wrap}.activity-summary button{border:0;background:transparent;color:var(--accent);font:700 10.5px 'Inter';padding:0;cursor:pointer}.activity-summary button:hover{text-decoration:underline}.activity-none{font-size:10.5px;color:var(--faint)}
@media(max-width:720px){.import-modes{grid-template-columns:1fr}.rowact .textbtn{padding:5px 7px}.activity-summary{min-width:0}}

.archive-missing{display:flex;gap:7px;align-items:flex-start;margin-top:7px;font-weight:600}.archive-missing input{margin-top:2px}

/* Build 2.2: explicit Won and Delivered workspaces */
.build-badge{display:inline-flex;align-items:center;padding:3px 7px;border:1px solid var(--line);border-radius:999px;font-size:11px;font-weight:700;color:var(--muted);background:var(--panel)}


/* ── letter typography (scoped) ── */
.letter-sheet{--purple:#5700C4;--navy:#1B3A5C;--lt-ink:#000819;--fill:#EDF2F8;--stripe:#F9F9F9}
 .letter-sheet{font:10.5pt/1.6 'Poppins',sans-serif;color:var(--lt-ink);margin:0}
 .letter-sheet .pagewrap{width:100%;min-width:0 !important;max-width:100%;border-collapse:collapse;display:table !important}
 .letter-sheet .pagewrap > tbody > tr > td{padding:0;border:0;display:table-cell !important}
 .letter-sheet .pagewrap > tfoot{display:table-footer-group}
 .letter-sheet .pagewrap > thead{display:table-header-group}
 .letter-sheet .pagehead{padding:0;border:0;height:0}
 .letter-sheet .pagefoot{padding:10px 0 0;border:0;border-top:1px solid rgba(27,58,92,.14);
   text-align:center;font-size:7.5pt;color:rgba(27,58,92,.58)}
 .letter-sheet .regline{text-align:center;font-size:7.5pt;color:rgba(27,58,92,.58);border-top:1px solid rgba(27,58,92,.14);
 padding-top:6px;margin-top:26px}
 .letter-sheet .loe-signoff{break-inside:avoid;page-break-inside:avoid}
 /* Signature and acknowledgement belong together: printing them apart left an
    almost empty page between the letter and the Terms. */
 .letter-sheet .loe-closing{break-inside:avoid;page-break-inside:avoid}
 .letter-sheet .logo{height:42px}
 .letter-sheet .head{display:flex;justify-content:space-between;align-items:flex-start;gap:24px}
 .letter-sheet .contact{text-align:right;font-size:8.5pt;color:rgba(27,58,92,.78);line-height:1.5}
 .letter-sheet .contact b{color:var(--lt-ink)}
 .letter-sheet .rule{border-bottom:3px solid var(--purple);margin:14px 0 22px}
 .letter-sheet .date{margin-bottom:16px;font-weight:600}
 .letter-sheet .to{font-weight:700;color:var(--navy);margin:0 0 2px}
 .letter-sheet .toaddr{color:var(--navy);margin:0 0 16px}
 .letter-sheet h2{color:var(--purple);font-size:13pt;font-weight:700;margin:22px 0 8px}
 .letter-sheet h3{color:var(--purple);font-size:11pt;font-weight:600;margin:18px 0 6px;
 border-bottom:1px solid rgba(27,58,92,.14);padding-bottom:4px}
 .letter-sheet p{margin:0 0 9px}
 .letter-sheet ul{margin:0 0 10px 0;padding-left:18px}
 .letter-sheet li{margin-bottom:6px}
 .letter-sheet .sig{height:44px;margin:14px 0 2px}
 .letter-sheet .sigblank{border-bottom:1px solid rgba(27,58,92,.42);width:200px;height:40px;margin:10px 0 4px}
 .letter-sheet .signame{font-weight:700;margin:0}
 .letter-sheet .sigrole{color:rgba(27,58,92,.78);font-size:9.5pt;margin:0}
 .letter-sheet .ack{border:1px solid rgba(27,58,92,.18);border-radius:6px;background:var(--stripe);padding:14px 16px;margin-top:20px}
 .letter-sheet .ack h4{color:var(--purple);letter-spacing:.14em;font-size:9pt;margin:0 0 8px;text-transform:uppercase}
 .letter-sheet .ackgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px 28px;margin-top:12px}
 .letter-sheet .ackfield label{font-size:8.5pt;color:rgba(27,58,92,.78)}
 .letter-sheet .ackline{border-bottom:1px solid rgba(27,58,92,.42);height:24px}
 .letter-sheet .terms{page-break-before:always}
 .letter-sheet .terms h1{color:var(--purple);font-size:15pt;letter-spacing:.06em;margin:0 0 2px}
 .letter-sheet .terms .sub{color:rgba(27,58,92,.78);font-size:9pt;margin:0 0 14px}
 .letter-sheet .terms h3{font-size:10.5pt;color:var(--navy);border:0;margin:16px 0 6px}
 .letter-sheet .cl{margin:0 0 7px;padding-left:34px;text-indent:-34px}
 .letter-sheet .cl b{color:var(--lt-ink)}
 .letter-sheet .sub-list{padding-left:34px;margin:0 0 8px}
 .letter-sheet .sub-list p{margin:0 0 5px;padding-left:20px;text-indent:-20px}
 .letter-sheet .note{margin-top:22px;padding:10px 12px;background:var(--fill);border-left:3px solid var(--purple);
 font-size:9pt;color:rgba(0,8,25,.78)}

/* ── Engagement letter: rendered in-page and printed from here (no pop-up) ─────
   Mirrors the approach used by the claims workbench report: an A4-width sheet in
   the DOM, everything else hidden at print time, colours forced on. */
.letterview{position:fixed;inset:0;z-index:80;background:#8193A5;overflow:auto;padding:0 0 60px}
.letterview[hidden]{display:none}
.letterbar{position:sticky;top:0;z-index:2;display:flex;gap:10px;align-items:center;justify-content:flex-end;
  background:var(--ink,#000819);padding:10px 18px;box-shadow:0 2px 10px rgba(0,0,0,.2)}
.letterbar .t{margin-right:auto;color:#fff;font:600 13px 'Inter',sans-serif}
.letterbar .t small{display:block;font-weight:400;font-size:11px;color:rgba(255,255,255,.66);margin-top:1px}
.letterbar button{border:0;border-radius:8px;padding:8px 14px;font:600 12.5px 'Inter',sans-serif;cursor:pointer}
.letterbar .print{background:#5700C4;color:#fff}
.letterbar .print:hover{filter:brightness(1.1)}
.letterbar .close{background:transparent;color:rgba(255,255,255,.82);border:1px solid rgba(255,255,255,.22)}
.letter-sheet{
  width:210mm;min-height:297mm;margin:18px auto;background:#fff;
  padding:16mm 16mm 14mm;box-shadow:0 8px 30px rgba(0,0,0,.28);
}

@media print{
  /* A4 print area. Engagement-specific pagination is scoped below so invoice
     printing keeps its existing sizing. */
  @page{size:A4 portrait;margin:6mm 0}
  *{-webkit-print-color-adjust:exact !important;print-color-adjust:exact !important}
  html,body{background:#fff !important;margin:0 !important}
  body.printing-letter > *:not(.letterview){display:none !important}
  body.printing-letter .letterview{position:static !important;background:#fff !important;padding:0 !important;overflow:visible !important}
  body.printing-letter .letterbar,.no-print{display:none !important}
  body.printing-letter .letterview{width:210mm !important;max-width:210mm !important;margin:0 auto !important;}
  body.printing-letter .letter-sheet{
    width:210mm !important;max-width:210mm !important;min-height:0 !important;margin:0 !important;
    /* Horizontal inset only. Vertical spacing comes from the repeating thead/tfoot
       below, which applies to every page — element padding only affects the first
       and last, and browsers routinely zero the @page margin. */
    padding:0 16mm !important;box-shadow:none !important;overflow:visible !important;
  }
  body.printing-letter .letter-sheet .pagewrap{min-width:0 !important;width:100% !important;display:table !important}
  body.printing-letter .letter-sheet .pagewrap > tfoot{display:table-footer-group}
  body.printing-letter .letter-sheet .pagehead{height:14mm;padding:0;border:0}
  body.printing-letter .letter-sheet .pagefoot{padding:8px 0 8mm;border-top:1px solid rgba(27,58,92,.14)}
  body.printing-letter .letter-sheet.engagement-doc{font-size:10pt !important;line-height:1.52 !important}
  body.printing-letter .letter-sheet.engagement-doc p{margin-bottom:8px}
  body.printing-letter .letter-sheet.engagement-doc li{margin-bottom:5px}
  body.printing-letter .letter-sheet.engagement-doc h3{margin-top:15px}
  body.printing-letter .letter-sheet.engagement-doc .ack{margin-top:14px;padding:11px 14px}
  body.printing-letter .letter-sheet.engagement-doc .ackgrid{gap:7px 24px;margin-top:9px}
  body.printing-letter .letter-sheet.engagement-doc .ackline{height:20px}
  /* Professional pagination: keep headings with the following text and avoid
     stranded lines without forcing whole sections onto separate pages. */
  .letter-sheet.engagement-doc p,.letter-sheet.engagement-doc li{orphans:3;widows:3}
  .letter-sheet.engagement-doc .ack,.letter-sheet.engagement-doc .head,.letter-sheet.engagement-doc .loe-signoff,.letter-sheet.engagement-doc .loe-closing{break-inside:avoid;page-break-inside:avoid}
  .letter-sheet.engagement-doc h2,.letter-sheet.engagement-doc h3,.letter-sheet.engagement-doc .terms h1{break-after:avoid;page-break-after:avoid}
  .letter-sheet.engagement-doc .cl,.letter-sheet.engagement-doc li,.letter-sheet.engagement-doc .sub-list p{break-inside:avoid;page-break-inside:avoid}
  .letter-sheet.engagement-doc img{break-inside:avoid}
  .letter-sheet.engagement-doc .terms{break-before:page;page-break-before:always}
}


#inv_number[readonly]{background:var(--line-soft);color:var(--ink-soft);cursor:default}

/* ── invoice (shares the letter sheet and print pipeline) ── */
 .letter-sheet .invtop{display:flex;justify-content:space-between;gap:28px;align-items:flex-start;margin-bottom:6px}
 .letter-sheet .lbl{font-size:8pt;letter-spacing:.12em;text-transform:uppercase;color:rgba(27,58,92,.58);margin-bottom:4px}
 .letter-sheet .invmeta{width:auto;min-width:190px;max-width:100%;display:table;border-collapse:collapse;font-size:9.5pt}
 .letter-sheet .invmeta td{padding:2px 12px 2px 0;color:rgba(27,58,92,.78);white-space:nowrap}
 .letter-sheet .invmeta th{padding:2px 0;text-align:right;font-weight:600;color:var(--lt-ink);white-space:nowrap}
 .letter-sheet .invtbl{width:100%;min-width:0 !important;max-width:100%;display:table !important;table-layout:fixed;border-collapse:collapse;margin:10px 0 18px;font-size:10pt}
 .letter-sheet .invtbl thead{display:table-header-group !important}
 .letter-sheet .invtbl tbody{display:table-row-group !important}
 .letter-sheet .invtbl tfoot{display:table-footer-group !important}
 .letter-sheet .invtbl tr{display:table-row !important}
 .letter-sheet .invtbl th,.letter-sheet .invtbl td{display:table-cell !important;min-width:0 !important}
 .letter-sheet .invtbl thead th{position:static !important;top:auto !important}
 .letter-sheet .invtbl thead th{background:var(--purple);color:#fff;text-align:left;padding:8px 10px;font-size:9pt;
   letter-spacing:.06em;text-transform:uppercase;font-weight:600}
 .letter-sheet .invtbl thead th.r,.letter-sheet .invtbl td.r{text-align:right}
 .letter-sheet .invtbl th:last-child,.letter-sheet .invtbl td:last-child{width:38mm}
 .letter-sheet .invtbl td:first-child{overflow-wrap:anywhere;word-break:normal}
 .letter-sheet .invtbl tbody td{padding:11px 10px;border-bottom:1px solid rgba(27,58,92,.14);vertical-align:top}
 .letter-sheet .invtbl tbody tr:nth-child(even) td{background:var(--stripe)}
 .letter-sheet .invtbl .sub{font-size:8.5pt;color:rgba(27,58,92,.78);margin-top:3px}
 .letter-sheet .invtbl tfoot td{padding:6px 10px;font-size:10pt}
 .letter-sheet .invtbl tfoot tr.tot td{border-top:2px solid var(--purple);font-weight:700;font-size:11.5pt;color:var(--purple);padding-top:9px}
 .letter-sheet .mono{font-variant-numeric:tabular-nums;white-space:nowrap}
 .letter-sheet .paybox{background:var(--fill);border-left:3px solid var(--purple);padding:12px 14px;margin-top:6px}
 .letter-sheet .paybox p{margin:0 0 6px;font-size:9.5pt}
 .letter-sheet .paybox .bank{font-size:10pt;font-weight:600;line-height:1.5;margin:8px 0}
 .letter-sheet .paybox .ref{margin:0;font-size:9.5pt}
 .letter-sheet .vatno{font-size:9pt;color:rgba(27,58,92,.78);margin-top:12px}
 .letter-sheet .invnotes{font-size:9.5pt;color:rgba(0,8,25,.78);margin-top:10px;padding-top:10px;border-top:1px solid rgba(27,58,92,.14)}
@media print{
  .letter-sheet .invtbl{width:100% !important;min-width:0 !important;max-width:100% !important;display:table !important;break-inside:avoid;page-break-inside:avoid}
  .letter-sheet .paybox,.letter-sheet .invtop{break-inside:avoid;page-break-inside:avoid}
}


/* ── Invoice document (redesigned) ─────────────────────────────────────────
   Structure: logo + firm details · INVOICE + number · Bill to / Invoice details
   · light line-item table · compact right-aligned totals · payment panel · footer */
 .letter-sheet .inv-head{display:flex;justify-content:space-between;align-items:flex-start;gap:24px}
 .letter-sheet .inv-logo{height:40px}
 .letter-sheet .inv-firm{text-align:right;font-size:8pt;line-height:1.55;color:rgba(27,58,92,.78)}
 .letter-sheet .inv-titlerow{display:flex;justify-content:space-between;align-items:baseline;margin:22px 0 6px}
 .letter-sheet .inv-title{font-size:19pt;font-weight:700;letter-spacing:.02em;color:var(--purple);text-transform:uppercase}
 .letter-sheet .inv-no{font-size:13pt;font-weight:700;color:var(--lt-ink);font-variant-numeric:tabular-nums}
 .letter-sheet .inv-rule{border-bottom:2px solid var(--purple);margin-bottom:18px}
 .letter-sheet .inv-cols{display:flex;justify-content:space-between;gap:34px;margin-bottom:22px}
 .letter-sheet .inv-col{min-width:0}
 .letter-sheet .inv-col.right{text-align:right}
 .letter-sheet .inv-lbl{font-size:7.5pt;letter-spacing:.14em;text-transform:uppercase;
   color:rgba(27,58,92,.58);margin-bottom:6px}
 .letter-sheet .inv-party{font-weight:700;font-size:11pt;color:var(--navy)}
 .letter-sheet .inv-addr{font-size:10pt;color:rgba(27,58,92,.78);margin-top:2px;line-height:1.5}
 .letter-sheet .inv-prop{font-size:9pt;color:rgba(27,58,92,.58);margin-top:5px}
 .letter-sheet .inv-meta{border-collapse:collapse;margin-left:auto;font-size:9.5pt;width:auto !important;min-width:0 !important}
 .letter-sheet .inv-meta td{padding:2px 14px 2px 0;color:rgba(27,58,92,.78);white-space:nowrap;text-align:left}
 .letter-sheet .inv-meta th{padding:2px 0;text-align:right;font-weight:600;color:var(--lt-ink);white-space:nowrap}

 .letter-sheet .invtbl{width:100%;min-width:0 !important;max-width:100%;display:table !important;
   table-layout:fixed;border-collapse:collapse;margin:0 0 4px;font-size:10pt}
 .letter-sheet .invtbl th,.letter-sheet .invtbl td{display:table-cell !important;min-width:0 !important}
 .letter-sheet .invtbl thead th{background:transparent;color:rgba(27,58,92,.58);text-align:left;
   padding:0 0 7px;font-size:7.5pt;letter-spacing:.14em;text-transform:uppercase;font-weight:600;
   border-bottom:1px solid rgba(27,58,92,.28)}
 .letter-sheet .invtbl thead th.r,.letter-sheet .invtbl td.r{text-align:right}
 .letter-sheet .invtbl tbody td{padding:12px 0;border-bottom:1px solid rgba(27,58,92,.14);vertical-align:top;background:transparent}
 .letter-sheet .invtbl .li-title{font-size:10.5pt;color:var(--lt-ink)}
 .letter-sheet .invtbl .li-sub{font-size:8.5pt;color:rgba(27,58,92,.58);margin-top:4px;line-height:1.45}

 .letter-sheet .inv-totalwrap{display:flex;justify-content:flex-end;margin-top:10px}
 .letter-sheet .inv-totals{border-collapse:collapse;font-size:10pt;width:auto !important;min-width:64mm !important}
 .letter-sheet .inv-totals td{padding:5px 0;color:rgba(27,58,92,.78)}
 .letter-sheet .inv-totals td.r{text-align:right;color:var(--lt-ink);padding-left:26px}
 .letter-sheet .inv-totals tr.grand td{border-top:1.5px solid var(--purple);padding-top:9px;
   font-weight:700;font-size:11.5pt;color:var(--purple)}

 .letter-sheet .paypanel{margin-top:26px;border:1px solid rgba(27,58,92,.18);border-radius:6px;
   padding:14px 16px;background:var(--stripe)}
 .letter-sheet .paytbl{border-collapse:collapse;font-size:9.5pt;width:auto !important;min-width:0 !important}
 .letter-sheet .paytbl td{padding:3px 22px 3px 0;color:rgba(27,58,92,.58);white-space:nowrap}
 .letter-sheet .paytbl th{padding:3px 0;text-align:left;font-weight:600;color:var(--lt-ink)}
 .letter-sheet .paydue{margin-top:10px;padding-top:9px;border-top:1px solid rgba(27,58,92,.14);font-size:10pt}
 .letter-sheet .paydue strong{color:var(--purple)}
 .letter-sheet .vatno{font-size:8.5pt;color:rgba(27,58,92,.58);margin-top:12px}
 .letter-sheet .invnotes{font-size:9.5pt;color:rgba(0,8,25,.78);margin-top:12px;padding-top:10px;
   border-top:1px solid rgba(27,58,92,.14)}
@media print{
  .letter-sheet .invtbl,.letter-sheet .inv-totalwrap,.letter-sheet .paypanel,
  .letter-sheet .inv-cols,.letter-sheet .inv-head{break-inside:avoid;page-break-inside:avoid}
  .letter-sheet .invtbl{width:100% !important;min-width:0 !important;display:table !important}
  .letter-sheet .inv-meta,.letter-sheet .paytbl{width:auto !important;min-width:0 !important;display:table !important}
  .letter-sheet .inv-totals{width:auto !important;min-width:64mm !important;display:table !important}
}

/* service line tag on the lead row */
 .svcbadge{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:999px;
   background:#EDE3FC;color:#5700C4;font-size:10px;font-weight:700;letter-spacing:.02em;vertical-align:1px}
 .loe-note{margin:0;font-size:12.5px;color:var(--muted);background:var(--line-soft);
   border-radius:8px;padding:9px 11px}
 .loe-note.warn{color:#8A3D33;background:#FCEEEA;border:1px solid #F0C7BC}

/* v7.5 meeting reminder safety controls */

.table-reminder{display:flex;align-items:center;justify-content:center;width:100%;margin-top:6px;padding:4px 7px;border-radius:7px;border:1px solid var(--line);background:#fff;color:var(--ink);font:700 10.5px 'Inter',sans-serif;line-height:1.2;cursor:pointer;white-space:nowrap;transition:.12s ease}
.table-reminder:hover{transform:translateY(-1px);box-shadow:0 2px 7px rgba(15,23,42,.08)}
.table-reminder.attention{background:#FFF4D8;color:#6E4E00;border-color:#E5C766}
.table-reminder.warn{background:#FFF8E8;color:#7A5600;border-color:#EED79A}
.table-reminder.ok{background:#E8F7EF;color:#176B43;border-color:#BDE5CF}
.table-reminder.sent{background:#E8F3FF;color:#155E9A;border-color:#BEDAF2}
.rembadge{display:inline-flex;align-items:center;gap:4px;margin-top:4px;padding:2px 7px;border-radius:999px;font-size:10.5px;font-weight:700;line-height:1.4;white-space:nowrap}
.rembadge.warn{background:#FFF4D8;color:#7A5600;border:1px solid #EED79A}
.rembadge.ok{background:#E8F7EF;color:#176B43;border:1px solid #BDE5CF}
.rembadge.sent{background:#E8F3FF;color:#155E9A;border:1px solid #BEDAF2}
.reminder-card{margin:16px 0 18px;padding:15px;border:1px solid var(--line);border-radius:14px;background:#F8FBFF}
.reminder-card .reminder-title{font:700 15px 'Space Grotesk',sans-serif;margin-bottom:9px;display:flex;align-items:center;justify-content:space-between;gap:10px}
.reminder-card .reminder-row{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding:7px 0;border-top:1px solid rgba(148,163,184,.18);font-size:12.5px}
.reminder-card .reminder-row:first-of-type{border-top:0}
.reminder-card .rk{color:var(--muted);min-width:112px}.reminder-card .rv{text-align:right;font-weight:600;color:var(--text)}
.reminder-card .reminder-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:11px}
.reminder-card .safe-note{margin-top:9px;color:var(--muted);font-size:11.5px;line-height:1.45}
.reminder-warning{grid-column:1/-1;padding:11px 13px;border-radius:10px;background:#FFF8E7;border:1px solid #EFD99E;color:#624A0B;font-size:12.5px;line-height:1.45}
.reminder-email-preview{grid-column:1/-1;margin-top:4px;border:1px solid var(--line);border-radius:12px;background:white;padding:14px}
.reminder-email-preview .k{font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:700;margin-bottom:5px}
.reminder-email-preview .subject{font-weight:700;margin-bottom:14px}
.reminder-email-preview pre{margin:0;white-space:pre-wrap;font:13px/1.55 Inter,Arial,sans-serif;color:var(--text)}


/* v7.9 — a save that has been failing for minutes needs something that stays on
   screen. A transient toast was too quiet for "your work is not saved". */
.save-alarm{position:fixed;left:0;right:0;bottom:0;z-index:400;background:#B42318;color:#fff;
  font:500 13.5px/1.5 'Inter',sans-serif;padding:12px 18px;text-align:center;
  box-shadow:0 -6px 20px rgba(180,35,24,.28)}
.save-alarm[hidden]{display:none}
.save-alarm strong{font-weight:700}
