:root{--ink:#000;--paper:#fff;--concrete:#f3f3f1;--hair:#e3e3df;--mute:#6d6d69;--zinc:#f23a7b;--zinc-soft:#ffe6ef;--font:"Inter", system-ui, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;--radius:3px;--shell:1120px}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{font-family:var(--font);color:var(--ink);background:var(--paper);font-feature-settings:"tnum" 1, "cv11" 1;margin:0;font-size:15px;line-height:1.45}h1,h2,h3,p{margin:0}a{color:inherit}button,input,select,textarea{font:inherit;color:inherit}img{max-width:100%;display:block}:focus-visible{outline:2px solid var(--zinc);outline-offset:2px}.topbar{border-bottom:1px solid var(--hair);background:var(--paper);z-index:10;align-items:center;gap:32px;height:60px;padding:0 24px;display:flex;position:sticky;top:0}.topbar .brand{align-items:center;height:100%;text-decoration:none;display:flex}.topbar .brand img{width:auto;height:30px}.topbar .brand .wordmark{letter-spacing:-.04em;text-transform:uppercase;font-size:20px;font-weight:800}.topbar nav{gap:22px;height:100%;display:flex}.topbar nav a{height:100%;color:var(--mute);border-bottom:2px solid #0000;align-items:center;margin-bottom:-1px;font-weight:500;text-decoration:none;display:flex}.topbar nav a.active,.topbar nav a:hover{color:var(--ink)}.topbar nav a.active{border-color:var(--ink)}.topbar .spacer{flex:1}.topbar .who{color:var(--mute);align-items:center;gap:14px;font-size:13px;display:flex}.page{max-width:var(--shell);margin:0 auto;padding:36px 24px 80px}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:28px;display:flex}.page-head h1{letter-spacing:-.035em;font-size:30px;font-weight:800;line-height:1.1}.page-head .sub{color:var(--mute);margin-top:6px}.actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.btn{appearance:none;border:1px solid var(--ink);background:var(--paper);color:var(--ink);border-radius:var(--radius);cursor:pointer;white-space:nowrap;align-items:center;gap:8px;height:38px;padding:0 16px;font-weight:600;text-decoration:none;transition:background-color .12s,color .12s,border-color .12s;display:inline-flex}.btn:hover{background:var(--concrete)}.btn:disabled{opacity:.45;cursor:default}.btn.primary{background:var(--ink);color:var(--paper)}.btn.primary:hover{background:#222}.btn.ghost{color:var(--mute);border-color:#0000;padding:0 10px}.btn.ghost:hover{color:var(--ink);background:var(--concrete)}.btn.danger{color:#b00020;border-color:#0000}.btn.danger:hover{background:#fdecef}.btn.sm{height:32px;padding:0 12px;font-size:13px}.btn.lg{height:48px;padding:0 24px;font-size:16px}.btn.zinc{background:var(--zinc);border-color:var(--zinc);color:var(--paper)}.btn.zinc:hover{background:#d92b69}.field{flex-direction:column;gap:6px;display:flex}.field>span{color:var(--mute);font-size:13px}.input,.select,.textarea{border:1px solid var(--hair);border-radius:var(--radius);background:var(--paper);width:100%;height:38px;padding:0 11px;transition:border-color .12s}.textarea{resize:vertical;height:auto;min-height:84px;padding:9px 11px;line-height:1.45}.input:hover,.select:hover,.textarea:hover{border-color:#b9b9b4}.input:focus,.select:focus,.textarea:focus{border-color:var(--ink);outline:none}.input.money{text-align:right}.input.bare{background:0 0;border-color:#0000;height:34px;padding:0 6px}.input.bare:hover{border-color:var(--hair)}.input.bare:focus{border-color:var(--ink);background:var(--paper)}.select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23000' stroke-width='1.5'/%3E%3C/svg%3E");background-position:right 11px center;background-repeat:no-repeat;padding-right:30px}.row{gap:12px;display:grid}.row.two{grid-template-columns:1fr 1fr}.row.three{grid-template-columns:1fr 1fr 1fr}.check{cursor:pointer;align-items:center;gap:10px;display:flex}.check input{width:16px;height:16px;accent-color:var(--ink);margin:0}.switch{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:10px;display:inline-flex}.switch input{opacity:0;width:0;height:0;position:absolute}.switch .track{background:#cfcfca;border-radius:20px;flex:none;width:36px;height:20px;transition:background .12s;position:relative}.switch .track:after{content:"";background:var(--paper);border-radius:50%;width:16px;height:16px;transition:transform .12s;position:absolute;top:2px;left:2px}.switch input:checked+.track{background:var(--ink)}.switch input:checked+.track:after{transform:translate(16px)}.switch input:focus-visible+.track{outline:2px solid var(--zinc);outline-offset:2px}.pill{border:1px solid var(--hair);height:24px;color:var(--mute);white-space:nowrap;border-radius:20px;align-items:center;padding:0 9px;font-size:12.5px;font-weight:600;display:inline-flex}.pill.sent{border-color:var(--ink);color:var(--ink)}.pill.paid{background:var(--ink);border-color:var(--ink);color:var(--paper)}.pill.overdue{background:var(--zinc-soft);border-color:var(--zinc-soft);color:#b8225a}.pill.void{text-decoration:line-through}.table{border-collapse:collapse;width:100%}.table th{text-align:left;color:var(--mute);border-bottom:1px solid var(--ink);padding:0 10px 10px;font-size:12.5px;font-weight:500}.table td{border-bottom:1px solid var(--hair);vertical-align:middle;padding:13px 10px}.table th.num,.table td.num{text-align:right}.table tr.link{cursor:pointer}.table tr.link:hover td{background:var(--concrete)}.table .muted{color:var(--mute)}.table td:first-child,.table th:first-child{padding-left:0}.table td:last-child,.table th:last-child{padding-right:0}.empty{text-align:center;color:var(--mute);border:1px dashed var(--hair);border-radius:var(--radius);padding:56px 0}.empty strong{color:var(--ink);margin-bottom:6px;font-size:17px;display:block}.empty .btn{margin-top:18px}.tabs{border-bottom:1px solid var(--hair);gap:4px;margin-bottom:20px;display:flex}.tabs button{appearance:none;cursor:pointer;color:var(--mute);background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 12px;font-weight:500}.tabs button.on{color:var(--ink);border-color:var(--ink)}.tabs button .n{color:var(--mute);margin-left:6px;font-weight:400}.editor{grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:36px;display:grid}.editor .side{flex-direction:column;gap:28px;display:flex;position:sticky;top:84px}.block{flex-direction:column;gap:12px;display:flex}.block>h3{color:var(--mute);border-bottom:1px solid var(--hair);padding-bottom:8px;font-size:13px;font-weight:600}.lines{border-collapse:collapse;table-layout:fixed;width:100%}.lines th{text-align:left;color:var(--mute);border-bottom:1px solid var(--ink);padding:0 6px 8px;font-size:12.5px;font-weight:500}.lines td{border-bottom:1px solid var(--hair);vertical-align:top;padding:6px 2px}.lines th.num,.lines td.num{text-align:right}.lines td.total{white-space:nowrap;padding-top:12px;padding-right:6px;font-weight:600}.lines .desc{margin-top:2px}.lines .desc .input{height:30px;color:var(--mute);font-size:13px}.lines td.rm{width:32px;padding-top:8px}.lines .x{appearance:none;color:var(--mute);cursor:pointer;background:0 0;border:0;border-radius:50%;width:28px;height:28px;font-size:18px;line-height:1}.lines .x:hover{background:var(--concrete);color:var(--ink)}.lines .tax-toggle{color:var(--mute);align-items:center;gap:6px;padding-top:9px;font-size:12.5px;display:inline-flex}.lines .tax-toggle input{accent-color:var(--ink);margin:0}.addrow{gap:10px;margin-top:14px;display:flex;position:relative}.picker{background:var(--paper);border:1px solid var(--ink);border-radius:var(--radius);z-index:20;width:420px;max-width:90vw;position:absolute;top:44px;left:0;box-shadow:0 12px 32px #0000001f}.picker input{border:0;border-bottom:1px solid var(--hair);outline:none;width:100%;height:42px;padding:0 14px}.picker ul{max-height:300px;margin:0;padding:6px 0;list-style:none;overflow:auto}.picker li{cursor:pointer;justify-content:space-between;gap:12px;padding:9px 14px;display:flex}.picker li:hover,.picker li.hi{background:var(--concrete)}.picker li .n{font-weight:500}.picker li .s{color:var(--mute);font-size:12.5px}.picker li.none{color:var(--mute);cursor:default}.totals{flex-direction:column;gap:8px;display:flex}.totals .l{color:var(--mute);justify-content:space-between;display:flex}.totals .l b{color:var(--ink);font-weight:500}.totals .grand{border-top:1px solid var(--ink);justify-content:space-between;align-items:baseline;margin-top:6px;padding-top:12px;display:flex}.totals .grand span{font-weight:600}.totals .grand b{letter-spacing:-.03em;font-size:30px;font-weight:800}.totals .fine{color:var(--mute);margin-top:2px;font-size:12.5px}.notice{border-radius:var(--radius);background:var(--concrete);color:var(--ink);padding:12px 14px;font-size:14px}.notice.err{color:#8d1a3f;background:#fdecef}.notice.ok{background:var(--zinc-soft);color:#8d1a3f}.linkbox{gap:8px;display:flex}.linkbox .input{color:var(--mute);flex:1;font-size:13px}.toast{background:var(--ink);color:var(--paper);z-index:50;border-radius:30px;padding:11px 18px;font-size:14px;font-weight:500;position:fixed;bottom:28px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #0003}.scrim{z-index:40;background:#00000059;justify-content:center;align-items:flex-start;padding:8vh 16px;display:flex;position:fixed;inset:0;overflow:auto}.modal{background:var(--paper);border-radius:6px;flex-direction:column;gap:18px;width:560px;max-width:100%;padding:28px;display:flex}.modal h2{letter-spacing:-.02em;font-size:20px;font-weight:800}.modal .foot{justify-content:flex-end;gap:10px;padding-top:6px;display:flex}.login{place-items:center;min-height:100vh;padding:24px;display:grid}.login .card{flex-direction:column;gap:20px;width:380px;max-width:100%;display:flex}.login .card img{width:auto;height:42px;margin:0 auto 12px}.login h1{letter-spacing:-.03em;text-align:center;font-size:22px;font-weight:800}.login .alt{text-align:center;color:var(--mute);font-size:13.5px}.login .alt button{appearance:none;color:var(--ink);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.settings{grid-template-columns:200px minmax(0,1fr);gap:48px;display:grid}.settings .menu{flex-direction:column;gap:2px;display:flex;position:sticky;top:84px}.settings .menu button{appearance:none;text-align:left;border-radius:var(--radius);cursor:pointer;color:var(--mute);background:0 0;border:0;padding:8px 10px;font-weight:500}.settings .menu button.on{background:var(--concrete);color:var(--ink)}.settings section{flex-direction:column;gap:18px;max-width:640px;display:flex}.settings section h2{letter-spacing:-.02em;font-size:20px;font-weight:800}.settings section .hint{color:var(--mute);font-size:13.5px}.rates{border-collapse:collapse;width:100%}.rates td{border-bottom:1px solid var(--hair);padding:6px 8px 6px 0}.rates td.num{text-align:right;width:120px}.rates td.num .input{text-align:right;width:110px;display:inline-block}.paywrap{background:var(--concrete);min-height:100vh;padding:40px 16px 80px}.sheet{background:var(--paper);max-width:760px;margin:0 auto;padding:56px 56px 48px;position:relative;box-shadow:0 1px 2px #0000000a,0 20px 50px #00000014}.sheet .masthead{justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:44px;display:flex}.sheet .masthead img{width:auto;height:40px}.sheet .masthead .wordmark{letter-spacing:-.04em;text-transform:uppercase;font-size:26px;font-weight:800}.sheet .masthead .meta{text-align:right;color:var(--mute);font-size:13.5px;line-height:1.5}.sheet .masthead .meta b{color:var(--ink);font-size:15px;font-weight:600;display:block}.sheet .amount{margin-bottom:44px;position:relative}.sheet .amount .lbl{color:var(--mute);margin-bottom:4px}.sheet .amount .big{letter-spacing:-.045em;font-size:54px;font-weight:800;line-height:1}.sheet .amount .due{color:var(--mute);margin-top:10px}.sheet .parties{grid-template-columns:1fr 1fr;gap:24px;margin-bottom:40px;font-size:14px;line-height:1.5;display:grid}.sheet .parties .lbl{color:var(--mute);margin-bottom:6px;font-size:12.5px}.sheet .parties b{font-weight:600}.sheet .doc-lines{border-collapse:collapse;width:100%;margin-bottom:8px}.sheet .doc-lines th{text-align:left;color:var(--mute);border-bottom:1px solid var(--ink);padding:0 0 10px;font-size:12.5px;font-weight:500}.sheet .doc-lines td{border-bottom:1px solid var(--hair);vertical-align:top;padding:12px 0}.sheet .doc-lines th.num,.sheet .doc-lines td.num{text-align:right;white-space:nowrap}.sheet .doc-lines td .d{color:var(--mute);margin-top:2px;font-size:13px}.sheet .doc-lines th+th,.sheet .doc-lines td+td{padding-left:16px}.sheet .doc-totals{flex-direction:column;gap:8px;width:300px;margin-left:auto;padding-top:14px;display:flex}.sheet .doc-totals .l{color:var(--mute);justify-content:space-between;font-size:14px;display:flex}.sheet .doc-totals .l b{color:var(--ink);font-weight:500}.sheet .doc-totals .grand{border-top:1px solid var(--ink);justify-content:space-between;align-items:baseline;margin-top:4px;padding-top:12px;font-weight:600;display:flex}.sheet .doc-totals .grand b{letter-spacing:-.03em;font-size:22px;font-weight:800}.sheet .notes{color:var(--mute);white-space:pre-wrap;margin-top:40px;font-size:14px;line-height:1.55}.sheet .payrow{flex-wrap:wrap;align-items:center;gap:18px;margin-top:44px;display:flex}.sheet .payrow .fine{color:var(--mute);font-size:13px}.sheet .foot{border-top:1px solid var(--hair);color:var(--mute);flex-wrap:wrap;justify-content:space-between;gap:16px;margin-top:56px;padding-top:18px;font-size:12.5px;display:flex}.stamp{border:4px solid var(--zinc);color:var(--zinc);letter-spacing:.08em;text-transform:uppercase;mix-blend-mode:multiply;border-radius:6px;padding:4px 16px 2px;font-size:34px;font-weight:800;animation:.42s cubic-bezier(.2,1.2,.4,1) both stamp-in;position:absolute;top:6px;right:0;transform:rotate(-9deg);-webkit-mask-image:radial-gradient(circle at 30% 40%,#000 0 55%,#000000bf 70%,#000 85%);mask-image:radial-gradient(circle at 30% 40%,#000 0 55%,#000000bf 70%,#000 85%)}.stamp small{letter-spacing:.04em;margin-top:-2px;font-size:11px;font-weight:600;display:block}@keyframes stamp-in{0%{opacity:0;transform:rotate(-9deg)scale(1.6)}to{opacity:1;transform:rotate(-9deg)scale(1)}}@media (prefers-reduced-motion:reduce){.stamp{animation:none}.btn,.switch .track,.switch .track:after{transition:none}}.payshell{max-width:760px;color:var(--mute);justify-content:space-between;align-items:center;margin:0 auto 16px;font-size:13px;display:flex}.payshell .btn{background:0 0}@media (width<=900px){.editor{grid-template-columns:1fr}.editor .side{position:static}.settings{grid-template-columns:1fr;gap:24px}.settings .menu{flex-flow:wrap;position:static}}@media (width<=640px){.topbar{gap:16px;padding:0 16px;overflow-x:auto}.topbar nav{gap:14px}.topbar .who span{display:none}.page{padding:24px 16px 64px}.row.two,.row.three{grid-template-columns:1fr}.sheet{padding:32px 22px}.sheet .amount .big{font-size:40px}.sheet .parties{grid-template-columns:1fr}.sheet .doc-totals{width:100%}.stamp{border-width:3px;font-size:22px;top:0;right:0}.table .hide-sm,.lines thead{display:none}.lines,.lines tbody{display:block}.lines tr{border-bottom:1px solid var(--hair);grid-template-columns:70px 100px 1fr auto;align-items:center;column-gap:6px;padding:10px 0;display:grid}.lines td{border:0;padding:2px 0;display:block}.lines td:first-child{grid-area:1/1/auto/4}.lines td.rm{grid-area:1/4;justify-self:end;padding:0}.lines td.num .input{text-align:left}.lines td.total{text-align:right;padding-top:0}}@media print{body{background:#fff}.paywrap{background:#fff;padding:0}.payshell,.payrow,.no-print{display:none!important}.sheet{box-shadow:none;max-width:none;padding:0}.stamp{animation:none}}
