/* Nexa design tokens. Family ink + per-product colour (Wagewise: ledger teal) + payday gold for the one key action. */
:root{
  --ink:#12263a; --ink-2:#1d3a52; --paper:#f4f7f6; --card:#ffffff; --line:#d9e2e0; --muted:#5a6b76;
  --accent:#0f6b66; --accent-ink:#ffffff; --accent-soft:#e2f0ee;
  --gold:#f2b33d; --gold-ink:#2b1d00; --gold-soft:#fdf2db;
  --warn:#8f5a00; --warn-soft:#fbefd8; --err:#b42318; --err-soft:#fde8e6; --ok:#0f6b66; --ok-soft:#e2f0ee;
  --bg:var(--paper); --radius:12px; --radius-s:8px;
  --font-head:"Schibsted Grotesk",ui-sans-serif,system-ui,sans-serif;
  --font-body:"Figtree",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --paper:#0e1a24; --card:#14232f; --line:#24384a; --muted:#93a5b1; --ink-text:#e8eef2;
    --accent:#4fc1b6; --accent-ink:#06211f; --accent-soft:#163a3a; --gold:#f5c260; --gold-soft:#3a2e14;
    --warn:#f0b75a; --warn-soft:#3a2c12; --err:#f08b80; --err-soft:#3b1d1a; --ok:#4fc1b6; --ok-soft:#163a3a;
  }
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink-text,var(--ink));
  font:15.5px/1.55 var(--font-body);font-feature-settings:"tnum" 0;-webkit-font-smoothing:antialiased}
