:root{--brand:#4db748;--brand-dark:#2b6e27;--on-brand:#081d0d;--deep:#081d0d;--ink:#0f1a12;--muted:#5b6474;--line:#e2e6ec;--bg:#f5f7f3;--card:#fff;--ok:#15803d;--warn:#b45309;--bad:#b91c1c;--radius:12px;--shadow:0 1px 2px rgba(15,23,42,.06),0 1px 8px rgba(15,23,42,.04);font-family:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:var(--ink);line-height:1.45}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg)}
body{font-size:15px;-webkit-text-size-adjust:100%}
a{color:var(--brand-dark)}
h1{font-size:1.45rem;margin:0 0 .2rem;letter-spacing:-.01em;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
h2{font-size:1.05rem;margin:0 0 .7rem}h3{font-size:.95rem;margin:1rem 0 .5rem}
p{margin:.3rem 0}.muted{color:var(--muted)}.small{font-size:.86rem}.hint{color:var(--muted);font-size:.8rem}.center{text-align:center}.nowrap{white-space:nowrap}.mt{margin-top:.8rem}
:focus-visible{outline:3px solid color-mix(in srgb,var(--brand) 55%,#fff);outline-offset:2px}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.boot{padding:3rem;text-align:center;color:var(--muted)}
.demo-banner{background:#fef3c7;color:#78350f;font-size:.78rem;font-weight:650;text-align:center;padding:.35rem .75rem;border-bottom:1px solid #fcd34d}
.top{display:flex;align-items:center;gap:.75rem;padding:.55rem 1rem;background:var(--card);border-top:4px solid var(--brand);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}
.brand{display:flex;align-items:center;gap:.6rem;min-width:0;flex:1;text-decoration:none;color:var(--ink)}
.brand-name{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tlogo{height:2.1rem;max-width:7rem;object-fit:contain}
.logo{display:inline-grid;place-items:center;min-width:2.1rem;height:2.1rem;padding:0 .3rem;border-radius:9px;background:var(--deep);color:var(--brand);font-weight:800;font-size:.85rem}
.logo.big{min-width:3rem;height:3rem;font-size:1.1rem;border-radius:12px}
.who{display:flex;align-items:center;gap:.6rem;font-size:.85rem;color:var(--muted)}.who-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:12rem}
.nav{display:flex;gap:.2rem;padding:.35rem .6rem;background:var(--card);border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none}
.nav a{padding:.5rem .75rem;border-radius:8px;text-decoration:none;color:var(--ink);font-weight:550;white-space:nowrap}
.nav a:hover{background:var(--bg)}.nav a[aria-current=page]{background:color-mix(in srgb,var(--brand) 16%,#fff);color:var(--brand-dark)}
main{max-width:1180px;margin:0 auto;padding:1.1rem 1rem 4rem}
main.center{min-height:100vh;display:grid;place-items:center;padding:1rem}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:1rem 1.1rem;margin:0 0 1rem;box-shadow:var(--shadow);min-width:0}
.card.error{border-color:#fecaca;background:#fff5f5}
.subcard{background:var(--bg);border-radius:10px;padding:.8rem .8rem .1rem;margin:0 0 .8rem}
.page-head{margin:.2rem 0 1rem}.page-head.row{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:space-between;align-items:flex-end}
.crumb{margin:0 0 .3rem;font-size:.86rem}.crumb a{text-decoration:none}
.grid2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 1rem;align-items:start}
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem;margin-bottom:1rem}.tiles.mini{grid-template-columns:repeat(2,minmax(0,1fr))}
.tile{display:flex;flex-direction:column;gap:.15rem;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:.85rem 1rem;text-decoration:none;color:var(--ink);box-shadow:var(--shadow);min-width:0}
a.tile:hover{border-color:var(--brand)}.tile.hot{border-color:#fecaca;background:#fff7f7}
.tile-label{font-size:.75rem;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.tile-value{font-size:1.55rem;font-weight:750}.tile-value.small-v{font-size:1.2rem}.tile-sub{font-size:.8rem;color:var(--muted)}
.actions{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
.note{background:color-mix(in srgb,var(--brand) 7%,#fff);border:1px solid color-mix(in srgb,var(--brand) 22%,#fff);padding:.6rem .8rem;border-radius:10px;font-size:.88rem;margin:0 0 1rem}
.note.warn{background:#fffbeb;border-color:#fcd34d;color:#713f12}
.empty{color:var(--muted);font-style:italic;margin:.4rem 0}.empty.big{text-align:center;padding:2rem 0;font-size:1.02rem}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;border:1px solid #cdd3dc;background:#fff;color:var(--ink);padding:.5rem .85rem;border-radius:9px;font:inherit;font-weight:600;cursor:pointer;text-decoration:none;min-height:2.5rem;text-align:center}
.btn:hover{border-color:#9aa4b2}.btn:disabled{opacity:.45;cursor:not-allowed}
.btn.primary{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}.btn.primary:hover{filter:brightness(.93)}
.btn.sm{padding:.25rem .6rem;min-height:2.1rem;font-size:.85rem}.btn.full{width:100%}
.btn.disabled{opacity:.55;cursor:not-allowed}
.big-cta{font-size:1.05rem;padding:.8rem 1.2rem;margin:.6rem 0}
.link{background:none;border:none;padding:.2rem;color:var(--brand-dark);font:inherit;cursor:pointer;text-decoration:underline}.link.danger{color:var(--bad)}
.fld{display:block;font-size:.83rem;font-weight:600;color:#334155;margin:0 0 .75rem;min-width:0}
.fld input,.fld select,.fld textarea,.line input,.copyrow input,.sum input{display:block;width:100%;margin-top:.25rem;border:1px solid #cbd5e1;border-radius:8px;padding:.55rem .65rem;font:inherit;font-size:16px;background:#fff;color:var(--ink);min-height:2.6rem}
.fld input[type=color]{padding:.15rem;height:2.6rem}
fieldset{border:0;padding:0;margin:0;min-width:0}fieldset:disabled{opacity:.75}
.form-err{color:var(--bad);font-weight:600;font-size:.88rem;min-height:0}
.check{display:flex;gap:.5rem;align-items:flex-start;font-size:.88rem;margin:0 0 .6rem}.check input{width:1.1rem;height:1.1rem;margin-top:.15rem}
.radios{display:grid;gap:.5rem;margin:0 0 .8rem}.radio{display:flex;gap:.6rem;align-items:flex-start;border:1px solid var(--line);border-radius:10px;padding:.6rem .7rem;font-size:.9rem;cursor:pointer}
.radio:has(input:checked){border-color:var(--brand);background:color-mix(in srgb,var(--brand) 6%,#fff)}.radio input{margin-top:.25rem}
.status-line{margin:0 0 .8rem;font-size:.9rem}
.ok{color:var(--ok);font-weight:700}.nc{display:inline-block;background:#f1f5f9;color:#475569;border:1px dashed #94a3b8;border-radius:6px;font-size:.75rem;font-weight:700;padding:.05rem .4rem;margin-right:.3rem}
.badge{display:inline-block;padding:.12rem .5rem;border-radius:999px;font-size:.72rem;font-weight:750;background:#e2e8f0;color:#334155;letter-spacing:.02em;vertical-align:middle;white-space:nowrap}
.s-draft{background:#f1f5f9;color:#475569}.s-sent{background:#dbeafe;color:#1e40af}.s-partial{background:#fef3c7;color:#92400e}.s-paid{background:#dcfce7;color:#166534}.s-void{background:#e5e7eb;color:#6b7280}.s-overdue{background:#fee2e2;color:#991b1b}
.p-approved{background:#dcfce7;color:#166534}.p-declined,.p-error{background:#fee2e2;color:#991b1b}
.demo-tag{background:#fef3c7;color:#78350f;border-radius:4px;padding:0 .3rem;font-weight:700}
.seg{display:flex;gap:.3rem;overflow-x:auto;margin:0 0 .9rem;scrollbar-width:none}.seg a{padding:.4rem .8rem;border-radius:999px;background:#fff;border:1px solid var(--line);text-decoration:none;color:var(--ink);font-size:.88rem;font-weight:600;white-space:nowrap}
.seg a.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.inv-list{display:grid;gap:.6rem}
.inv-row{display:block;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:.8rem .95rem;text-decoration:none;color:var(--ink);box-shadow:var(--shadow)}
.inv-row:hover{border-color:var(--brand)}
.ir-top{display:flex;align-items:center;gap:.5rem}.ir-num{font-weight:750}.ir-amt{margin-left:auto;font-weight:750}
.ir-mid{display:flex;justify-content:space-between;gap:.5rem;flex-wrap:wrap;margin:.15rem 0 .45rem;font-size:.92rem}
.trail{display:flex;flex-wrap:wrap;gap:.3rem}
.step{font-size:.74rem;font-weight:650;padding:.12rem .5rem;border-radius:999px;background:#f1f5f9;color:#94a3b8;border:1px solid #e2e8f0;white-space:nowrap}
.step.on{background:color-mix(in srgb,var(--brand) 14%,#fff);color:var(--brand-dark);border-color:color-mix(in srgb,var(--brand) 30%,#fff)}
.feed{list-style:none;padding:0;margin:0}.feed li{display:grid;grid-template-columns:1.6rem minmax(0,1fr) auto;gap:.5rem;padding:.55rem 0;border-bottom:1px solid #f1f5f9;font-size:.9rem;align-items:start}
.ficon{font-size:1rem;line-height:1.3}
.plist{list-style:none;padding:0;margin:0}.plist li{display:flex;justify-content:space-between;gap:.75rem;padding:.6rem 0;border-bottom:1px solid #f1f5f9;align-items:flex-start;font-size:.92rem}
.facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;margin:.8rem 0 0}.facts div{background:var(--bg);border-radius:8px;padding:.5rem .6rem}.facts dt{font-size:.72rem;color:var(--muted);font-weight:700;text-transform:uppercase}.facts dd{margin:0;font-size:.85rem;font-weight:600}
.copyrow{display:flex;gap:.5rem;align-items:stretch;margin-top:.25rem}.copyrow input{margin:0;font-size:.85rem;min-width:0;flex:1}.copyrow .btn{flex:none}
.tbl{width:100%;border-collapse:collapse;font-size:.88rem}.tbl th{text-align:left;font-size:.72rem;text-transform:uppercase;color:var(--muted);border-bottom:2px solid var(--line);padding:.4rem .3rem}
.tbl td{border-bottom:1px solid #f1f5f9;padding:.5rem .3rem;vertical-align:top}.tbl .r{text-align:right;white-space:nowrap}.tbl tr.tot td{font-weight:800;border-top:2px solid var(--line)}
.tbl-wrap{overflow-x:auto}
.line{display:grid;grid-template-columns:minmax(0,1fr) 4.2rem 6.5rem 6rem 1.8rem;gap:.4rem;align-items:center;margin:0 0 .45rem}.line input{margin:0}
.line.head{font-size:.72rem;color:var(--muted);font-weight:700;text-transform:uppercase;margin:0 0 .25rem}.l-amt{text-align:right;font-weight:650;font-size:.9rem}
.sum{max-width:320px;margin:.8rem 0 1rem auto}.sum>div{display:flex;justify-content:space-between;align-items:center;padding:.2rem 0;gap:1rem}.sum .tot{font-size:1.1rem;border-top:1px solid var(--line);padding-top:.45rem}
.sum input.tax{width:5.5rem;margin:0;text-align:right}
.brandrow{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin:0 0 .8rem}.imgbox{height:96px;border:1px dashed #cbd5e1;border-radius:10px;display:grid;place-items:center;margin:.3rem 0 .4rem;background:repeating-conic-gradient(#f8fafc 0 25%,#fff 0 50%) 0 0/16px 16px;overflow:hidden}
.imgbox img{max-width:90%;max-height:84px;object-fit:contain}.filebtn{cursor:pointer}
details summary{cursor:pointer;font-weight:650;font-size:.92rem;padding:.3rem 0}hr{border:0;border-top:1px solid var(--line);margin:1rem 0}
.setup{text-align:center;padding:1.6rem 1.2rem}.setup p{max-width:34rem;margin:.4rem auto}.setup-icon{font-size:2.2rem}
.email-prev{margin-top:.8rem}.email-prev iframe{width:100%;height:520px;border:1px solid var(--line);border-radius:10px;margin-top:.4rem;background:#f3f4f6}
.auth{width:100%;max-width:420px}.auth-brand{display:flex;gap:.8rem;align-items:center;margin-bottom:1rem}.auth-brand h1{margin:0}
.toast{position:fixed;left:50%;bottom:1.2rem;transform:translate(-50%,150%);background:var(--ink);color:#fff;padding:.65rem 1rem;border-radius:10px;font-size:.9rem;transition:transform .2s;z-index:50;max-width:92vw}
.toast.show{transform:translate(-50%,0)}.toast.bad{background:var(--bad)}
@media (max-width:820px){.grid2{grid-template-columns:minmax(0,1fr)}}
@media (max-width:560px){main{padding:.8rem .7rem 4rem}.nav{justify-content:space-between;padding:.3rem .15rem;gap:0}.nav a{padding:.5rem .3rem;font-size:.76rem;letter-spacing:-.01em}.brand.has-logo .brand-name{display:none}.who-name{display:none}h1{font-size:1.3rem}
 .line{grid-template-columns:minmax(0,1fr) 3.4rem 5.4rem 1.6rem}.line .l-amt,.line.head span:nth-child(4){display:none}
 .facts{grid-template-columns:minmax(0,1fr)}.tile-value{font-size:1.3rem}.brandrow{grid-template-columns:1fr}.feed li{grid-template-columns:1.4rem minmax(0,1fr)}.feed li>.nowrap{grid-column:2}}

/* Sola application */
.appform h2{margin-bottom:.2rem}.appform .hint{margin-bottom:.8rem}
.grid2.tight{gap:0 .7rem}
@media (max-width:820px){.grid2.tight{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
@media (max-width:360px){.grid2.tight{grid-template-columns:minmax(0,1fr)}}
.addr3{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,.8fr) minmax(0,1fr);gap:0 .6rem}
fieldset.fset{border:0;padding:0;margin:0 0 .85rem;min-width:0}fieldset.fset legend{padding:0;margin-bottom:.3rem;font-size:.83rem;font-weight:600;color:#334155}
.seg3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.4rem}
.pill{display:flex;align-items:center;justify-content:center;gap:.35rem;border:1px solid #cbd5e1;border-radius:9px;padding:.55rem .3rem;font-weight:600;font-size:.88rem;cursor:pointer;background:#fff;text-align:center}
.pill:has(input:checked){border-color:var(--brand);background:color-mix(in srgb,var(--brand) 8%,#fff);color:var(--brand-dark)}
.pill input{margin:0;width:1rem;height:1rem;flex:none}
.btn.wide{width:100%}.btn.link{background:none;border:0;color:var(--brand-dark);text-decoration:underline;padding:.4rem .2rem}
.btn.link.danger{color:var(--bad)}
.btnrow{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-top:.6rem}
.ticks{list-style:none;padding:0;margin:.5rem 0 .7rem;display:grid;gap:.3rem;font-size:.9rem;color:var(--muted)}
.ticks li.done{color:var(--ok);font-weight:600}.ticks li span{display:inline-block;width:1.1rem}
.app-card .note.notsent{font-size:.92rem}
.prod h3{margin-top:.2rem;display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}
.state-local{background:#fef3c7;color:#78350f}.state-sent{background:#dcfce7;color:#14532d}.state-partial{background:#fee2e2;color:#7f1d1d}
.applist li{flex-wrap:wrap}

.sendsw{border:1px solid #fcd34d;background:#fffbeb;border-radius:10px;padding:.6rem .7rem}

.swatches{display:flex;gap:.45rem;flex-wrap:wrap;margin:-.2rem 0 .7rem}.sw{width:2rem;height:2rem;border-radius:999px;border:2px solid #fff;box-shadow:0 0 0 1px #cbd5e1;cursor:pointer}
.paypreview{position:relative;display:flex;align-items:center;justify-content:space-between;gap:.6rem;border:1px solid var(--line);border-radius:10px;padding:1rem .8rem .7rem;margin:0 0 .9rem;overflow:hidden;background:#fff}
.pp-band{position:absolute;left:0;right:0;top:0;height:6px;background:var(--pb,#4db748)}.pp-title{font-weight:800;color:var(--pa,#081d0d)}
.pp-btn{background:var(--pb,#4db748);color:var(--pt,#fff);font-weight:800;border-radius:9px;padding:.45rem .9rem}

/* signup choices, password checklist, web address */
.gbtn{display:flex;align-items:center;justify-content:center;gap:10px;background:#fff;border:1px solid #cbd5e1;color:#111827;font-weight:600}
.gbtn[disabled]{opacity:.55;cursor:not-allowed}
.gnote{margin:.3rem 0 0}
.or{text-align:center;color:#64748b;font-size:.85rem;margin:.7rem 0}
.choose{margin:.8rem 0}
.pwrules{text-align:left;list-style:none;padding:0;margin:.2rem 0 .8rem;display:grid;grid-template-columns:1fr 1fr;gap:.25rem .8rem;font-size:.85rem;color:#64748b}
.pwrules li::before{content:'○';display:inline-block;width:1.2em;color:#94a3b8}
.pwrules li.ok{color:#2b6e27;font-weight:600}
.pwrules li.ok::before{content:'✓';color:#2b6e27}
.slugbox{display:flex;align-items:stretch;border:1px solid #cbd5e1;border-radius:8px;overflow:hidden;background:#fff}
.slugbox .slugpre{display:flex;align-items:center;padding:0 .5rem;background:#f1f5f2;color:#475569;font-size:.8rem;white-space:nowrap;max-width:55%;overflow:hidden;text-overflow:ellipsis;border-right:1px solid #e2e8f0}
.slugbox input{border:0!important;border-radius:0!important;flex:1;min-width:0;box-shadow:none!important}
.slugmsg.ok{color:#2b6e27}.slugmsg.bad{color:#b91c1c}
.uris{margin:.3rem 0 .6rem;padding-left:1.1rem}.uris code{word-break:break-all;font-size:.78rem}

/* invoice lines: qty + unit, items picker */
.l-qbox{display:flex;flex-direction:column;gap:.2rem;min-width:0}
.l-qbox .l-unit{font-size:.78rem;padding:.15rem .2rem;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:var(--ink);min-height:1.7rem}
.l-qbox .l-qty:disabled{background:#f1f5f9;color:#64748b}
.pickfld select{border-color:#4db748}
.taxck{align-self:end;margin-bottom:.6rem}
.plist.items li{align-items:flex-start}
.feenote{margin-top:-.2rem}
