:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--surface: #fcfcfb;--page: #f9f9f7;--text-primary: #0b0b0b;--text-secondary: #52514e;--text-muted: #898781;--border: #e1e0d9;--accent: #2a78d6;--accent-ink: #ffffff;--critical: #d03b3b;--good: #006300;--viz-muted: #86b6ef;--viz-baseline: #c3c2b7;color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--surface: #1a1a19;--page: #0d0d0d;--text-primary: #ffffff;--text-secondary: #c3c2b7;--text-muted: #898781;--border: #2c2c2a;--accent: #3987e5;--good: #0ca30c;--viz-muted: #184f95;--viz-baseline: #383835;color-scheme:dark}}:root[data-theme=dark]{--surface: #1a1a19;--page: #0d0d0d;--text-primary: #ffffff;--text-secondary: #c3c2b7;--text-muted: #898781;--border: #2c2c2a;--accent: #3987e5;--good: #0ca30c;--viz-muted: #184f95;--viz-baseline: #383835;color-scheme:dark}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--page);color:var(--text-primary);transition:background-color .15s,color .15s}a{font-weight:500;color:var(--accent);text-decoration:inherit}h1,h2{color:var(--text-primary)}button{border-radius:6px;border:1px solid var(--border);padding:.5em 1em;font-size:.95em;font-weight:500;font-family:inherit;background:var(--surface);color:var(--text-primary);cursor:pointer;transition:border-color .15s}button:hover{border-color:var(--accent)}button:disabled{opacity:.5;cursor:not-allowed}button:focus,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}input,select,textarea{background:var(--surface);color:var(--text-primary);border:1px solid var(--border);border-radius:4px;font-family:inherit}#root{max-width:960px;margin:0 auto;padding:1.5rem}.app-nav{display:flex;align-items:center;gap:1rem;padding-bottom:1rem;margin-bottom:1.5rem;border-bottom:1px solid var(--border)}.app-brand{font-weight:700;text-decoration:none;color:inherit}.app-nav-spacer{flex:1}.reminder-setting{display:flex;align-items:center;gap:.35rem;font-size:.85rem;color:var(--text-secondary)}.reminder-setting input{width:3rem;padding:.15rem .3rem}.theme-toggle{padding:.4rem .6rem}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem;flex-wrap:wrap;gap:.5rem}.auth-page{max-width:360px;margin:4rem auto}form{display:flex;flex-direction:column;gap:.75rem}form label{display:flex;flex-direction:column;gap:.25rem;font-size:.9rem;color:var(--text-secondary)}form input,form select,form textarea{padding:.5rem;font-size:1rem}.form-actions{display:flex;gap:.5rem}.form-error{color:var(--critical)}.button-primary{padding:.5rem 1rem;background:var(--accent);color:var(--accent-ink);border:1px solid var(--accent);border-radius:4px;text-decoration:none}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:.5rem;border-bottom:1px solid var(--border)}th{color:var(--text-secondary);font-size:.85rem}.row-actions{display:flex;gap:.75rem}.inline-form{display:flex;flex-direction:row;gap:.5rem;margin-bottom:1rem;max-width:24rem}.inline-form input{flex:1}.header-actions{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.status-toggle{cursor:pointer;color:#fff;border-color:transparent}.status-toggle-unpaid{background:#d03b3b}.status-toggle-unpaid:hover{background:#b52f2f;border-color:transparent}.status-toggle-paid{background:#1e7d32}.status-toggle-paid:hover{background:#17692a;border-color:transparent}.row-overdue td:first-child{border-left:3px solid var(--critical)}.badge-overdue{margin-left:.5rem;padding:.1rem .4rem;font-size:.75rem;color:var(--critical);border:1px solid var(--critical);border-radius:3px}.stat-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1rem;margin-bottom:2rem}.stat-card{display:flex;flex-direction:column;gap:.25rem;padding:1rem;background:var(--surface);border:1px solid var(--border);border-radius:6px}.stat-card-critical .stat-value{color:var(--critical)}.stat-label{font-size:.8rem;color:var(--text-muted)}.stat-value{font-size:1.5rem;font-weight:700}.stat-note{font-size:.8rem;color:var(--text-secondary)}.delta{font-size:1.1rem}.delta-up{color:var(--critical)}.delta-down{color:var(--good)}.delta-none{color:var(--text-muted);font-weight:400}.section-header{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap}.column-chart{margin:0 0 2rem}.column-chart-plot{position:relative}.column-chart svg{display:block;width:100%;height:auto}.chart-gridline{stroke:var(--border);stroke-width:1}.chart-baseline{stroke:var(--viz-baseline);stroke-width:1}.chart-tick{fill:var(--text-muted);font-size:11px}.chart-value{fill:var(--text-primary);font-size:12px;font-weight:600}.chart-mark{fill:var(--accent)}.chart-mark-muted{fill:var(--viz-muted)}.chart-column{cursor:default;outline:none}.chart-column:hover .chart-mark,.chart-column:focus-visible .chart-mark{filter:brightness(1.12)}.chart-column:focus-visible rect{stroke:var(--accent);stroke-width:1}.chart-tooltip{position:absolute;top:0;transform:translate(-50%);display:flex;flex-direction:column;padding:.35rem .6rem;background:var(--surface);border:1px solid var(--border);border-radius:4px;box-shadow:0 2px 6px #0000001f;font-size:.8rem;color:var(--text-secondary);pointer-events:none;white-space:nowrap}.chart-tooltip strong{color:var(--text-primary);font-size:.9rem}.chart-table summary{cursor:pointer;font-size:.85rem;color:var(--text-secondary)}.badge-projected{margin-left:.5rem;padding:0 .35rem;font-size:.7rem;color:var(--text-secondary);border:1px solid var(--border);border-radius:3px}.donut-chart{display:flex;align-items:center;gap:2rem;flex-wrap:wrap}.donut-legend{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.donut-legend li{display:flex;align-items:center;gap:.5rem}.legend-swatch{width:12px;height:12px;border-radius:2px;flex-shrink:0}.legend-label{min-width:8rem}.legend-value{color:var(--text-muted)}.calendar-nav{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}.calendar-nav h2{flex:1;margin:0;text-align:center}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--border);border:1px solid var(--border)}.calendar-weekday{padding:.4rem;text-align:center;font-size:.8rem;color:var(--text-muted);background:var(--page)}.calendar-day{min-height:6rem;padding:.3rem;background:var(--surface);display:flex;flex-direction:column;gap:.2rem}.calendar-day-empty{background:var(--page)}.calendar-day-number{font-size:.8rem;color:var(--text-muted)}.calendar-day-today .calendar-day-number{color:var(--accent-ink);background:var(--accent);border-radius:50%;width:1.4rem;height:1.4rem;display:flex;align-items:center;justify-content:center}.calendar-bill{display:block;font-size:.72rem;padding:.1rem .3rem;border-radius:3px;background:var(--page);color:var(--text-primary);text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-bill-overdue{color:var(--critical);border:1px solid var(--critical)}.attachments-section{margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--border)}.attachments-list{list-style:none;margin:0 0 1rem;padding:0;display:flex;flex-direction:column;gap:.5rem}.attachments-list li{display:flex;align-items:center;gap:.75rem;padding:.5rem;background:var(--surface);border:1px solid var(--border);border-radius:4px}.attachment-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attachment-size{color:var(--text-muted);font-size:.85rem}.attachment-upload{display:inline-flex;align-items:center;padding:.5rem 1rem;border:1px dashed var(--border);border-radius:4px;cursor:pointer;color:var(--text-secondary)}.attachment-upload input[type=file]{position:absolute;width:1px;height:1px;overflow:hidden;opacity:0}.scan-panel{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1.5rem;padding:1rem;background:var(--surface);border:1px solid var(--border);border-radius:6px}.scan-panel p{margin:0}.scan-panel .attachment-upload{align-self:flex-start}.scan-panel-intro{color:var(--text-secondary)}.scan-panel-file{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;overflow-wrap:anywhere}.form-fields{display:flex;flex-direction:column;gap:.75rem;min-width:0;margin:0;padding:0;border:0}.badge-scanned{margin-left:.35rem;padding:0 .35rem;font-size:.7rem;color:var(--accent);border:1px solid var(--accent);border-radius:3px}.form-notice{padding:.5rem .75rem;border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:4px;background:var(--surface)}.badge-shared,.badge-muted{margin-left:.5rem;padding:.05rem .4rem;font-size:.75rem;border-radius:3px;white-space:nowrap}.badge-shared{color:var(--accent);border:1px solid var(--accent)}.badge-muted{color:var(--text-secondary);border:1px solid var(--border)}.page-intro{color:var(--text-secondary);max-width:60ch}.member-list{list-style:none;margin:0 0 1.5rem;padding:0;display:flex;flex-direction:column;gap:.5rem}.member-list li{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;padding:.5rem .75rem;background:var(--surface);border:1px solid var(--border);border-radius:4px;overflow-wrap:anywhere}.invite-form{max-width:28rem}form label.checkbox-field{flex-direction:row;align-items:center;gap:.5rem;color:var(--text-primary)}.field-hint{color:var(--text-muted)}
