:root{--ink:#16202c;--muted:#56606d;--line:#d9dee5;--bg:#f5f6f8;--card:#fff;--brand:#23395b;--accent:#b35a12;--ok:#0b6e4f;--warn:#a4370d;--soft:#edf1f6;--r:12px;--doc-accent:#23395b}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{margin:0;font:16px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--bg)}
a{color:var(--brand)}
:focus-visible{outline:3px solid #e8812f;outline-offset:2px}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:-999px;top:0;background:#fff;color:var(--brand);padding:10px 14px;z-index:20}
.skip:focus{left:8px;top:8px}
.top{position:sticky;top:0;z-index:5;background:var(--brand);color:#fff;padding:10px 12px 6px;display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px;padding-top:max(10px,env(safe-area-inset-top))}
.brand{display:flex;align-items:center;gap:8px;color:#fff;text-decoration:none;font-weight:700;font-size:1.05rem;min-height:36px}
.brand img{border-radius:7px}
.top nav{display:flex;gap:2px;overflow-x:auto;flex:1 1 100%;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.top nav::-webkit-scrollbar{display:none}
.top nav.more{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 44px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 44px),transparent)}
.top nav a{color:#dbe5f1;text-decoration:none;padding:8px 11px;border-radius:999px;font-size:.92rem;white-space:nowrap;min-height:40px;display:inline-flex;align-items:center}
.top nav a.on{background:rgba(255,255,255,.18);color:#fff;font-weight:600}
main{max-width:820px;margin:0 auto;padding:14px 14px 40px}
main:focus{outline:none}
h1{font-size:1.4rem;line-height:1.25;margin:.3em 0 .5em}
h1:focus{outline:none}
h2{font-size:1.1rem;margin:1.3em 0 .5em}
.sub{color:var(--muted);margin:.2em 0 1em;font-size:.93rem}
.small{font-size:.86rem;color:var(--muted)}
.empty{color:var(--muted);padding:10px 0;list-style:none}
.crumbs{margin:0 0 4px;font-size:.92rem}
.crumbs a{display:inline-block;padding:6px 0}
.btn{font:inherit;font-size:.95rem;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:8px 16px;border-radius:10px;border:1px solid var(--brand);background:var(--brand);color:#fff;text-decoration:none;cursor:pointer}
.btn.ghost{background:#fff;color:var(--brand)}
.btn.big{min-height:50px;font-size:1.02rem;padding:10px 20px}
.btn.sm{min-height:38px;padding:6px 12px;font-size:.88rem}
.btn.danger{color:var(--warn);border-color:#e3b9a9}
.btn.disabled,.btn[aria-disabled=true]{opacity:.5;cursor:not-allowed}
.btn.file{position:relative;overflow:hidden}
.link{font:inherit;font-size:.9rem;background:none;border:0;color:var(--brand);text-decoration:underline;cursor:pointer;padding:8px 6px;min-height:40px}
.link.danger{color:var(--warn)}
.link[disabled]{opacity:.4;cursor:default}
.actions{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}
.actions.bar{border-top:1px solid var(--line);padding-top:14px}
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:14px;margin:0 0 14px;min-width:0}
fieldset.panel legend{font-weight:700;padding:0 6px;font-size:1rem}
.panel.tip{background:#fff7ec;border-color:#f0d3ad}
.panel.tip p{margin-top:0}
label{display:block;font-size:.88rem;font-weight:600;color:#2c3744;margin:0 0 10px}
.flabel{display:block;font-size:.88rem;font-weight:600;color:#2c3744;margin-bottom:0}
.field{margin:0 0 10px}
input,select,textarea{display:block;width:100%;font:inherit;font-weight:400;font-size:16px;color:var(--ink);padding:10px 11px;border:1px solid #c3cad4;border-radius:9px;background:#fff;margin-top:4px;min-height:44px}
textarea{resize:vertical}
input[type=checkbox]{width:22px;height:22px;min-height:0;margin:2px 0 0;flex:none;accent-color:var(--brand)}
input[type=color]{padding:4px;height:46px;max-width:120px}
label.check{display:flex;gap:10px;align-items:flex-start;font-weight:400}
.grid2,.grid3,.grid4{display:grid;gap:0 12px;grid-template-columns:1fr 1fr}
.grid3{grid-template-columns:1fr 1fr 1fr}
.grid2 .check{grid-column:1/-1}
.combo{display:flex;gap:6px}
.combo select{width:64px;flex:none}
.client-row{display:flex;gap:8px;align-items:flex-end}
.client-row .grow{flex:1;min-width:0}
.client-row .btn{margin-bottom:10px;white-space:nowrap}
.lines,.items,.rows,.pays,.pick{list-style:none;margin:0;padding:0}
.line,.item{border:1px solid var(--line);border-radius:10px;padding:10px 10px 4px;margin-bottom:10px;background:#fbfcfd}
.line.needs-rate [data-f=rate]{border-color:#e0a36f;background:#fff9f2}
.line .full,.item .full{margin-bottom:8px}
.grid4{grid-template-columns:1.2fr .8fr .9fr 1fr}
.line-foot{display:flex;flex-wrap:wrap;align-items:center;gap:0 4px;border-top:1px dashed var(--line);margin-top:2px}
.line-amt{font-weight:700;margin-right:auto;font-variant-numeric:tabular-nums}
.totals .tr{display:flex;justify-content:space-between;gap:12px;padding:4px 0;font-variant-numeric:tabular-nums}
.totals .tr.sep{border-top:1px solid var(--line);margin-top:4px;padding-top:8px}
.totals .tr.grand{font-weight:800;font-size:1.08rem;border-top:2px solid var(--ink);margin-top:4px;padding-top:8px}
.hint{color:var(--accent);font-size:.88rem;margin:8px 0 0}
.pays li{display:flex;justify-content:space-between;align-items:center;gap:8px;border-bottom:1px solid var(--line);padding:4px 0;flex-wrap:wrap}
.pay-add{margin-top:8px}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:6px 0 4px}
.stat{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:12px;text-decoration:none;color:var(--ink);min-height:96px}
.stat .k{font-size:.82rem;color:var(--muted);font-weight:600}
.stat .v{font-size:1.7rem;font-weight:800;line-height:1.2}
.stat .s{font-size:.88rem;font-variant-numeric:tabular-nums}
.stat.alert{border-color:#e7b3a0;background:#fff5f1}
.stat.alert .v{color:var(--warn)}
.rows li{margin-bottom:8px}
.row{display:flex;justify-content:space-between;gap:10px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px;text-decoration:none;color:var(--ink);min-height:56px}
.row-main{min-width:0;flex:1}
.row-sub{display:block;font-size:.85rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis}
.row-side{display:flex;flex-direction:column;align-items:flex-end;gap:4px;text-align:right}
.amt{font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.pills{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}
.pill{display:inline-block;font-size:.76rem;font-weight:600;padding:2px 9px;border-radius:999px;background:var(--soft);color:var(--brand);vertical-align:middle}
.pill.warn,.pill.inv-unpaid{background:#fdecea;color:#9a2f0a}
.pill.st-approved,.pill.inv-paid{background:#e4f4ec;color:#0a5e43}
.pill.st-declined{background:#eee;color:#555}
.pill.inv-partial,.pill.st-sent{background:#fff1dd;color:#7a4206}
.pill.st-converted{background:#e9e6f8;color:#3f2f8f}
.search input{margin:8px 0}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0}
.chip{font:inherit;font-size:.86rem;border:1px solid var(--line);background:#fff;border-radius:999px;padding:6px 12px;cursor:pointer;min-height:40px;color:var(--ink)}
.chip[aria-pressed=true]{background:var(--brand);border-color:var(--brand);color:#fff}
.count{color:var(--muted);font-size:.88rem}
.pick li button{display:flex;justify-content:space-between;gap:10px;width:100%;text-align:left;font:inherit;background:#fff;border:0;border-bottom:1px solid var(--line);padding:10px 4px;cursor:pointer;min-height:48px;color:var(--ink)}
.pick li button:hover{background:var(--soft)}
.logo-row{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.logo-prev{width:110px;height:70px;border:1px dashed #b8c1cc;border-radius:8px;display:flex;align-items:center;justify-content:center;background:#fff;color:var(--muted);font-size:.85rem}
.logo-prev img{max-width:100%;max-height:100%}
dialog{border:0;border-radius:14px;padding:16px;width:min(560px,94vw);max-height:90vh;overflow:auto;box-shadow:0 10px 40px rgba(0,0,0,.25)}
dialog::backdrop{background:rgba(15,25,40,.45)}
dialog h2{margin-top:0}
.stack>*{margin-top:0}
.toast{position:fixed;left:50%;bottom:calc(18px + env(safe-area-inset-bottom));transform:translateX(-50%) translateY(150%);background:#1b2633;color:#fff;padding:10px 16px;border-radius:10px;font-size:.92rem;max-width:92vw;opacity:0;transition:.2s;z-index:30;pointer-events:none}
.toast.on{transform:translateX(-50%) translateY(0);opacity:1}
.foot{max-width:820px;margin:0 auto;padding:10px 14px 30px;color:var(--muted);font-size:.86rem}
.foot a{display:inline-block;padding:6px 2px}
/* landing */
.home .hero{background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px 16px;margin-top:4px}
.home h1{font-size:1.6rem}
.lead{font-size:1.06rem}
.ticks{padding-left:1.2em}
.ticks li{margin:.45em 0}
.faq dt{font-weight:700;margin-top:12px}
.faq dd{margin:4px 0 0}
.closing{margin-top:22px;text-align:center}
.closing h2{margin-top:.2em}
.closing .actions{justify-content:center}
.mic-tip{margin:0 0 8px}
.legal{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:16px}
.legal .conspicuous{font-weight:700}
/* document sheet */
.sheet-wrap{overflow-x:auto;margin:0 -4px}
.sheet{background:#fff;color:#111;border:1px solid var(--line);border-radius:6px;padding:20px 16px;font-size:13.5px;line-height:1.45;max-width:800px;margin:0 auto}
.sheet p{margin:0}
.sh-head{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;border-bottom:3px solid var(--doc-accent);padding-bottom:12px}
.sh-biz{display:flex;gap:12px;align-items:flex-start}
.sh-logo{max-width:110px;max-height:70px;object-fit:contain}
.sh-name{font-weight:800;font-size:1.15rem}
.sh-title{margin-left:auto}
.sh-kind{font-size:1.5rem;font-weight:800;letter-spacing:.06em;color:var(--doc-accent);text-align:right}
.sh-meta{border-collapse:collapse;margin-left:auto}
.sh-meta th{text-align:left;font-weight:600;color:#555;padding:1px 10px 1px 0}
.sh-meta td{text-align:right}
.sh-parties{display:flex;gap:24px;flex-wrap:wrap;padding:12px 0}
.sh-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:#666;font-weight:700;margin-bottom:2px!important}
.sh-lines{width:100%;border-collapse:collapse;margin-top:6px}
.sh-lines th,.sh-lines td{padding:6px 6px;border-bottom:1px solid #e3e6ea;text-align:left;vertical-align:top}
.sh-lines thead th{background:var(--doc-accent);color:#fff;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em}
.sh-lines .n{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.sh-lines .grp th{background:#f1f3f6;font-weight:700}
.sh-lines .gsub td{font-weight:600;color:#444}
.sh-totals{margin:10px 0 0 auto;border-collapse:collapse;min-width:60%}
.sh-totals th{text-align:left;font-weight:500;padding:4px 12px 4px 0}
.sh-totals td{text-align:right;padding:4px 0;font-variant-numeric:tabular-nums;white-space:nowrap}
.sh-totals .grand th,.sh-totals .grand td{font-weight:800;font-size:1.05rem;border-top:2px solid #111}
.sh-notes{margin-top:14px}
.sh-sign{display:flex;gap:24px;margin-top:28px}
.sh-sign>div{flex:1}
.sh-line{display:block;border-bottom:1px solid #111;height:34px}
.sh-sign p{font-size:.8rem;color:#555;margin-top:4px}
@media (min-width:720px){
  .top{flex-wrap:nowrap}
  .top nav{flex:1 1 auto;justify-content:flex-end}
  .stats{grid-template-columns:repeat(4,1fr)}
  .sheet{padding:32px 36px}
}
@media (max-width:420px){
  .grid4{grid-template-columns:1fr 1fr}
  .grid3{grid-template-columns:1fr 1fr}
  .grid3 label:last-child{grid-column:1/-1}
}
@media (max-width:340px){ .grid2{grid-template-columns:1fr} }
@media print{
  @page{margin:12mm}
  body{background:#fff}
  .top,.foot,.no-print,.toast,.skip,dialog{display:none!important}
  main{padding:0;max-width:none}
  .sheet-wrap{overflow:visible;margin:0}
  .sheet{border:0;padding:0;max-width:none;font-size:11pt}
  .sh-lines thead th{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .sh-lines .grp th{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .sh-lines tr{break-inside:avoid}
}
@media (prefers-reduced-motion:reduce){ .toast{transition:none} }