h1,h2,h3,.brandmark{font-family:var(--font-head);letter-spacing:-.015em;color:var(--ink-text,var(--ink))}
a{color:var(--accent);text-decoration:none} a:hover{text-decoration:underline}
:focus-visible{outline:3px solid var(--gold);outline-offset:2px;border-radius:4px}
header.top{display:flex;align-items:center;gap:28px;padding:0 24px;height:60px;background:var(--ink);color:#fff;position:sticky;top:0;z-index:5}
header.top .brand{color:#fff;text-decoration:none}
header.top nav{display:flex;gap:4px;flex:1;height:100%}
header.top nav a{color:#b9c8d3;display:flex;align-items:center;padding:0 12px;font-weight:600;font-size:14.5px;border-bottom:3px solid transparent}
header.top nav a:hover{color:#fff;text-decoration:none}
header.top nav a.on{color:#fff;border-bottom-color:var(--gold)}
header.top .who{color:#b9c8d3;font-size:13px} header.top .who a{color:#fff}
.lockup{display:inline-flex;align-items:center;gap:10px;line-height:1}
.lock-text{display:flex;flex-direction:column;gap:2px}
.lock-family{font:600 10.5px/1 var(--font-body);letter-spacing:.08em;color:var(--muted)}
.lock-product{font:700 19px/1 var(--font-head);letter-spacing:-.02em;color:var(--ink-text,var(--ink))}
.lockup.on-dark .lock-family{color:#8fa6b6} .lockup.on-dark .lock-product{color:#fff}
main{max-width:1180px;margin:0 auto;padding:28px 16px 64px}
h1{font-size:28px;line-height:1.15;margin:0 0 6px;font-weight:700} h2{font-size:18px;margin:30px 0 10px;font-weight:700}
.sub{color:var(--muted);margin:0 0 22px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px}
.grid{display:grid;gap:16px} .g2{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
.g3{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap} .spread{justify-content:space-between}
table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
th,td{padding:10px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
th{font-size:12.5px;color:var(--muted);font-weight:600;background:transparent}
tr:last-child td{border-bottom:0}
td.n,th.n{text-align:right;white-space:nowrap}
.tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--card)}
.tablewrap table td:first-child,.tablewrap table th:first-child{padding-left:16px}
.tablewrap table tr:first-child th{background:color-mix(in srgb,var(--paper) 60%,var(--card))}
label{display:block;font-size:13px;color:var(--muted);margin:0 0 5px;font-weight:500}
input,select,textarea{width:100%;padding:10px 11px;border:1px solid var(--line);border-radius:var(--radius-s);background:var(--card);color:var(--ink-text,var(--ink));font:inherit}
input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:var(--accent)}
input.money{text-align:right;min-width:92px;padding:7px 9px;font-variant-numeric:tabular-nums}
.check{display:flex;gap:9px;align-items:center;color:var(--ink-text,var(--ink));font-size:14.5px;font-weight:400}
.check input{width:auto;accent-color:var(--accent)}
fieldset{border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px 6px;margin:0 0 16px;background:var(--card)}
legend{font:700 15px var(--font-head);padding:0 6px;color:var(--ink-text,var(--ink))}
.f{margin-bottom:12px}
.btn{display:inline-flex;align-items:center;gap:6px;padding:10px 16px;border-radius:var(--radius-s);border:1px solid var(--line);background:var(--card);color:var(--ink-text,var(--ink));font:600 14.5px var(--font-body);cursor:pointer;text-decoration:none}
.btn:hover{text-decoration:none;border-color:var(--muted)}
.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.btn.primary:hover{filter:brightness(1.07)}
.btn.go{background:var(--gold);color:var(--gold-ink);border-color:var(--gold);box-shadow:0 1px 0 rgba(0,0,0,.08)}
.btn.go:hover{filter:brightness(1.04)}
.btn.danger{color:var(--err)} .btn.small{padding:6px 11px;font-size:13px}
.pill{display:inline-block;padding:2px 9px;border-radius:99px;font-size:12px;font-weight:600;background:var(--line);color:var(--ink-text,var(--ink))}
.pill.ok{background:var(--ok-soft);color:var(--ok)} .pill.warn{background:var(--warn-soft);color:var(--warn)}
.pill.err{background:var(--err-soft);color:var(--err)}
.flash{padding:11px 14px;border-radius:var(--radius-s);margin-bottom:14px;background:var(--ok-soft);color:var(--ok)}
.flash.err{background:var(--err-soft);color:var(--err)}
.banner{padding:11px 14px;border-radius:var(--radius-s);margin-bottom:16px;background:var(--warn-soft);color:var(--warn);font-weight:600}
.banner.live{background:var(--err-soft);color:var(--err)}
.stat{font:700 24px/1.2 var(--font-head);font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.stat small{display:block;font-size:12px;font-weight:500;color:var(--muted)}
.muted{color:var(--muted)} .err-text{color:var(--err)} .tiny{font-size:12px}
pre{background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:12px;overflow:auto;font-size:12px;max-height:420px}
.auth{max-width:400px;margin:10vh auto}
/* split sign-in screen */
.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-height:100vh}
.split .side{background:var(--ink);color:#dfe8ee;padding:48px;display:flex;flex-direction:column;justify-content:space-between}
.split .side h2{font:700 40px/1.08 var(--font-head);color:#fff;margin:0 0 14px;letter-spacing:-.025em;max-width:13ch}
.split .side p{color:#a9bccb;max-width:40ch;margin:0}
.split .side .proof{display:grid;gap:10px;font-size:14px;color:#c6d4de}
.split .side .proof span{display:flex;gap:10px;align-items:baseline}
.split .side .proof b{color:var(--gold);font-weight:700}
.split .form{display:flex;align-items:center;justify-content:center;padding:32px 20px}
.split .form > div{width:100%;max-width:400px}
@media (max-width:820px){.split{grid-template-columns:1fr}.split .side{padding:28px 20px}.split .side h2{font-size:30px;margin-top:22px}.split .side .proof{margin-top:18px}}
@media (max-width:760px){header.top{flex-wrap:wrap;height:auto;padding:10px 16px;gap:8px}header.top nav{order:3;width:100%;overflow-x:auto;height:40px}header.top nav a{padding:0 10px}}
@media print{header.top,.noprint{display:none!important} body{background:#fff;color:#000} main{padding:0}}
/* payslip */
.slip{background:#fff;color:#111;border:1px solid #ccc;border-radius:6px;padding:22px;margin:0 auto 24px;max-width:760px;page-break-after:always}
.slip h3{margin:0} .slip table td,.slip table th{border-bottom:1px solid #e5e5e5;padding:5px 6px;color:#111}
.slip .head{display:flex;justify-content:space-between;border-bottom:2px solid #0f6b66;padding-bottom:10px;margin-bottom:12px}
.slip .net{font-size:20px;font-weight:700;text-align:right;margin-top:10px}
/* client tabs */
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin:0 0 20px;overflow-x:auto}
.tabs a{padding:9px 14px;color:var(--muted);border-bottom:2px solid transparent;white-space:nowrap;font-weight:600;font-size:14px}
.tabs a:hover{color:var(--ink);text-decoration:none}
.tabs a.on{color:var(--accent);border-bottom-color:var(--accent)}
/* to-do */
.todo{list-style:none;margin:0;padding:0}
.todo li{display:flex;gap:12px;align-items:center;padding:11px 14px;border-bottom:1px solid var(--line)}
.todo li:last-child{border-bottom:0}
.todo .when{min-width:64px;font-weight:700;font-variant-numeric:tabular-nums}
.todo .when.late{color:var(--err)}
.todo .what{flex:1}
.todo .who{color:var(--muted);font-size:13px}
.dot{width:8px;height:8px;border-radius:50%;background:var(--accent);flex:none}
.dot.warn{background:var(--warn)} .dot.err{background:var(--err)}
.steps{counter-reset:s;list-style:none;padding:0;margin:0}
.steps li{counter-increment:s;padding:10px 0 10px 40px;position:relative;border-bottom:1px solid var(--line)}
.steps li::before{content:counter(s);position:absolute;left:0;top:9px;width:26px;height:26px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;font-weight:700;font-size:13px}
.steps li.done::before{content:"✓";background:var(--accent);color:var(--accent-ink)}
.drop{border:2px dashed var(--line);border-radius:var(--radius);padding:28px;text-align:center;background:var(--card)}
.doc{background:#fff;color:#111;border:1px solid #ccc;border-radius:6px;padding:26px;margin:0 auto 24px;max-width:780px;page-break-after:always}
.doc h3{margin:0 0 4px} .doc table td,.doc table th{border-bottom:1px solid #e5e5e5;padding:6px;color:#111}
.doc .head{display:flex;justify-content:space-between;border-bottom:2px solid #1f5f46;padding-bottom:10px;margin-bottom:14px}
.doc pre{white-space:pre-wrap;font:15px/1.6 Georgia,serif;background:none;border:0;padding:0;max-height:none;color:#111}
/* pay run steps and checks */
.stepbar{display:flex;list-style:none;padding:0;margin:0 0 18px;counter-reset:st;gap:6px;flex-wrap:wrap}
.stepbar li{counter-increment:st;flex:1;min-width:150px;padding:9px 12px 9px 40px;position:relative;background:var(--card);border:1px solid var(--line);border-radius:8px;color:var(--muted);font-weight:600;font-size:14px}
.stepbar li::before{content:counter(st);position:absolute;left:10px;top:8px;width:22px;height:22px;border-radius:50%;background:var(--line);color:var(--ink);display:grid;place-items:center;font-size:12px}
.stepbar li.on{color:var(--ink);border-color:var(--accent)}
.stepbar li.on::before{background:var(--accent);color:var(--accent-ink)}
.stepbar li.done::before{content:"✓";background:var(--accent-soft);color:var(--accent)}
.checklist{list-style:none;margin:10px 0 0;padding:0;font-size:14px}
.checklist li{padding:6px 0 6px 18px;position:relative;border-top:1px solid var(--line)}
.checklist li::before{content:"";position:absolute;left:2px;top:13px;width:8px;height:8px;border-radius:50%;background:var(--muted)}
.checklist li.err::before{background:var(--err)} .checklist li.warn::before{background:var(--warn)}
.checklist li.err{color:var(--err)}
.ok-card{border-color:var(--accent);background:var(--accent-soft)}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.foot{max-width:1180px;margin:0 auto;padding:0 16px 32px;color:var(--muted);font-size:12.5px;display:flex;gap:14px;flex-wrap:wrap}
.foot a{color:var(--muted)}
.legal{max-width:760px} .legal h2{font-size:16px;margin-top:22px} .legal li{margin-bottom:6px}
.legal table{margin:8px 0;border:1px solid var(--line)} .legal th{text-transform:none;font-size:13px;letter-spacing:0;color:var(--ink);width:24%}
.tick{width:26px;height:26px;border-radius:7px;border:2px solid var(--line);background:var(--card);color:var(--accent-ink);cursor:pointer;font-weight:700;padding:0}
.tick.on{background:var(--accent);border-color:var(--accent)}
.brandmark{color:var(--accent)}

td.who{min-width:150px;white-space:nowrap}
/* staff and client apps */
.portal-head{background:var(--card);border-bottom:3px solid var(--brand,var(--accent))}
.portal-in{max-width:1000px;margin:0 auto;padding:14px 16px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.portal-logo{max-height:40px;max-width:180px}
.portal-firm{font:700 18px var(--font-head);color:var(--brand,var(--accent))}
main.portal{max-width:1000px}
main.portal .btn.primary{background:var(--brand,var(--accent));border-color:var(--brand,var(--accent))}
.row.sick{flex-wrap:nowrap}
@media (max-width:640px){
  table.stack tr:first-child{display:none}
  table.stack tr{display:block;border-bottom:1px solid var(--line);padding:8px 0}
  table.stack td{display:flex;justify-content:space-between;align-items:center;gap:12px;border:0;padding:5px 14px;text-align:right}
  table.stack td.who{font-weight:700;font-size:16px;text-align:left}
  table.stack td[data-label]::before{content:attr(data-label);color:var(--muted);font-size:13px;text-align:left}
  table.stack td input.money{max-width:130px}
  .row.sick{flex-wrap:wrap;justify-content:flex-end}.row.sick input{max-width:170px}
}
/* classic payslip (laid out like Moneysoft's) */
.ms{--b:#0000cc;--g:#f4f4f4;background:#fff;color:#000;font:11px/1.3 Verdana,Tahoma,Arial,sans-serif;max-width:780px;margin:0 auto 26px;page-break-after:always}
.ms table.ms-top{width:100%;border-collapse:collapse;table-layout:fixed;font-variant-numeric:normal}
.ms table.ms-top th{background:var(--b);color:#fff;font:bold 9.5px Verdana,Arial,sans-serif;text-align:center;padding:3px 4px;border:1px solid var(--b);letter-spacing:.02em}
.ms table.ms-top td{border:1px solid #000;text-align:center;font-weight:bold;padding:5px 4px;color:#000;background:#fff}
.ms-body{display:grid;grid-template-columns:25% 18.5% 28.5% 28%;border:1px solid var(--b);border-top:0}
.ms-col{display:flex;flex-direction:column;border-right:1px solid var(--b);min-width:0}
.ms-col:last-child{border-right:0}
.ms-h{background:var(--b);color:#fff;font:bold 9.5px Verdana,Arial,sans-serif;text-align:center;padding:3px 4px;display:flex;justify-content:center;gap:18px}
.ms-in{background:var(--g);padding:10px 6px;flex:1}
.ms-tall{min-height:250px}
.ms-ytd .ms-in{min-height:340px}
.ms-r{display:flex;justify-content:space-between;gap:6px;padding:1px 0}
.ms-r span:last-child,.ms-r b{text-align:right;white-space:nowrap}
.ms-r b{font-weight:bold}
.ms-gap{height:62px}.ms-gap2{height:22px}
.ms-foot{display:flex;flex-direction:column}
.ms-box{display:grid;grid-template-columns:48% 52%;border-top:1px solid var(--b);min-height:31px}
.ms-bl{background:var(--b);color:#fff;font:bold 9.5px Verdana,Arial,sans-serif;display:flex;align-items:center;justify-content:center;text-align:center;padding:3px}
.ms-bv{background:#fff;font:bold 13px Verdana,Arial,sans-serif;display:flex;align-items:center;justify-content:flex-end;padding:3px 8px;border:1px solid var(--b);border-width:0 0 0 1px}
.ms-rate .ms-box.ms-low{margin-top:auto}
.ms-net{min-height:62px}.ms-net .ms-bl{font-size:17px}.ms-net .ms-bv{font-size:17px}
@media print{.ms{max-width:none}}
@media (max-width:640px){.ms{font-size:9.5px}.ms-body{grid-template-columns:1fr 1fr}.ms-ytd .ms-in{min-height:0}.ms-tall{min-height:0}.ms-gap,.ms-gap2{height:8px}}
/* CaptureBooks */
.eyebrowx{margin:0 0 2px;font:700 12px var(--font-body);text-transform:uppercase;letter-spacing:.06em;color:var(--accent)}
.g3{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.checks{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.checks li{padding:8px 10px;border-radius:var(--radius-s);font-size:14px;font-weight:600}
.checks li.ok{background:var(--ok-soft);color:var(--ok)} .checks li.warn{background:var(--warn-soft);color:var(--warn)} .checks li.block{background:var(--err-soft);color:var(--err)}
.bankrow{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:10px 0;border-bottom:1px solid var(--line)}
table.bank td{vertical-align:middle} table.bank select{max-width:260px;min-width:0} table.bank select[name=vat_code]{width:76px} table.bank tr.posted,table.bank tr.ignored{opacity:.6}
td.in{color:var(--ok);font-weight:700}
.conf{display:inline-block;min-width:38px;text-align:center;border-radius:99px;padding:1px 6px;font-weight:700;background:var(--err-soft);color:var(--err)}
.conf.c2{background:var(--warn-soft);color:var(--warn)} .conf.c3,.conf.c4{background:var(--ok-soft);color:var(--ok)}
.ainote{margin:6px 0 10px}
.rlist{display:grid;gap:12px}
.receipt .rh{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:8px}
.receipt.posted,.receipt.ignored{opacity:.7}
.bigwarn{display:grid;gap:4px;background:var(--err-soft);color:var(--err);border:2px solid var(--err);border-radius:var(--radius);padding:14px 16px;margin:0 0 16px;font-size:16px}
.approve{margin-top:16px;border:2px solid var(--accent)}
label.check{display:flex;gap:8px;align-items:center;font-weight:600} label.check.big{font-size:17px;margin-bottom:12px}
.doc{overflow-x:auto}
.steps li,.soon li{margin-bottom:6px}
.vatbox td{padding:6px 8px;border-bottom:1px solid var(--line)} .vatbox td.n{text-align:right;font-weight:700;white-space:nowrap}
table.bank tr.unsure td{background:var(--warn-soft)} .amber{color:var(--warn);font-weight:700}
tr.late td{background:var(--err-soft)} tr.soon td{background:var(--warn-soft)}
.chat{display:grid;gap:10px;margin:14px 0}.msg{display:flex}.msg.you{justify-content:flex-end}
.msg .bub{max-width:80%;padding:12px 14px;border-radius:16px;background:#fff;border:1px solid var(--line)}
.msg.you .bub{background:var(--accent);color:#fff;border-color:var(--accent)}
.ask{position:sticky;bottom:10px;background:var(--bg);padding:8px 0}
.plans{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.plan{display:flex;flex-direction:column;gap:6px;position:relative}
.plan.pop{border:2px solid var(--accent);box-shadow:var(--shadow)}
.plan.mine{outline:3px solid var(--ok-soft)}
.plan .amt{font:800 30px var(--font-head,inherit);letter-spacing:-.03em}.plan .amt small{font-size:14px;font-weight:600;color:var(--muted)}
.popb{position:absolute;top:-11px;right:12px}
/* Nexa Practice: dashboard, set-up checklist, help button, guides */
.meter{height:8px;background:var(--line);border-radius:99px;overflow:hidden;margin:10px 0}
.meter span{display:block;height:100%;background:var(--ok)}
.steps{list-style:none;padding:0;margin:8px 0 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:6px 16px}
.steps li.done{color:var(--muted)}
.g4{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}
.stat.bad{color:var(--err)}
.helpfab{position:fixed;right:18px;bottom:18px;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:var(--ink,#12263a);color:#fff;font:700 20px/1 var(--font-head);text-decoration:none;box-shadow:0 4px 14px rgba(0,0,0,.18);z-index:50}
.helpfab:hover{filter:brightness(1.15)}
.video{position:relative;padding-top:56.25%;margin:10px 0;border-radius:10px;overflow:hidden;background:#000}
.video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.thread{display:flex;flex-direction:column;gap:8px;margin:10px 0}
.thread .m{max-width:80%;padding:8px 12px;border-radius:12px;background:var(--line)}
.thread .m.firm{align-self:flex-end;background:var(--ok-soft)}
.thread .m small{display:block;color:var(--muted);font-size:11px;margin-top:3px}
