:root{--ink:#16233f;--ink-soft:#46506a;--ink-faint:#8b91a7;--paper:#f4f5f1;--surface:#fff;--line:#e2e4dd;--accent:#2e7d5b;--accent-deep:#206145;--amber:#a8731f;--red:#b3422f;--radius:10px;--mono:ui-monospace,"SF Mono","Cascadia Mono",Menlo,Consolas,monospace}*{box-sizing:border-box}body,html{margin:0;padding:0}body{font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--paper);color:var(--ink);font-size:15px;line-height:1.5}a{color:var(--accent-deep);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h1{font-size:1.45rem;letter-spacing:-.01em;margin:0 0 4px}h2{font-size:1.05rem;margin:0 0 12px}.muted{color:var(--ink-faint)}.mono,.num{font-family:var(--mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.shell{display:flex;min-height:100vh}.sidebar{width:230px;flex-shrink:0;background:var(--ink);color:#e8eaf2;display:flex;flex-direction:column;padding:20px 14px;position:-webkit-sticky;position:sticky;top:0;height:100vh}.brand{font-weight:700;font-size:1.1rem;letter-spacing:.02em;color:#fff;padding:4px 10px 18px;display:flex;align-items:baseline;gap:8px}.brand .tick{color:#7fc9a6;font-family:var(--mono)}.nav{display:flex;flex-direction:column;gap:2px;flex:1 1}.nav a{color:#c5cad9;padding:9px 10px;border-radius:8px;font-size:.95rem}.nav a:hover{background:hsla(0,0%,100%,.07);color:#fff;text-decoration:none}.nav a.active{background:hsla(0,0%,100%,.12);color:#fff;font-weight:600}.sidebar .signout{background:none;border:1px solid hsla(0,0%,100%,.25);color:#c5cad9;border-radius:8px;padding:8px 10px;cursor:pointer;font-size:.9rem}.sidebar .signout:hover{color:#fff;border-color:#fff}.main{flex:1 1;padding:28px 32px 60px;max-width:1180px}.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:22px;flex-wrap:wrap}@media (max-width:860px){.shell{flex-direction:column}.sidebar{width:100%;height:auto;position:static;flex-direction:row;align-items:center;flex-wrap:wrap;gap:6px;padding:12px}.brand{padding:0 8px 0 4px}.nav{flex-direction:row;flex-wrap:wrap}.main{padding:18px 14px 50px}}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:14px;gap:14px;margin-bottom:22px}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px}.stat .label{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint)}.stat .value{font-family:var(--mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:1.35rem;font-weight:600;margin-top:4px}.stat.good .value{color:var(--accent-deep)}.stat.warn .value{color:var(--amber)}label{display:block;font-size:.85rem;font-weight:600;margin-bottom:4px;color:var(--ink-soft)}input,select,textarea{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;font:inherit;color:var(--ink);background:#fff}textarea{resize:vertical;min-height:70px}.field{margin-bottom:14px}.grid2{grid-template-columns:1fr 1fr;grid-gap:0 16px}.grid2,.grid3{display:grid;gap:0 16px}.grid3{grid-template-columns:1fr 1fr 1fr;grid-gap:0 16px}@media (max-width:700px){.grid2,.grid3{grid-template-columns:1fr}}.btn{display:inline-block;background:var(--accent);color:#fff;border:none;border-radius:8px;padding:9px 16px;font:inherit;font-weight:600;cursor:pointer}.btn,.btn:hover{text-decoration:none}.btn:hover{background:var(--accent-deep)}.btn.secondary{background:#fff;color:var(--ink);border:1px solid var(--line)}.btn.secondary:hover{background:var(--paper)}.btn.danger{background:#fff;color:var(--red);border:1px solid var(--line)}.btn.danger:hover{border-color:var(--red);background:#fdf4f2}.btn.small{padding:5px 10px;font-size:.85rem;font-weight:500}.btn[disabled]{opacity:.6;cursor:default}.error-box{background:#fdf1ef;border:1px solid #ecc8c0;color:var(--red);border-radius:8px}.error-box,.ok-box{padding:10px 14px;margin-bottom:14px}.ok-box{background:#eef7f2;border:1px solid #c4e0d2;color:var(--accent-deep);border-radius:8px}.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.auth-card{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:30px 28px}.auth-card .brand-lg{font-size:1.3rem;font-weight:700;margin-bottom:2px}.auth-card .sub{color:var(--ink-faint);margin-bottom:20px;font-size:.92rem}.auth-foot{margin-top:16px;font-size:.9rem;color:var(--ink-soft)}.table-wrap{overflow-x:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}table.records{width:100%;border-collapse:collapse;min-width:760px}table.records th{text-align:left;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);white-space:nowrap}table.records td,table.records th{padding:11px 14px;border-bottom:1px solid var(--line)}table.records td{vertical-align:middle}table.records tr:last-child td{border-bottom:none}table.records tr:hover td{background:#fafbf8}td.amount,th.amount{text-align:right;font-family:var(--mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.row-actions{display:flex;gap:6px;flex-wrap:wrap}.badge{display:inline-block;padding:2px 9px;border-radius:99px;font-size:.76rem;font-weight:600;text-transform:capitalize}.badge.paid{background:#e3f2ea;color:var(--accent-deep)}.badge.unpaid{background:#fdf1ef;color:var(--red)}.badge.partial{background:#faf2e2;color:var(--amber)}.badge.cancelled,.badge.refunded{background:#ededed;color:var(--ink-faint)}.badge.type{background:#eceef4;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em;font-size:.7rem}.filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px;align-items:end}.filters .field{margin-bottom:0;min-width:130px;flex:0 1 auto}.filters input[type=search]{min-width:200px}.items-table{width:100%;border-collapse:collapse}.items-table th{text-align:left;font-size:.78rem;color:var(--ink-faint);padding:6px}.items-table td{padding:4px 6px;vertical-align:top}.items-table input{padding:7px 8px}.items-table .line-total{font-family:var(--mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;padding-top:11px;text-align:right;white-space:nowrap}.remove-item{background:none;border:none;color:var(--ink-faint);font-size:1.1rem;cursor:pointer;padding:8px 4px 0}.remove-item:hover{color:var(--red)}.totals-panel{margin-left:auto;max-width:340px;font-size:.95rem}.totals-panel .row{display:flex;justify-content:space-between;padding:5px 0}.totals-panel .row .num{font-family:var(--mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.totals-panel .grand{border-top:2px solid var(--ink);margin-top:6px;padding-top:9px;font-weight:700;font-size:1.05rem}.totals-panel .balance{color:var(--accent-deep);font-weight:700}.editor-section{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;margin-bottom:18px}.editor-section>h2{font-size:.85rem;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-faint)}.doc{background:#fff;max-width:800px;margin:0 auto;padding:48px 52px;border-radius:4px;border:1px solid var(--line);border-top:6px solid var(--ink)}.doc-head{display:flex;justify-content:space-between;gap:24px;margin-bottom:36px;flex-wrap:wrap}.doc-head img.logo{max-height:70px;max-width:220px;object-fit:contain}.doc-title{text-align:right}.doc-title .kind{font-size:1.7rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.doc-title .num{font-family:var(--mono);color:var(--ink-soft);margin-top:2px}.doc-parties{display:flex;justify-content:space-between;gap:24px;margin-bottom:30px;flex-wrap:wrap;font-size:.92rem}.doc-parties .label{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);margin-bottom:4px;font-weight:700}.doc-parties .name{font-weight:700}.doc-meta{text-align:right}.doc table.lines{width:100%;border-collapse:collapse;margin-bottom:22px;font-size:.92rem}.doc table.lines th{text-align:left;border-bottom:2px solid var(--ink);padding:8px;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em}.doc table.lines td{padding:9px 8px;border-bottom:1px solid var(--line);vertical-align:top}.doc table.lines .desc{color:var(--ink-faint);font-size:.85rem}.doc .doc-totals{max-width:300px;margin-left:auto;font-size:.95rem}.doc .doc-totals .row{display:flex;justify-content:space-between;padding:4px 0}.doc .doc-totals .grand{border-top:2px solid var(--ink);font-weight:800;padding-top:8px;margin-top:5px}.doc .doc-notes{margin-top:34px;font-size:.88rem;color:var(--ink-soft)}.doc .doc-notes h3{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);margin:14px 0 4px}.doc .stamp{display:inline-block;border:2px solid;border-radius:6px;padding:2px 12px;font-weight:800;text-transform:uppercase;letter-spacing:.15em;font-size:.85rem;transform:rotate(-4deg)}.doc .stamp.paid{color:var(--accent-deep);border-color:var(--accent-deep)}.doc .stamp.unpaid{color:var(--red);border-color:var(--red)}.doc .stamp.partial{color:var(--amber);border-color:var(--amber)}.doc .stamp.cancelled,.doc .stamp.refunded{color:var(--ink-faint);border-color:var(--ink-faint)}.preview-bar{max-width:800px;margin:0 auto 18px;display:flex;gap:10px;flex-wrap:wrap}@media print{body{background:#fff}.no-print,.preview-bar,.sidebar{display:none!important}.main{padding:0}.doc,.main{max-width:none}.doc{border:none;border-top:6px solid var(--ink);border-radius:0;padding:24px 8px}}@media (prefers-reduced-motion:no-preference){.btn,.nav a{transition:background .15s ease,border-color .15s ease}}@media (max-width:700px){.doc{padding:26px 18px}table.records{min-width:680px}}@page{margin:14mm}.badge.draft{background:#ededed;color:var(--ink-soft)}.badge.sent{background:#e7eefb;color:#2c4f9e}.badge.viewed{background:#eae6fb;color:#5b3fa8}.badge.overdue{background:#fdecea;color:var(--red)}.stat.accent .value{color:var(--accent-deep)}.stat.bad .value{color:var(--red)}.stat .sub{font-size:.78rem;color:var(--ink-faint);margin-top:2px}a.stat{color:inherit;display:block}a.stat,a.stat:hover{text-decoration:none}a.stat:hover{border-color:var(--accent)}.cols{display:grid;grid-template-columns:1.4fr 1fr;grid-gap:18px;gap:18px;align-items:start}@media (max-width:980px){.cols{grid-template-columns:1fr}}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;margin-bottom:18px}.panel h2{font-size:.8rem;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-faint);margin-bottom:12px}.panel .empty{color:var(--ink-faint);font-size:.9rem;padding:8px 0}.mini-row{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-bottom:1px solid var(--line);font-size:.9rem}.mini-row:last-child{border-bottom:none}.mini-row .r{text-align:right;white-space:nowrap}.quick{flex-wrap:wrap;margin-bottom:22px}.chart,.quick{display:flex;gap:10px}.chart{align-items:flex-end;height:150px;padding-top:10px}.chart .bar-col{flex:1 1;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;justify-content:flex-end}.chart .bars{display:flex;gap:3px;align-items:flex-end;height:100%;width:100%;justify-content:center}.chart .bar{width:16px;border-radius:3px 3px 0 0;min-height:2px}.chart .bar,.chart .bar.paid{background:var(--accent)}.chart .bar.billed{background:#cdd8d1}.chart .lab{font-size:.7rem;color:var(--ink-faint)}.legend{display:flex;gap:16px;font-size:.8rem;color:var(--ink-soft);margin-top:8px}.legend .dot{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:middle}.toast-wrap{position:fixed;bottom:20px;right:20px;display:flex;flex-direction:column;gap:8px;z-index:200}.toast{background:var(--ink);color:#fff;padding:11px 16px;border-radius:8px;font-size:.9rem;box-shadow:0 8px 24px rgba(0,0,0,.18);max-width:340px;animation:toastin .2s ease}.toast.error{background:var(--red)}.toast.success{background:var(--accent-deep)}@keyframes toastin{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.dropdown{position:relative;display:inline-block}.dropdown-menu{position:absolute;right:0;top:100%;margin-top:4px;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.12);min-width:180px;z-index:50;padding:4px}.dropdown-menu a,.dropdown-menu button{display:block;width:100%;text-align:left;background:none;border:none;padding:8px 10px;font:inherit;color:var(--ink);border-radius:6px;cursor:pointer;text-decoration:none}.dropdown-menu a:hover,.dropdown-menu button:hover{background:var(--paper)}.dropdown-menu .sep{height:1px;background:var(--line);margin:4px 0}.dropdown-menu .danger{color:var(--red)}.empty-state{text-align:center;padding:50px 20px;color:var(--ink-faint)}.empty-state h3{color:var(--ink);margin-bottom:6px}.tag{display:inline-block;background:#eceef4;color:var(--ink-soft);border-radius:99px;padding:1px 8px;font-size:.74rem;margin:0 4px 4px 0}.center-wrap{max-width:760px;margin:0 auto;padding:36px 20px}.land{background:var(--surface);color:var(--ink)}.land-nav{display:flex;justify-content:space-between;align-items:center;padding:18px 28px;max-width:1100px;margin:0 auto}.land-nav .brand{color:var(--ink);padding:0}.land-nav .brand .tick{color:var(--accent)}.land-hero{text-align:center;padding:64px 20px 40px;max-width:820px;margin:0 auto}.land-hero h1{font-size:2.5rem;line-height:1.1;letter-spacing:-.02em}.land-hero p{font-size:1.15rem;color:var(--ink-soft);max-width:620px;margin:16px auto 26px}.land-cta{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.btn.lg{padding:12px 22px;font-size:1rem}.land-section{max-width:1100px;margin:0 auto;padding:40px 24px}.land-section h2{font-size:1.6rem;text-align:center;margin-bottom:8px}.land-section .lead{text-align:center;color:var(--ink-soft);margin-bottom:28px}.feature-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));grid-gap:16px;gap:16px}.feature{border:1px solid var(--line);border-radius:var(--radius);padding:20px;background:var(--paper)}.feature h3{font-size:1.02rem;margin-bottom:6px}.feature p{color:var(--ink-soft);font-size:.92rem;margin:0}.use-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:10px;gap:10px}.use{border:1px solid var(--line);border-radius:8px;padding:12px 14px;text-align:center;font-size:.9rem;background:var(--surface)}.pricing-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:16px;gap:16px}.price-card{border:1px solid var(--line);border-radius:var(--radius);padding:22px;background:var(--surface)}.price-card.featured{border-color:var(--accent);box-shadow:0 6px 24px rgba(46,125,91,.12)}.price-card .amt{font-size:1.8rem;font-weight:700;margin:8px 0}.price-card ul{list-style:none;padding:0;margin:14px 0 0;font-size:.9rem;color:var(--ink-soft)}.price-card li{padding:4px 0}.price-card li:before{content:"✓";color:var(--accent);margin-right:8px}.faq-item{border-bottom:1px solid var(--line);padding:14px 0}.faq-item h4{margin:0 0 4px}.faq-item p{margin:0;color:var(--ink-soft);font-size:.92rem}.land-footer{color:#c5cad9;padding:30px 20px;font-size:.9rem}.land-cta-band,.land-footer{background:var(--ink);text-align:center}.land-cta-band{color:#fff;padding:48px 20px}.land-cta-band h2{color:#fff}.public-wrap{min-height:100vh;background:var(--paper);padding:28px 16px}.doc .stamp.draft{color:var(--ink-faint);border-color:var(--ink-faint)}.doc .stamp.sent{color:#2c4f9e;border-color:#2c4f9e}.doc .stamp.viewed{color:#5b3fa8;border-color:#5b3fa8}.doc .stamp.overdue{color:var(--red);border-color:var(--red)}.public-actions{display:flex;gap:10px;justify-content:center;margin-bottom:16px;flex-wrap:wrap}@media print{.public-wrap{background:#fff;padding:0}}