:root{--bg: #f4f6f8;--surface: #ffffff;--surface-2: #eef1f5;--text: #18222d;--text-dim: #5c6a78;--border: #e3e8ed;--accent: #2563a8;--accent-weak: #e7f0fb;--danger: #bf3b2c;--danger-weak: #fae9e6;--warn: #996310;--warn-weak: #f7edd6;--ok: #1f7a4d;--ok-weak: #e3f1ea;--shadow: 0 1px 2px rgba(20, 30, 45, .05), 0 6px 18px rgba(20, 30, 45, .05);--radius: 14px;--radius-sm: 10px;--tap: 44px;--hpad: 16px;--content-max: 600px;--font-sans: "Hanken Grotesk", system-ui, -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace}[data-theme=dark]{--bg: #0f141a;--surface: #19212a;--surface-2: #232d38;--text: #e9eef3;--text-dim: #93a2b1;--border: #2a3540;--accent: #6aa6e6;--accent-weak: #1b2c3f;--danger: #e2776b;--danger-weak: #341f1d;--warn: #d6a44e;--warn-weak: #2e2715;--ok: #54b483;--ok-weak: #152619;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 10px 28px rgba(0, 0, 0, .35)}@media (prefers-color-scheme: dark){:root:not([data-theme]){--bg: #0f141a;--surface: #19212a;--surface-2: #232d38;--text: #e9eef3;--text-dim: #93a2b1;--border: #2a3540;--accent: #6aa6e6;--accent-weak: #1b2c3f;--danger: #e2776b;--danger-weak: #341f1d;--warn: #d6a44e;--warn-weak: #2e2715;--ok: #54b483;--ok-weak: #152619;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 10px 28px rgba(0, 0, 0, .35)}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-sans);background:var(--bg);color:var(--text);font-size:15px;line-height:1.4;-webkit-font-smoothing:antialiased}button{font-family:inherit;cursor:pointer}h1,h2,h3{margin:0;line-height:1.15}.mono{font-family:var(--font-mono)}.muted{color:var(--text-dim)}@keyframes sheetUp{0%{transform:translateY(101%)}to{transform:translateY(0)}}@keyframes sheetRight{0%{transform:translate(101%)}to{transform:translate(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.app{position:relative;height:100%;display:flex;flex-direction:column;overflow:hidden;background:var(--bg);color:var(--text)}.sidenav{display:none}.bottomnav{display:flex;flex:none;border-top:1px solid var(--border);background:var(--surface);padding:8px 8px calc(8px + env(safe-area-inset-bottom));gap:4px}.navbtn{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;border:none;background:none;color:var(--text-dim);font:inherit;font-size:11px;font-weight:600;padding:6px 4px;min-height:var(--tap);position:relative}.navbtn[aria-current=page]{color:var(--accent)}.navbtn svg{width:21px;height:21px}.navbtn__badge{position:absolute;top:0;left:50%;transform:translate(6px);background:var(--danger);color:#fff;font-size:10px;font-weight:700;min-width:16px;height:16px;border-radius:999px;padding:0 4px;display:grid;place-items:center}.main{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}.topbar{flex:none;display:flex;align-items:center;gap:12px;padding:16px var(--hpad);border-bottom:1px solid var(--border);background:var(--bg);position:sticky;top:0;z-index:5}.topbar__titles{display:flex;flex-direction:column;min-width:0;flex:1}.topbar__eyebrow{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim)}.topbar__title{font-size:21px;font-weight:800;letter-spacing:-.015em;line-height:1.15}.iconbtn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:11px;border:1px solid var(--border);background:var(--surface);color:var(--text-dim);flex:none}.iconbtn svg{width:18px;height:18px}.scroll{flex:1;overflow-y:auto;overflow-x:hidden}.content{max-width:var(--content-max);margin:0 auto;padding:18px var(--hpad) calc(var(--hpad) + 84px)}@media (min-width: 720px){:root{--hpad: 36px;--content-max: 1120px}.app{flex-direction:row}.bottomnav{display:none}.sidenav{display:flex;flex-direction:column;width:248px;flex:none;background:var(--surface);border-right:1px solid var(--border);padding:22px 16px;gap:4px}.topbar .iconbtn--mobileonly{display:none}.content{padding-bottom:36px}}.sidenav__brand{display:flex;align-items:center;gap:10px;padding:6px 8px 20px}.brandmark{width:30px;height:30px;border-radius:9px;background:var(--accent);color:#fff;display:inline-flex;align-items:center;justify-content:center;flex:none}.brandmark svg{width:16px;height:16px}.sidenav__name{font-weight:800;font-size:18px;letter-spacing:-.01em}.sidebtn{display:flex;align-items:center;gap:11px;padding:11px 12px;border-radius:10px;border:none;background:transparent;color:var(--text-dim);font:inherit;font-weight:600;text-align:left}.sidebtn svg{width:19px;height:19px;flex:none}.sidebtn[aria-current=page]{background:var(--accent-weak);color:var(--accent)}.sidenav__spacer{flex:1}.sidenav__user{display:flex;align-items:center;gap:10px;padding:10px 8px 2px;border-top:1px solid var(--border);margin-top:6px}.sidenav__avatar{width:30px;height:30px;border-radius:50%;background:var(--surface-2);color:var(--text-dim);display:inline-flex;align-items:center;justify-content:center;font-weight:700;flex:none}.banner{display:flex;align-items:center;gap:10px;padding:13px 15px;border-radius:13px;margin-bottom:16px;border:1px solid transparent}.banner__icon{width:34px;height:34px;border-radius:9px;flex:none;display:inline-flex;align-items:center;justify-content:center;background:var(--surface)}.banner__icon svg{width:18px;height:18px}.banner__text{font-size:13.5px;line-height:1.35}.banner--overdue{background:var(--danger-weak);color:var(--danger)}.banner--soon{background:var(--warn-weak);color:var(--warn)}.banner--clear{background:var(--ok-weak);color:var(--ok)}.banner__text b{color:inherit}.banner__text{color:var(--text)}.chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}.chip{display:inline-flex;align-items:center;gap:6px;padding:8px 13px;border-radius:10px;font-weight:700;font-size:13px;white-space:nowrap;min-height:38px;background:var(--surface);color:var(--text-dim);border:1px solid var(--border)}.chip[aria-pressed=true]{background:var(--accent);color:#fff;border-color:var(--accent)}.chip__count{opacity:.7;font-weight:600}.select{width:100%;max-width:280px;min-height:var(--tap);padding:9px 12px;border-radius:10px;border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;font-size:13.5px}.grouphead{display:flex;align-items:center;gap:9px;margin:14px 0 2px}.grouphead__icon{display:inline-flex;width:13px;height:13px}.grouphead__label{font-size:13px;font-weight:800;letter-spacing:.02em;text-transform:uppercase}.grouphead__count{font-size:12px;font-weight:700;padding:1px 8px;border-radius:999px}.grouphead__rule{flex:1;height:1px;background:var(--border)}.section-title{font-size:13px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--text-dim);margin:22px 0 10px}.occ{display:flex;align-items:stretch;gap:0;width:100%;text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:14px;overflow:hidden;box-shadow:var(--shadow);padding:0;color:inherit;font:inherit;margin-bottom:10px}.occ__bar{width:5px;flex:none}.occ--overdue .occ__bar{background:var(--danger)}.occ--due-soon .occ__bar{background:var(--warn)}.occ--ok .occ__bar{background:var(--ok)}.occ--pending .occ__bar{background:var(--text-dim)}.occ--sent .occ__bar{background:var(--accent)}.occ--paid .occ__bar{background:var(--ok)}.occ__body{flex:1;min-width:0;padding:13px 14px;display:flex;flex-direction:column;align-items:flex-start;gap:7px}.occ__top{align-self:stretch}.occ__top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.occ__acr{font-weight:700;font-size:15.5px}.occ__client{font-size:13px;color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.occ__period{font-size:12px;color:var(--text-dim)}.occ__side{flex:none;padding:13px 14px;display:flex;flex-direction:column;align-items:flex-end;justify-content:space-between;gap:9px}.occ__value{font-weight:600;font-size:14px;white-space:nowrap}.occ__value--none{color:var(--text-dim)}.occ__advance{display:inline-flex;align-items:center;gap:5px;padding:7px 11px;border-radius:9px;background:var(--accent-weak);color:var(--accent);font-size:12px;font-weight:700;white-space:nowrap;border:none}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap}.badge svg{width:12px;height:12px;flex:none}.badge--overdue,.badge--danger{color:var(--danger);background:var(--danger-weak)}.badge--due-soon,.badge--warn{color:var(--warn);background:var(--warn-weak)}.badge--ok{color:var(--ok);background:var(--ok-weak)}.badge--pending{color:var(--text-dim);background:var(--surface-2)}.badge--sent{color:var(--accent);background:var(--accent-weak)}.badge--paid{color:var(--ok);background:var(--ok-weak)}.typebadge{flex:none;font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--text-dim);background:var(--surface-2);padding:2px 7px;border-radius:6px}.freqbadge{font-size:11px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;padding:2px 9px;border-radius:7px}.freqbadge--monthly{color:var(--accent);background:var(--accent-weak)}.freqbadge--annual{color:var(--ok);background:var(--ok-weak)}.row{display:flex;align-items:center;gap:13px;width:100%;text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:14px;box-shadow:var(--shadow);color:inherit;font:inherit;margin-bottom:10px;min-height:var(--tap)}.row__avatar{width:42px;height:42px;border-radius:12px;flex:none;background:var(--surface-2);color:var(--text-dim);display:inline-flex;align-items:center;justify-content:center;font-weight:800}.row__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.row__title{display:flex;align-items:center;gap:8px;min-width:0}.row__name{font-weight:700;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row__meta{font-size:12.5px;color:var(--text-dim)}.guiacard{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:15px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:9px;margin-bottom:10px;width:100%;text-align:left;color:inherit;font:inherit}.guiacard__top{display:flex;align-items:center;gap:9px}.guiacard__name{font-weight:800;font-size:16px}.guiacard__count{margin-left:auto;font-size:12.5px;color:var(--text-dim);font-weight:600}.guiacard__desc{font-size:13px;color:var(--text-dim)}.guiacard__rule{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:600}.guiacard__rule svg{width:14px;height:14px;color:var(--text-dim)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:var(--tap);padding:11px 16px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;font-weight:700;font-size:14px}.btn svg{width:16px;height:16px}.btn--primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn--block{width:100%}.btn--ghost{background:transparent;border-color:transparent;color:var(--text-dim);padding-left:0}.btn:disabled{opacity:.5;cursor:default}.card{background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow)}.field{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600;color:var(--text-dim);margin-bottom:16px}.input{min-height:var(--tap);padding:11px 13px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg);color:var(--text);font:inherit;font-size:15px}.input:focus,.select:focus,.chip:focus-visible,.btn:focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 40%,transparent);outline-offset:1px}.form-row{display:grid;gap:12px}@media (min-width: 520px){.form-row--2{grid-template-columns:1fr 1fr}}.seg{display:flex;gap:8px}.seg button{flex:1;padding:11px;border-radius:10px;border:1.5px solid var(--border);background:var(--bg);color:var(--text-dim);font:inherit;font-weight:700}.seg button[aria-pressed=true]{border-color:var(--accent);background:var(--accent-weak);color:var(--accent)}.row-actions{display:flex;gap:10px;margin-top:6px}.row-actions .btn{flex:1}.assocchip{display:inline-flex;align-items:center;gap:7px;padding:8px 12px;border-radius:11px;background:var(--surface);border:1px solid var(--border);font-size:13px;font-weight:600}.assocchip__freq{font-size:11px;color:var(--text-dim)}.assoc-line{display:flex;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid var(--border)}.assoc-line__name{flex:1;font-weight:600;font-size:14px}.histrow{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px 14px;color:inherit;font:inherit;margin-bottom:8px}.histrow__body{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.histrow__name{font-weight:700;font-size:14px}.histrow__value{font-weight:600;font-size:13.5px;white-space:nowrap}.empty{text-align:center;padding:48px 20px;color:var(--text-dim)}.empty__title{font-size:15px;font-weight:700;margin-bottom:4px;color:var(--text)}.scrim{position:absolute;top:0;right:0;bottom:0;left:0;background:#0a10166b;z-index:40;animation:fadeIn .18s ease}.sheet{position:absolute;inset:auto 0 0 0;width:auto;max-height:90%;background:var(--surface);border-radius:22px 22px 0 0;box-shadow:0 -8px 40px #00000040;z-index:41;display:flex;flex-direction:column;overflow:hidden;animation:sheetUp .26s cubic-bezier(.22,.61,.36,1)}@media (min-width: 720px){.sheet{inset:0 0 0 auto;width:460px;max-height:100%;border-radius:0;animation:sheetRight .26s cubic-bezier(.22,.61,.36,1)}}.sheet__head{flex:none;padding:18px 20px 14px;border-bottom:1px solid var(--border);display:flex;align-items:flex-start;gap:12px}.sheet__eyebrow{font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-dim);margin-bottom:3px}.sheet__title{font-size:22px;font-weight:800;letter-spacing:-.01em}.sheet__sub{font-size:13px;color:var(--text-dim);margin-top:2px}.sheet__body{flex:1;overflow-y:auto;padding:18px 20px 22px;display:flex;flex-direction:column;gap:20px}.sheet__group-label{font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--text-dim);margin-bottom:8px}.urgchip{display:flex;align-items:center;gap:10px;padding:13px 15px;border-radius:13px}.urgchip svg{width:16px;height:16px;flex:none}.urgchip__label{font-weight:700;font-size:14px}.urgchip__sub{font-size:12.5px;color:var(--text-dim)}.urgchip--overdue{background:var(--danger-weak);color:var(--danger)}.urgchip--due-soon{background:var(--warn-weak);color:var(--warn)}.urgchip--ok{background:var(--ok-weak);color:var(--ok)}.valuebox{display:flex;align-items:center;gap:8px;border:1px solid var(--border);border-radius:12px;padding:0 14px;background:var(--bg)}.valuebox__prefix{color:var(--text-dim);font-size:16px}.valuebox input{flex:1;border:none;background:none;color:var(--text);font:inherit;font-size:17px;font-weight:600;padding:13px 0;outline:none}.statusbtn{display:flex;align-items:center;gap:11px;padding:14px 16px;border-radius:12px;font-weight:700;font-size:15px;width:100%;text-align:left;background:var(--surface-2);color:var(--text-dim);border:1.5px solid transparent}.statusbtn svg{width:18px;height:18px;flex:none}.statusbtn__cur{margin-left:auto;font-size:12px;opacity:.8}.statusbtn--pending-on{background:var(--surface);color:var(--text);border-color:var(--text)}.statusbtn--sent-on{background:var(--accent-weak);color:var(--accent);border-color:var(--accent)}.statusbtn--paid-on{background:var(--ok-weak);color:var(--ok);border-color:var(--ok)}.flowhint{font-size:12.5px;color:var(--text-dim);line-height:1.45;margin-top:4px}.stack>*+*{margin-top:10px}.notif-row{display:flex;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid var(--border)}.notif-row__icon{width:38px;height:38px;flex:none;border-radius:10px;background:var(--accent-weak);color:var(--accent);display:inline-flex;align-items:center;justify-content:center}.notif-row__icon svg{width:19px;height:19px}.notif-row__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.notif-row__body b{font-size:14.5px}.notif-row__body span{font-size:12.5px;color:var(--text-dim);line-height:1.35}.switch{flex:none;width:46px;height:28px;border-radius:999px;border:none;background:var(--border);position:relative;transition:background .15s;cursor:pointer}.switch--on{background:var(--accent)}.switch__dot{position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #00000040;transition:transform .15s}.switch--on .switch__dot{transform:translate(18px)}.switch:disabled{opacity:.5;cursor:default}.pwa-banner{position:fixed;left:12px;right:12px;bottom:calc(78px + env(safe-area-inset-bottom));z-index:50;display:flex;align-items:center;gap:12px;max-width:460px;margin:0 auto;padding:12px 14px;background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow-lg, 0 8px 30px rgba(15,23,42,.18));animation:fadeIn .2s ease}.pwa-banner .brandmark{width:38px;height:38px;border-radius:11px;flex:none}.pwa-banner .brandmark svg{width:20px;height:20px}.pwa-banner__text{display:flex;flex-direction:column;min-width:0;flex:1}.pwa-banner__text b{font-size:14px;font-weight:700}.pwa-banner__text span{font-size:12px;color:var(--text-dim);line-height:1.3}.pwa-banner .btn{min-height:38px;padding:8px 14px}.pwa-banner .iconbtn{width:34px;height:34px;flex:none}@media (min-width: 720px){.pwa-banner{left:auto;right:24px;bottom:24px;margin:0;width:380px}}
