:root{--bg:#0f1115;--panel:#171a21;--panel-2:#1d212b;--line:#272c38;--text:#e6e9ef;--dim:#8b93a7;--accent:#5b8cff;--good:#34d399;--warn:#fbbf24;--bad:#f87171;--radius:12px;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none;min-height:100dvh;font-size:14px}.app{max-width:1040px;min-height:100dvh;padding:0 calc(16px + env(safe-area-inset-right)) calc(64px + env(safe-area-inset-bottom)) calc(16px + env(safe-area-inset-left));margin:0 auto}.topbar{z-index:10;padding:calc(14px + env(safe-area-inset-top)) 0 14px;background:var(--bg);border-bottom:1px solid var(--line);align-items:center;gap:16px;display:flex;position:sticky;top:0}.brand{letter-spacing:.2px;white-space:nowrap;font-weight:700}.brand .logo{color:var(--accent)}.tabs{flex:1;gap:4px;display:flex}.tab{color:var(--dim);cursor:pointer;background:0 0;border:0;border-radius:8px;padding:8px 12px;font-size:14px}.tab:hover{color:var(--text);background:var(--panel)}.tab.active{color:var(--text);background:var(--panel-2)}.sync{color:var(--dim);white-space:nowrap;align-items:center;gap:6px;font-size:12px;display:flex}.account-name{text-overflow:ellipsis;white-space:nowrap;max-width:160px;overflow:hidden}.dot{border-radius:50%;width:8px;height:8px}.dot.on{background:var(--good)}.dot.off{background:var(--dim)}.content{padding-top:20px}.stack{flex-direction:column;gap:14px;display:flex}.stack.tight{gap:4px}.row{align-items:center;display:flex}.row.gap{gap:10px}.row.gap.tight{gap:6px}.row.between,.between{justify-content:space-between}.row.wrap,.wrap{flex-wrap:wrap}.row.end,.end{align-items:flex-end}.grow{flex:1}.self-start{align-self:flex-start}.left{text-align:left;align-items:flex-start}.right{text-align:right}.dim{color:var(--dim)}.sm{font-size:12px}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px}button.card{cursor:pointer;width:100%;color:inherit;font:inherit;text-align:left}button.card:hover{border-color:var(--accent)}input,select,textarea{background:var(--panel-2);border:1px solid var(--line);color:var(--text);font:inherit;border-radius:8px;outline:none;min-width:0;padding:8px 10px}input:focus,select:focus,textarea:focus{border-color:var(--accent)}.ghost-input{background:0 0;border-color:#0000}.ghost-input:hover{border-color:var(--line)}.ledger-note{min-width:140px}.ledger-note input{width:100%}.ledger-note input:disabled{opacity:.6;cursor:wait}.ledger-note [role=alert]{color:var(--bad);font-size:12px}.title-input{background:0 0;border-color:#0000;padding-left:0;font-size:18px;font-weight:700}.title-input:hover,.title-input:focus{border-color:var(--line);padding-left:10px}.share-input{text-align:right;width:64px}.field{flex-direction:column;gap:4px;display:flex}.field-label{text-transform:uppercase;letter-spacing:.4px;color:var(--dim);font-size:11px}.inline-form{align-items:flex-end}textarea{resize:vertical}.project-client-chooser{width:100%;min-width:0}.project-client-chooser select{width:100%}.client-fields,.client-contact{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-width:0;display:grid}.client-fields .field{min-width:0}.client-fields input,.client-fields textarea,.client-fields select{width:100%}.client-contact{overflow-wrap:anywhere}.client-contact a{color:var(--accent)}.client-address{white-space:pre-line}.member-table-wrap{-webkit-overflow-scrolling:touch;max-width:100%;overflow-x:auto}.member-table{table-layout:fixed;min-width:1140px}.member-table th:first-child{width:120px}.member-table th:nth-child(2),.member-table th:nth-child(3){width:180px}.member-table th:nth-child(4){width:200px}.member-table th:nth-child(5){width:100px}.member-table th:nth-child(6){width:180px}.member-table th:nth-child(7){width:80px}.member-table th:nth-child(8){width:100px}.member-table-wrap .member-table{white-space:normal;display:table}.member-table input{width:100%}.member-table .ledger-note{min-width:0}.invoice-form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.invoice-composer .field,.invoice-form-grid .field{min-width:0}.invoice-composer input,.invoice-composer select,.invoice-composer textarea{width:100%}.invoice-editor{padding:20px}.invoice-editor-group{border:1px solid var(--line);border-radius:8px;min-width:0;margin:0;padding:16px}.invoice-editor-group legend{padding:0 6px;font-weight:600}.invoice-edit-notice{border:1px solid var(--line);background:var(--panel-2);border-radius:8px;width:100%;padding:12px}.invoice-edit-notice .btn{align-self:flex-start}.invoice-list{flex-direction:column;gap:8px;display:flex}.invoice-list-item{text-align:left;justify-content:space-between;align-items:center;gap:12px;width:100%;display:flex}.invoice-list-meta{color:var(--dim);flex-wrap:wrap;gap:6px 14px;font-size:12px;display:flex}.invoice-dialog{border:1px solid var(--line);background:var(--panel);width:min(900px,100vw - 32px);max-width:none;max-height:calc(100dvh - 32px);color:var(--text);border-radius:12px;padding:0;overflow:auto}.invoice-dialog::backdrop{background:#000000b8}.invoice-toolbar,.invoice-dialog-actions{background:var(--panel);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:14px 20px;display:flex}.invoice-toolbar{z-index:1;border-bottom:1px solid var(--line);position:sticky;top:0}.invoice-dialog-actions{border-top:1px solid var(--line)}.invoice-dialog-error{margin:12px 20px}.invoice-paper{color:#17202e;overflow-wrap:anywhere;background:#fff;padding:42px;font-size:14px;line-height:1.5}.invoice-heading{border-bottom:2px solid #17202e;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;padding-bottom:24px;display:flex}.invoice-heading h1,.invoice-heading h2{color:#17202e;letter-spacing:2px;margin:0;font-size:32px;line-height:1.15}.invoice-eyebrow{color:#566174;letter-spacing:1px;text-transform:uppercase;margin-bottom:6px;font-size:11px;font-weight:600;display:block}.invoice-draft{color:#744d00;font-size:13px;font-weight:600}.invoice-parties,.invoice-dates{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin:24px 0;display:grid}.invoice-contact{white-space:pre-line}.invoice-contact p{margin:4px 0}.invoice-contact h2,.invoice-note h2{color:#566174;letter-spacing:.6px;text-transform:uppercase;margin:0 0 8px;font-size:11px;font-weight:600}.invoice-dates{gap:12px 24px;margin:0;font-size:12px}.invoice-dates dt{color:#566174;font-size:11px}.invoice-dates dd{margin:2px 0 0;font-weight:600}.invoice-dialog-error{color:var(--bad)}.invoice-paper h3{color:#17202e;font-size:14px}.invoice-items{border-collapse:collapse;table-layout:fixed;width:100%;margin:24px 0 18px}.invoice-items th{color:#374256;letter-spacing:.5px;text-transform:uppercase;text-align:left;background:#f0f3f7;border-bottom:1px solid #cdd4dd;padding:10px 12px;font-size:11px}.invoice-items td{vertical-align:top;white-space:pre-wrap;border-bottom:1px solid #dce1e7;padding:16px 12px}.invoice-items th:last-child,.invoice-items td:last-child{text-align:right;white-space:nowrap;width:150px}.invoice-amount{text-align:right;font-variant-numeric:tabular-nums}.invoice-summary{width:min(100%,360px);margin:16px 0 24px auto}.invoice-summary>div{justify-content:space-between;gap:16px;padding:7px 0;display:flex}.invoice-summary dt,.invoice-summary dd{margin:0}.invoice-summary dd{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.invoice-summary .invoice-balance{border-top:2px solid #17202e;margin-top:8px;padding-top:12px;font-size:18px;font-weight:700}.invoice-credit{font-weight:600}.invoice-note{white-space:pre-wrap;margin-top:22px}.invoice-note p{margin:6px 0 0}.invoice-footer{color:#566174;border-top:1px solid #dce1e7;margin-top:32px;padding-top:12px;font-size:11px}@media screen and (width<=600px){.invoice-form-grid,.invoice-parties,.invoice-dates{grid-template-columns:1fr;gap:16px}.invoice-dialog{width:calc(100vw - 16px);max-height:calc(100dvh - 16px)}.invoice-paper{padding:22px 18px}.invoice-toolbar,.invoice-dialog-actions,.invoice-editor,.invoice-editor-group{padding:12px}.invoice-items th,.invoice-items td{padding-left:6px;padding-right:6px}.invoice-items th:last-child,.invoice-items td:last-child{width:115px}.invoice-list-item{flex-wrap:wrap;align-items:flex-start}}@media print{@page{size:auto;margin:14mm}:is(html:has(.invoice-dialog[open]),body:has(.invoice-dialog[open])){color:#17202e;background:#fff;height:auto;min-height:0;margin:0;padding:0;overflow:visible}body:has(.invoice-dialog[open])>:not(.invoice-dialog){display:none!important}.invoice-dialog[open]{width:100%;max-width:none;height:auto;max-height:none;box-shadow:none;background:#fff;border:0;border-radius:0;margin:0;padding:0;display:block;position:static;overflow:visible}.invoice-dialog::backdrop,.invoice-toolbar,.invoice-dialog-actions,.invoice-dialog-error,.invoice-editor,.invoice-edit-notice,.invoice-dialog[open][data-printable=false]{display:none!important}.invoice-paper{padding:0;font-size:10pt}.invoice-parties,.invoice-dates{grid-template-columns:repeat(2,minmax(0,1fr))}.invoice-heading,.invoice-parties,.invoice-dates,.invoice-summary{break-inside:avoid}.invoice-items thead{display:table-header-group}.invoice-items th:last-child,.invoice-items td:last-child{width:150px}.invoice-paper h3{break-after:avoid}}.btn{background:var(--panel-2);border:1px solid var(--line);color:var(--text);cursor:pointer;font:inherit;border-radius:8px;padding:8px 14px}.btn:hover{border-color:var(--accent)}.btn.sm{padding:5px 10px;font-size:12px}.btn.primary{background:var(--accent);border-color:var(--accent);color:#0b1020;font-weight:600}.btn.primary:hover{filter:brightness(1.08)}.btn.danger{color:var(--bad)}.btn.danger:hover{border-color:var(--bad)}.btn:disabled{opacity:.4;cursor:not-allowed}.participant-receipt{color:var(--accent);font:inherit;text-align:left;text-underline-offset:3px;cursor:pointer;background:0 0;border:0;padding:0;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.participant-receipt:hover,.participant-receipt:focus-visible{text-decoration-style:solid}.participant-receipt:disabled{opacity:.4;cursor:wait}.table{border-collapse:collapse;width:100%}.table th{text-align:left;color:var(--dim);text-transform:uppercase;letter-spacing:.4px;border-bottom:1px solid var(--line);padding:6px 10px;font-size:11px;font-weight:500}.table td{border-bottom:1px solid var(--line);padding:8px 10px}.table.compact td,.table.compact th{padding:6px 10px}.table .right{text-align:right}.table tbody tr:last-child td{border-bottom:0}.pill{border:1px solid var(--line);background:var(--panel-2);color:var(--dim);border-radius:999px;padding:2px 8px;font-size:12px;display:inline-block}.pill.good{color:var(--good);border-color:color-mix(in srgb, var(--good) 40%, var(--line))}.pill.warn{color:var(--warn);border-color:color-mix(in srgb, var(--warn) 40%, var(--line))}.pill.muted{color:var(--dim)}.pill.accent{color:var(--accent);border-color:color-mix(in srgb, var(--accent) 40%, var(--line))}.bal{font-variant-numeric:tabular-nums;font-weight:600}.bal.pos{color:var(--good)}.bal.neg{color:var(--bad)}.bal.zero{color:var(--dim)}.kpi{flex-direction:column;gap:2px;min-width:90px;padding:4px 0;display:flex}.kpi strong{font-variant-numeric:tabular-nums;font-size:16px}.kpi.warn strong{color:var(--warn)}.member-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px;display:grid}.member-chip{border:1px solid var(--line);background:var(--panel-2);border-radius:8px;justify-content:space-between;align-items:center;gap:8px;padding:8px 10px;display:flex}.member-chip.on{border-color:var(--accent)}.total{font-variant-numeric:tabular-nums;font-weight:600}.total.ok{color:var(--good)}.total.bad{color:var(--warn)}.settle-row{border-bottom:1px solid var(--line);padding:8px 0}.settle-row:last-child{border-bottom:0}h3{margin:0;font-size:14px}.banner{background:var(--panel);border:1px solid var(--line);color:var(--dim);border-radius:8px;margin-top:12px;padding:10px 14px}.banner.error{color:var(--bad);border-color:color-mix(in srgb, var(--bad) 40%, var(--line))}.empty{text-align:center;color:var(--dim);border:1px dashed var(--line);border-radius:var(--radius);padding:28px}.hint{color:var(--dim);margin:0;font-size:12px}.login-screen{min-height:100dvh;padding:calc(32px + env(safe-area-inset-top)) calc(32px + env(safe-area-inset-right)) calc(32px + env(safe-area-inset-bottom)) calc(32px + env(safe-area-inset-left));justify-content:center;align-items:center;display:flex}.login-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);width:100%;max-width:360px;padding:28px}.login-card h2{margin:0;font-size:18px}.project-row strong{font-size:15px}.multi-select{-webkit-user-select:none;user-select:none;position:relative}.multi-select-trigger{background:var(--panel-2);border:1px solid var(--line);color:var(--text);font:inherit;cursor:pointer;white-space:nowrap;border-radius:8px;align-items:center;gap:6px;padding:8px 10px;display:flex}.multi-select-trigger:hover{border-color:var(--accent)}.multi-select-trigger.active{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 10%, var(--panel-2))}.multi-select-trigger .arrow{color:var(--dim);font-size:10px}.multi-select-dropdown{z-index:20;background:var(--panel-2);border:1px solid var(--line);border-radius:8px;min-width:200px;max-height:260px;padding:4px;position:absolute;top:calc(100% + 4px);left:0;overflow-y:auto}.multi-select-option{cursor:pointer;color:var(--text);border-radius:6px;align-items:center;gap:8px;padding:6px 8px;font-size:13px;display:flex}.multi-select-option:hover{background:var(--panel)}.multi-select-option input[type=checkbox]{accent-color:var(--accent);cursor:pointer;width:15px;height:15px}.date-range-dropdown{gap:12px;width:270px;max-height:none;padding:12px;display:grid;overflow:visible}.date-range-dropdown input[type=date]{width:100%}.offline-screen{min-height:100dvh;padding:calc(24px + env(safe-area-inset-top)) calc(24px + env(safe-area-inset-right)) calc(24px + env(safe-area-inset-bottom)) calc(24px + env(safe-area-inset-left));place-items:center;display:grid}.offline-card{text-align:center;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);width:min(100%,360px);padding:28px}.offline-card h1,.offline-card p{margin:0}.offline-logo{color:#fff;background:var(--accent);border-radius:18px;place-items:center;width:64px;height:64px;margin:0 auto;font-size:32px;font-weight:800;display:grid}@media (display-mode:standalone){.install-btn{display:none}}@media (width<=720px){body{font-size:14px}.app{padding-right:calc(12px + env(safe-area-inset-right));padding-bottom:calc(82px + env(safe-area-inset-bottom));padding-left:calc(12px + env(safe-area-inset-left))}.topbar{gap:10px;padding-bottom:10px}.brand{font-size:15px}.account{min-width:0;margin-left:auto;gap:6px!important}.account-name{max-width:90px}.sync{gap:0;font-size:0}.tabs{z-index:50;padding:8px calc(8px + env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom)) calc(8px + env(safe-area-inset-left));background:color-mix(in srgb, var(--bg) 92%, transparent);border-top:1px solid var(--line);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);gap:2px;position:fixed;bottom:0;left:0;right:0}.tab{text-overflow:ellipsis;flex:1 1 0;min-width:0;min-height:44px;padding:7px 3px;font-size:11px;line-height:1.15;overflow:hidden}.tab.active{color:#fff;background:color-mix(in srgb, var(--accent) 20%, var(--panel-2))}.content{padding-top:14px}.card{padding:14px}.login-screen{padding-right:calc(16px + env(safe-area-inset-right));padding-left:calc(16px + env(safe-area-inset-left));align-items:flex-start}.login-card{margin-top:max(4vh,16px);padding:22px}.project-row{flex-direction:column;align-items:flex-start}.project-row>.row{flex-wrap:wrap}.inline-form .field,form.card>.field{flex:140px}.inline-form .field input,.inline-form .field select,form.card>.field input,form.card>.field select{width:100%}.member-grid,.client-fields,.client-contact{grid-template-columns:1fr}.multi-select-dropdown{max-width:calc(100vw - 24px);left:auto;right:0}.date-range-dropdown{width:min(270px,100vw - 24px)}.table{white-space:nowrap;-webkit-overflow-scrolling:touch;scrollbar-width:thin;display:block;overflow-x:auto}.table th,.table td{padding-left:8px;padding-right:8px}}@media (width<=430px){.account-name{display:none}.topbar .btn.sm{padding:6px 8px}.row.between.settle-row{flex-direction:column;align-items:flex-start;gap:8px}}
