:root{--paper:#f5f4ed;--paper-cool:#eceef0;--white:#fff;--ink:#5a534d;--ink-strong:#000;--ink-soft:#80858b;--night:#211e1a;--hairline:#d6d6d6;--hairline-2:#e4e2db;--field-border:#c9c7c0;--orange:#de6446;--orange-700:#c24e32;--orange-800:#a8442b;--orange-050:#fbe9e3;--teal:#219ebc;--teal-700:#03415a;--green:#267a5a;--red:#b0352a;--red-700:#8c2a21;--color-bg-page:var(--paper);--color-surface:var(--white);--color-surface-raised:var(--white);--color-surface-cool:var(--paper-cool);--color-surface-hover:#faf9f4;--color-bg-inverse:var(--night);--color-border:var(--hairline);--color-border-strong:var(--ink);--color-border-hair:var(--hairline-2);--color-field-border:var(--field-border);--color-text:var(--ink);--color-text-strong:var(--ink-strong);--color-text-muted:var(--ink-soft);--color-text-inverse:var(--white);--color-primary:var(--orange);--color-primary-hover:var(--orange-700);--color-primary-active:var(--orange-800);--color-primary-soft:var(--orange-050);--color-accent:var(--teal);--color-focus:var(--teal);--color-success:var(--green);--color-danger:var(--red);--color-danger-hover:var(--red-700);--color-status-paid-dot:#267a5a;--color-status-paid-bg:#e5f0ea;--color-status-paid-fg:#1c5c44;--color-status-paid-bd:#bfdbcd;--color-status-partial-dot:#219ebc;--color-status-partial-bg:#e3f1f5;--color-status-partial-fg:#0b4f66;--color-status-partial-bd:#bbdde7;--color-status-unpaid-dot:#80858b;--color-status-unpaid-bg:#f1f0ea;--color-status-unpaid-fg:#5a534d;--color-status-unpaid-bd:#d6d6d6;--color-status-overdue-dot:#b0352a;--color-status-overdue-bg:#f7e5e3;--color-status-overdue-fg:#8c2a21;--color-status-overdue-bd:#e7c3bf;--color-status-tosign-dot:#de6446;--color-status-tosign-bg:#fbe9e3;--color-status-tosign-fg:#a8442b;--color-status-tosign-bd:#f1cdc1;--color-status-signed-dot:#267a5a;--color-status-signed-bg:#e5f0ea;--color-status-signed-fg:#1c5c44;--color-status-signed-bd:#bfdbcd;--color-status-pending-dot:#80858b;--color-status-pending-bg:#f1f0ea;--color-status-pending-fg:#5a534d;--color-status-pending-bd:#d6d6d6;--color-status-action-dot:#de6446;--color-status-action-bg:#fbe9e3;--color-status-action-fg:#a8442b;--color-status-action-bd:#f1cdc1;--color-progress-track:var(--paper-cool);--color-progress-fill:#219ebc;--color-progress-fill-done:#267a5a;--font-display:"Inter", system-ui, sans-serif;--font-mono:"Roboto Mono", ui-monospace, monospace;--font-ui:"Poppins", system-ui, sans-serif;--font-sans:var(--font-ui);--text-display-xl:600 54px/1 var(--font-display);--text-h1:600 32px/1.1 var(--font-display);--text-h2:600 24px/1.2 var(--font-display);--text-h3:600 18px/1.3 var(--font-display);--text-h4:500 15px/1.3 var(--font-display);--text-body:400 16px/1.5 var(--font-mono);--text-body-s:400 14px/1.5 var(--font-mono);--text-data:500 15px/1.3 var(--font-mono);--text-label:500 14px/1.2 var(--font-ui);--text-caption:400 12px/1.3 var(--font-ui);--tracking-tight:-.02em;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;--radius-none:0px;--radius-sm:2px;--radius-pill:999px;--border-width:1px;--shadow-sm:0 1px 2px #0000000d;--shadow-card:0 4px 4px #0000000f;--shadow-modal:0 8px 24px #00000024;--container-max:1180px;--container-text:760px;--sidebar-width:248px;--focus-ring:2px solid var(--color-focus);--focus-offset:2px}*,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--color-bg-page);color:var(--color-text);font:var(--text-body);letter-spacing:var(--tracking-tight);-webkit-font-smoothing:antialiased}:where(a){color:var(--color-primary-hover)}:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-offset)}.h1{font:var(--text-h1);color:var(--color-text-strong);letter-spacing:var(--tracking-tight);margin:0}.h2{font:var(--text-h2);color:var(--color-text-strong);margin:0}.lead{font:var(--text-body-s);color:var(--color-text);margin:0}.muted{color:var(--color-text-muted)}.btn{font:var(--text-label);border-radius:var(--radius-none);cursor:pointer;align-items:center;gap:var(--space-2);border:var(--border-width) solid transparent;padding:11px 18px;text-decoration:none;transition:background .12s,border-color .12s,color .12s;display:inline-flex}.btn--primary{background:var(--color-primary);color:var(--color-text-inverse)}.btn--primary:hover{background:var(--color-primary-hover)}.btn--primary:active{background:var(--color-primary-active)}.btn--secondary{background:var(--color-surface);color:var(--color-text-strong);border-color:var(--color-border-strong)}.btn--secondary:hover{background:#f1f0ea}.btn--ghost{color:var(--color-primary-hover);background:0 0}.btn--ghost:hover{background:var(--color-primary-soft)}.btn--danger{background:var(--color-danger);color:var(--color-text-inverse)}.btn--danger:hover{background:var(--color-danger-hover)}.btn:disabled,.btn--disabled{background:var(--paper-cool);color:#b7babf;border-color:var(--color-border);cursor:not-allowed}.btn--sm{padding:7px 12px;font-size:12.5px}.btn--lg{padding:14px 24px;font-size:15px}.field{display:block}.field__label{font:var(--text-label);color:var(--color-text-strong);margin-bottom:var(--space-2);font-size:13px;display:block}.field__input,.field__select,.field__textarea{font:var(--text-body-s);letter-spacing:var(--tracking-tight);color:var(--color-text-strong);background:var(--color-surface);border:var(--border-width) solid var(--color-field-border);border-radius:var(--radius-none);width:100%;padding:10px 12px}.field__input::placeholder{color:#b7babf}.field__input:hover{border-color:#9c9a93}.field__input:focus,.field__select:focus,.field__textarea:focus{border-color:var(--color-focus);box-shadow:inset 0 0 0 1px var(--color-focus);outline:none}.field__input:disabled{color:#9c9a93;cursor:not-allowed;background:#f1f0ea}.field--error .field__input{border-color:var(--color-danger);box-shadow:inset 0 0 0 1px var(--color-danger)}.field--error .field__label{color:var(--color-danger)}.field__help{font:var(--text-caption);color:var(--color-text-muted);margin-top:var(--space-2)}.field--error .field__help{color:var(--color-danger)}.field__select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%235A534D' stroke-width='1.5' fill='none'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;padding-right:34px}.field__textarea{resize:vertical}.status{font:var(--text-label);border:var(--border-width) solid;border-radius:var(--radius-none);align-items:center;gap:7px;padding:5px 11px 5px 9px;font-size:12.5px;display:inline-flex}.status__dot{border-radius:var(--radius-pill);flex:none;width:7px;height:7px}.status--paid{background:var(--color-status-paid-bg);color:var(--color-status-paid-fg);border-color:var(--color-status-paid-bd)}.status--paid .status__dot{background:var(--color-status-paid-dot)}.status--partial{background:var(--color-status-partial-bg);color:var(--color-status-partial-fg);border-color:var(--color-status-partial-bd)}.status--partial .status__dot{background:var(--color-status-partial-dot)}.status--unpaid{background:var(--color-status-unpaid-bg);color:var(--color-status-unpaid-fg);border-color:var(--color-status-unpaid-bd)}.status--unpaid .status__dot{background:var(--color-status-unpaid-dot)}.status--overdue{background:var(--color-status-overdue-bg);color:var(--color-status-overdue-fg);border-color:var(--color-status-overdue-bd)}.status--overdue .status__dot{background:var(--color-status-overdue-dot)}.status--tosign{background:var(--color-status-tosign-bg);color:var(--color-status-tosign-fg);border-color:var(--color-status-tosign-bd)}.status--tosign .status__dot{background:var(--color-status-tosign-dot)}.status--signed{background:var(--color-status-signed-bg);color:var(--color-status-signed-fg);border-color:var(--color-status-signed-bd)}.status--signed .status__dot{background:var(--color-status-signed-dot)}.status--pending{background:var(--color-status-pending-bg);color:var(--color-status-pending-fg);border-color:var(--color-status-pending-bd)}.status--pending .status__dot{background:var(--color-status-pending-dot)}.status--action{background:var(--color-status-action-bg);color:var(--color-status-action-fg);border-color:var(--color-status-action-bd)}.status--action .status__dot{background:var(--color-status-action-dot)}.progress{background:var(--color-progress-track);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-none);height:8px;position:relative}.progress__bar{background:var(--color-progress-fill);width:0;position:absolute;inset:0 auto 0 0}.progress--done .progress__bar{background:var(--color-progress-fill-done)}.card{border:var(--border-width) solid var(--color-border-strong);background:var(--color-surface)}.card__header{padding:var(--space-4) var(--space-5);border-bottom:var(--border-width) solid var(--color-border-strong);font:var(--text-h3);color:var(--color-text-strong);justify-content:space-between;align-items:center;gap:var(--space-3);font-size:16px;display:flex}.card__body{padding:var(--space-5)}.card--clickable{cursor:pointer;transition:background .12s}.card--clickable:hover{background:var(--color-surface-hover)}.card__value{font:var(--text-display-xl);color:var(--color-text-strong);font-variant-numeric:tabular-nums;font-size:40px}.table{border-collapse:collapse;width:100%;font-family:var(--font-mono)}.table th{text-align:left;font:var(--text-label);letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-muted);border-bottom:var(--border-width) solid var(--color-border-strong);padding:12px 18px;font-size:11.5px}.table td{color:var(--color-text);border-bottom:var(--border-width) solid var(--color-border-hair);letter-spacing:var(--tracking-tight);padding:14px 18px;font-size:13.5px}.table tr:last-child td{border-bottom:none}.table tbody tr:hover td{background:var(--color-surface-hover)}.table__num{font-variant-numeric:tabular-nums;color:var(--color-text-strong);font-weight:500}.notif{gap:var(--space-3);padding:13px var(--space-5);border-bottom:var(--border-width) solid var(--color-border-hair);display:flex}.notif--unread{background:#fbf3ef}.notif__dot{border-radius:var(--radius-pill);background:var(--color-text-muted);flex:none;width:8px;height:8px;margin-top:5px}.notif--unread .notif__dot{background:var(--color-primary)}.notif__badge{font:var(--text-label);background:var(--color-primary);color:var(--color-text-inverse);border-radius:var(--radius-pill);padding:2px 7px;font-size:11px;font-weight:600}.modal__overlay{background:#211e1a73;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--color-surface);border:var(--border-width) solid var(--color-border-strong);width:480px;box-shadow:var(--shadow-modal)}.modal__header{padding:var(--space-5);border-bottom:var(--border-width) solid var(--color-border-strong);font:var(--text-h3);color:var(--color-text-strong);justify-content:space-between;align-items:center;display:flex}.modal__body{padding:var(--space-5);gap:var(--space-4);flex-direction:column;display:flex}.modal__footer{justify-content:flex-end;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-top:var(--border-width) solid var(--color-border-hair);background:var(--color-surface-hover);display:flex}.empty{border:var(--border-width) dashed var(--color-field-border);background:var(--color-surface-hover);padding:var(--space-7) var(--space-5);text-align:center}.empty__title{font:var(--text-h3);color:var(--color-text-strong);margin-bottom:var(--space-2);font-size:16px}.empty__body{font:var(--text-body-s);color:var(--color-text-muted);max-width:280px;margin:0 auto}.toast{align-items:center;gap:var(--space-3);background:var(--color-bg-inverse);color:var(--color-text-inverse);font:var(--text-body-s);border-left:3px solid;min-width:300px;padding:14px 18px;display:flex}.toast--success{border-left-color:var(--color-success)}.toast--error{border-left-color:var(--color-danger)}.sidebar{width:var(--sidebar-width);background:var(--color-bg-inverse);flex-direction:column;flex:none;height:100vh;display:flex;position:sticky;top:0}.sidebar__brand{border-bottom:1px solid #ffffff1a;padding:26px 22px 22px}.sidebar__brand-name{font:700 20px/1 var(--font-display);color:#fff;letter-spacing:-.01em}.sidebar__brand-sub{font:400 11px/1 var(--font-mono);color:var(--color-primary);margin-top:4px}.sidebar__nav{flex:1;padding:16px 0}.sidebar__foot{border-top:1px solid #ffffff1a;align-items:center;gap:11px;padding:18px 22px;display:flex}.sidebar__avatar{background:var(--color-primary);color:#fff;width:34px;height:34px;font:600 14px/1 var(--font-display);flex:none;justify-content:center;align-items:center;display:flex}.sidebar__who-name{font:500 13px/1.2 var(--font-ui);color:#fff}.sidebar__who-sub{font:400 11px/1.2 var(--font-mono);color:var(--color-text-muted)}.nav__link{font:var(--text-label);color:#c9c7c0;cursor:pointer;border-left:2px solid #0000;align-items:center;gap:11px;padding:10px 14px;text-decoration:none;transition:color .12s,background .12s;display:flex}.nav__link:hover{color:#fff;background:#ffffff0d}.nav__link--active{color:#fff;border-left-color:var(--color-primary);background:#de644629}.nav__link--active.nav__link--admin{border-left-color:var(--color-accent);background:#219ebc2e}.nav__ico{opacity:.9;flex:none;width:16px;height:16px}.nav__badge{font:600 10px/1 var(--font-ui);background:var(--color-primary);color:#fff;border-radius:var(--radius-pill);margin-left:auto;padding:2px 6px}.app-shell{background:var(--color-bg-page);min-height:100vh;display:flex}.app-main{flex-direction:column;flex:1;min-width:0;display:flex}.app-topbar{border-bottom:var(--border-width) solid var(--color-border-strong);background:var(--color-bg-page);justify-content:space-between;align-items:center;padding:18px 40px;display:flex}.app-topbar__crumb{font:400 13px/1 var(--font-mono);color:var(--color-text-muted)}.app-content{flex:1;padding:40px}.page{max-width:var(--container-max)}.page--narrow{max-width:var(--container-text)}.page__intro{font:var(--text-body-s);margin:6px 0 28px}.grid-stats{grid-template-columns:repeat(3,1fr);gap:18px;display:grid}.grid-2{grid-template-columns:repeat(2,1fr);gap:18px;display:grid}.stack{flex-direction:column;gap:14px;display:flex}@media (width<=760px){.grid-stats,.grid-2{grid-template-columns:1fr}.app-content{padding:24px}}
