.app-shell{max-width:1100px;margin:0 auto;padding:0 18px 40px;--nav-h:55px}.app-nav{display:flex;align-items:center;gap:4px;flex-wrap:wrap;padding:10px 0;margin-bottom:22px;border-bottom:1px solid var(--line);position:-webkit-sticky;position:sticky;top:0;z-index:40;background:var(--bg)}.app-nav .brand{font-weight:700;letter-spacing:-.01em;margin-right:14px;color:var(--ink);text-decoration:none}.app-nav a{color:var(--grey);text-decoration:none;padding:6px 10px;border-radius:6px;font-size:13.5px}.app-nav a:hover{background:#e6ebef;color:var(--ink)}.app-nav a.active{background:var(--acc);color:#fff}.app-nav .spacer{flex:1 1}.app-nav .signout{border:1px solid var(--line);background:#fff;color:var(--grey);border-radius:6px;padding:5px 11px;font-size:12.5px;font-family:inherit;cursor:pointer}.app-nav .signout:hover{color:var(--ink)}.app-shell h1{font-size:20px;margin:0 0 4px;letter-spacing:-.01em}.app-shell .page-sub{color:var(--grey);font-size:13px;margin:0 0 20px}.card{background:#fff;border-radius:8px;box-shadow:0 1px 3px rgba(0,0,0,.09);padding:16px 18px;margin-bottom:16px}.card h2{font-size:14px;margin:0 0 12px;color:var(--acc);text-transform:uppercase;letter-spacing:.04em}.app-shell input[type=date],.app-shell input[type=email],.app-shell input[type=text],.app-shell select,.app-shell textarea,.auth-card input[type=email]{width:100%;padding:7px 9px;border:1px solid var(--line);border-radius:6px;font-size:13px;background:#fff;color:var(--ink);font-family:inherit}.app-shell textarea{resize:vertical;min-height:44px;line-height:1.4}.app-shell input:focus,.app-shell select:focus,.app-shell textarea:focus,.auth-card input:focus{outline:2px solid var(--acc);outline-offset:1px;border-color:var(--acc)}.app-shell input[type=color]{width:38px;height:30px;padding:1px;border:1px solid var(--line);border-radius:6px;background:#fff}.lb{display:block;font-size:11px;color:var(--grey);margin-bottom:2px;letter-spacing:.01em}.frow{display:flex;gap:10px;margin-bottom:10px}.frow>div{flex:1 1;min-width:0}.app-shell button,.auth-card button{cursor:pointer;border:1px solid var(--acc);background:var(--acc);color:#fff;border-radius:6px;padding:7px 14px;font-size:13px;font-weight:600;font-family:inherit}.app-shell button.sec,.auth-card button.sec{background:#fff;color:var(--acc)}.app-shell button.ghost{background:#fff;border-color:var(--line);color:var(--grey)}.app-shell button:disabled,.auth-card button:disabled{opacity:.5;cursor:default}.app-shell button:hover:not(:disabled),.auth-card button:hover:not(:disabled){filter:brightness(1.06)}.chk{display:flex;align-items:center;gap:7px;font-size:13px;margin:6px 0}.chk input{width:auto;margin:0}.status-msg{font-size:12.5px;margin:8px 0 0}.status-msg.ok{color:#1e7d34}.status-msg.err{color:#c0392b}.banner{background:#fdf6e3;border:1px solid #ecd9a0;border-radius:8px;padding:12px 16px;margin-bottom:16px;font-size:13.5px;line-height:1.5}.banner a{color:var(--acc);font-weight:600}.brand-preview{width:130px;height:64px;border:1px dashed var(--line);border-radius:6px;display:flex;align-items:center;justify-content:center;overflow:hidden;background:#fff;color:var(--grey);font-size:11px}.brand-preview img{max-width:100%;max-height:100%;object-fit:contain}.brand-row{display:flex;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap}.mig-list{margin:0 0 8px;padding-left:0;list-style:none;font-size:13px}.mig-list li{margin:2px 0;color:var(--grey)}.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.auth-card{background:#fff;border-radius:10px;box-shadow:0 2px 10px rgba(0,0,0,.08);padding:28px 30px 24px;width:100%;max-width:380px}.auth-card h1{font-size:19px;margin:0 0 4px}.auth-sub{color:var(--grey);font-size:13px;margin:0 0 18px;line-height:1.45}.auth-card form button{width:100%;margin-top:12px}.auth-card>button.sec{width:100%}.auth-or{text-align:center;color:var(--grey);font-size:12px;margin:14px 0}.auth-msg{font-size:12.5px;margin:12px 0 0;line-height:1.4}.auth-msg.ok{color:#1e7d34}.auth-msg.err{color:#c0392b}.auth-foot{margin:18px 0 0;font-size:12.5px;text-align:center}.auth-foot a{color:var(--grey)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:12px;gap:12px;margin-bottom:16px}.stat-card{background:#fff;border-radius:8px;box-shadow:0 1px 3px rgba(0,0,0,.09);padding:14px 16px}.stat-card .lbl{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--grey)}.stat-card .num{font-size:20px;font-weight:700;margin:4px 0 2px;letter-spacing:-.01em}.stat-card .cnt{font-size:12px;color:var(--grey)}.stat-card.red .num{color:#c0392b}.chart{display:flex;align-items:flex-end;gap:8px;padding-top:6px}.chart .col{flex:1 1;min-width:0;align-items:center;gap:4px}.chart .col,.chart .stack{display:flex;flex-direction:column;justify-content:flex-end}.chart .stack{width:100%;max-width:38px}.chart .bar{width:100%;background:var(--acc)}.chart .bar.unpaid{background:#6f93b4}.chart .bar.paid{background:#1b2a3a}.chart .stack .bar+.bar{margin-top:2px}.chart .stack .bar:first-child{border-radius:3px 3px 0 0}.chart .stack .bar:last-child{border-radius:0 0 2px 2px}.chart .bar.zero{background:var(--line);border-radius:2px}.chart .m{font-size:10.5px;color:var(--grey);white-space:nowrap}.chart-legend{display:flex;gap:16px;margin-top:10px;font-size:11.5px;color:var(--grey)}.chart-legend span{display:inline-flex;align-items:center;gap:6px}.chart-legend .sw{width:10px;height:10px;border-radius:2px;display:inline-block}.chart-legend .sw.paid{background:#1b2a3a}.chart-legend .sw.unpaid{background:#6f93b4}.stat-card.paid .num{color:#1b2a3a}.stat-card.overdue .num{color:var(--danger,#c0392b)}.chart-note{font-size:12px;color:var(--grey);margin:10px 0 0;line-height:1.45}.tbl-wrap{overflow-x:auto}.tbl{width:100%;border-collapse:collapse;font-size:13px}.tbl th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.03em;color:var(--grey);padding:6px 8px;font-weight:600}.tbl td,.tbl th{border-bottom:1px solid var(--line)}.tbl td{padding:7px 8px;vertical-align:middle}.tbl tr:last-child td{border-bottom:none}.tbl td.r,.tbl th.r{text-align:right}.tbl td.acts{white-space:nowrap}.tbl td.acts button+button{margin-left:6px}.tbl .empty-cell{color:var(--grey);text-align:center;padding:18px 8px}.tbl .add-row td{background:#f7f9fb}.tbl .add-row input,.tbl .add-row select{min-width:70px}.tag{display:inline-block;font-size:10.5px;background:#e6ebef;color:var(--grey);border-radius:4px;padding:1px 6px;margin-left:6px;vertical-align:1px;white-space:nowrap}.btn-sm{padding:4px 10px!important;font-size:12px!important}.filters{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:14px}.filters select{width:auto;min-width:110px}.filters .spacer{flex:1 1}.app-shell input[type=date]{width:100%;padding:7px 9px;border:1px solid var(--line);border-radius:6px;font-size:13px;background:#fff;color:var(--ink);font-family:inherit}.empty-state{text-align:center;padding:28px 16px;color:var(--grey);font-size:13.5px;line-height:1.6}.empty-state p{margin:0 0 6px}.empty-state a{color:var(--acc);font-weight:600}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}.page-head a.btn{display:inline-block;background:var(--acc);color:#fff;border-radius:6px;padding:7px 14px;font-size:13px;font-weight:600;text-decoration:none}.page-head a.btn:hover{filter:brightness(1.06)}.tbl td a{color:var(--acc);font-weight:600;text-decoration:none}.tbl td a:hover{text-decoration:underline}.chip{display:inline-block;padding:2px 8px;border-radius:99px;font-size:11.5px;font-weight:600;white-space:nowrap}.chip+.chip{margin-left:4px}.chip.draft{background:#eceff2;color:var(--grey)}.chip.issued{background:#e3edf7;color:var(--acc)}.chip.sent{background:#fdf2df;color:#9a6a12}.chip.paid{background:#e2f2e6;color:#1e7d34}.chip.overdue{background:#fbe4e1;color:#c0392b}.dlg-back{position:fixed;inset:0;background:rgba(15,23,30,.45);z-index:60;display:flex;align-items:center;justify-content:center;padding:20px}.dlg{background:#fff;border-radius:10px;box-shadow:0 6px 30px rgba(0,0,0,.2);padding:20px 22px;width:100%;max-width:380px}.dlg h3{font-size:15px;margin:0 0 14px}.dlg-act{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.inv-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 12px;font-size:13.5px}.inv-head b{font-size:15px}.inv-head .spacer{flex:1 1}.app-shell .datefield{position:relative;display:flex;align-items:center}.app-shell .datefield input[type=text]{padding-right:30px}.app-shell .date-pick{position:absolute;right:3px;background:none;border:0;color:var(--muted);padding:4px 6px;font-size:13px;line-height:1;cursor:pointer}.app-shell .date-pick:hover{color:var(--accent)}.app-shell .date-native{position:absolute;right:6px;width:1px;height:1px;padding:0;border:0;opacity:0;pointer-events:none}.app-shell .sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.app-shell,.auth-card{--h-xs:24px;--h-sm:28px;--h-md:32px;--h-lg:44px}.app-shell button,.auth-card button,.page-head a.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:var(--h-md);padding:0 14px;border-radius:6px;font-size:12.5px;font-weight:600;line-height:1;white-space:nowrap}.app-shell .btn-sm{height:var(--h-sm)!important;padding:0 10px!important;font-size:12px!important}.app-shell input[type=date],.app-shell input[type=email],.app-shell input[type=number],.app-shell input[type=text],.app-shell select,.auth-card input[type=email]{height:var(--h-md);padding:0 9px;border-radius:6px}.app-shell input[type=color]{width:var(--h-sm);height:var(--h-sm)}.app-shell .date-pick{width:var(--h-xs);height:var(--h-xs);padding:0;right:4px}.app-shell .dlg-act button,.auth-card form button,.auth-card>button.sec{height:var(--h-lg);font-size:14px}.app-shell .dlg-act button{padding:0 18px}@media (max-width:640px){.app-shell,.auth-card{--h-sm:34px;--h-md:38px;--h-lg:48px;--h-xs:28px}}.app-nav .nav-items{display:flex;align-items:center;gap:4px;flex:1 1}.app-nav .nav-burger{display:none}.app-shell .inv-num{font-size:14px;font-weight:700;white-space:nowrap}@media (max-width:760px){.app-nav{flex-wrap:wrap;row-gap:8px}.app-nav .nav-burger{display:inline-flex;align-items:center;justify-content:center;margin-left:auto;width:var(--h-md);height:var(--h-md);padding:0;font-size:16px;background:#fff;border:1px solid var(--line);color:var(--ink)}.app-nav .nav-items{display:none;flex:1 1 100%;flex-direction:column;align-items:stretch;gap:2px}.app-nav.open .nav-items{display:flex}.app-nav .nav-items a{padding:10px 12px}.app-nav .nav-items .spacer{display:none}.app-nav .nav-items form{margin-top:4px}.app-nav .signout{width:100%}}.app-shell .app{--app-h:calc(100vh - var(--nav-h))}.app-shell:has(.app){max-width:none;padding-bottom:0}.app-shell:has(.app) .app-nav{margin-bottom:0}