:root{color:#1f2933;background:#f4f6f8;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.65}.app-shell{min-height:100vh;padding:28px 20px}.app-main{max-width:1160px;margin:0 auto}.app-header{justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:18px;display:flex}.app-header h1{margin:0 0 6px;font-size:34px;line-height:1.12}.app-header p{color:#5d6878;margin:0;font-size:16px}.tab-action-row{justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px;display:flex}.page-tabs{background:#e8edf3;border-radius:8px;grid-template-columns:repeat(4,minmax(112px,1fr));gap:6px;padding:5px;display:inline-grid}.page-tabs button,.segmented-control button{color:#4b5563;background:0 0;border:0;border-radius:6px;padding:10px 12px;font-weight:800}.page-tabs button.active,.segmented-control button.active{color:#184e48;background:#fff;box-shadow:0 1px 3px #0f172a1f}.page-stack{gap:16px;display:grid}.card{background:#fff;border:1px solid #d9e0e8;border-radius:8px;padding:20px}.notice{border-radius:8px;margin-bottom:18px;padding:12px 14px;font-weight:700}.notice.error{color:#9f1d1d;background:#ffe8e8}.primary-button,.secondary-button{border:1px solid #0000;border-radius:8px;padding:10px 14px;font-weight:800}.primary-button{color:#fff;background:#24786d}.secondary-button{color:#1f2933;background:#fff;border-color:#cbd5df}.toolbar-card{flex-direction:column;justify-content:space-between;align-items:stretch;gap:20px;display:flex}.toolbar-card h2,.settlement-card h2,.people-card h2,.entry-panel h2,.transactions-panel h2,.latest-card-section h2,.stats-year-card h2,.stats-total-card h2,.chart-card h2,.monthly-card h2{margin:0;font-size:20px}.toolbar-card p{color:#5d6878;margin:6px 0 0}.period-controls{grid-template-columns:minmax(300px,420px) minmax(260px,1fr);align-items:end;column-gap:32px;width:100%;display:grid}.range-fields{grid-template-columns:repeat(2,minmax(120px,150px));justify-content:end;gap:12px;width:100%;margin-left:auto;display:grid}.range-fields.single-field{grid-template-columns:minmax(120px,150px)}.segmented-control{background:#edf1f5;border-radius:8px;grid-template-columns:repeat(4,1fr);gap:5px;padding:4px;display:grid}.stats-year-card{grid-template-columns:minmax(220px,1fr) minmax(360px,520px);align-items:end;gap:20px;display:grid}.stats-year-card p{color:#5d6878;margin:6px 0 0}.stats-year-select{justify-self:end;width:min(100%,240px)}label{color:#4b5563;gap:7px;font-size:16px;font-weight:700;display:grid}input,select{color:#1f2933;background:#fff;border:1px solid #cbd5df;border-radius:8px;width:100%;padding:10px 11px}select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='14' height='14' viewBox='0 0 20 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5 7.5L10 12.5L15 7.5' stroke='%234b5563' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:right 11px center;background-repeat:no-repeat}input:focus,select:focus{border-color:#24786d;outline:3px solid #24786d29}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.metric{align-content:center;gap:8px;min-height:116px;display:grid}.metric span{color:#5d6878;font-size:14px;font-weight:700}.metric strong{font-size:28px;line-height:1.1}.dashboard-grid{grid-template-columns:minmax(0,1.08fr) minmax(340px,.92fr);align-items:stretch;gap:16px;display:grid}.stats-top-grid{grid-template-columns:minmax(280px,.85fr) minmax(420px,1.15fr);align-items:stretch;gap:16px;display:grid}.stats-total-card{align-content:start;display:grid}.stats-total-list{gap:14px;margin-top:8px;display:grid}.stats-total-list>div{border:1px solid #e3e8ef;border-radius:8px;padding:18px}.stats-total-list span{color:#5d6878;margin-bottom:8px;font-size:14px;font-weight:800;display:block}.stats-total-list strong{font-size:28px;line-height:1.1;display:block}.pie-chart-wrap{grid-template-columns:minmax(180px,240px) minmax(0,1fr);align-items:center;gap:20px;display:grid}.pie-chart-wrap svg{width:100%;max-width:240px;display:block}.pie-total-label{fill:#718096;font-size:13px;font-weight:800}.pie-total-value{fill:#1f2933;font-size:18px;font-weight:800}.pie-percent-label{fill:#1f2933;font-size:12px;font-weight:400}.chart-legend{gap:10px;display:grid}.legend-row{color:#3c4755;grid-template-columns:12px minmax(80px,1fr) auto auto;align-items:center;gap:10px;display:grid}.legend-row span{border-radius:999px;width:12px;height:12px}.legend-row strong{font-size:14px}.legend-row b{color:#1f2933;font-size:14px}.legend-row em{color:#5d6878;font-style:normal;font-weight:800}.empty-chart{justify-items:start}.monthly-card{overflow-x:auto}.bar-chart-legend{color:#5d6878;justify-content:flex-end;gap:14px;margin:-4px 0 16px;font-size:14px;font-weight:800;display:flex}.bar-chart-legend span{align-items:center;gap:7px;display:inline-flex}.bar-chart-legend span:before{content:"";border-radius:3px;width:10px;height:10px}.bar-chart-legend .payment:before,.monthly-bar.payment{background:#2563eb}.bar-chart-legend .receipt:before,.monthly-bar.receipt{background:#16a34a}.monthly-chart-wrap{grid-template-columns:72px minmax(720px,1fr);gap:10px;min-width:802px;display:grid}.monthly-y-axis{color:#718096;text-align:right;border-right:1px solid #cbd5df;grid-template-rows:repeat(5,1fr);height:210px;margin-top:8px;padding-right:8px;font-size:12px;font-weight:800;display:grid}.monthly-y-axis span{transform:translateY(-50%)}.monthly-y-axis span:first-child{transform:none}.monthly-y-axis span:last-child{align-self:end;transform:none}.monthly-chart{grid-template-columns:repeat(12,minmax(52px,1fr));gap:10px;min-height:260px;padding-top:8px;display:grid}.month-column{text-align:center;grid-template-rows:210px auto;gap:8px;display:grid}.month-bars{border-bottom:1px solid #d9e0e8;justify-content:center;align-items:end;gap:6px;display:flex}.monthly-bar{border-radius:5px 5px 0 0;width:16px;min-height:0}.month-column>span{color:#5d6878;font-size:13px;font-weight:800}.settlement-card p{color:#3c4755;margin:10px 0 0;font-size:18px;line-height:1.45}.card-eyebrow{color:#718096;text-transform:uppercase;margin-top:8px;font-size:13px;font-weight:800;display:block}.people-list{grid-template-columns:1fr;gap:16px;margin-top:16px;display:grid}.person-row{border:1px solid #e3e8ef;border-radius:8px;gap:18px;padding:18px;display:grid}.person-row>div:first-child{display:block}.person-row>div:first-child strong{font-size:18px}.person-row span{color:#5d6878}dl{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0;display:grid}dt{color:#718096;text-transform:uppercase;font-size:14px;font-weight:800}dd{margin:4px 0 0;font-weight:800}.section-title{justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:14px;display:flex}.section-title span{color:#718096;font-weight:700}.transactions-panel h2{font-size:21px}.transactions-title-row{align-items:center}.transaction-range-row{justify-content:space-between;align-items:end;gap:16px;margin:-2px 0 18px;display:flex}.transaction-range-controls{grid-template-columns:repeat(2,minmax(150px,1fr));justify-content:start;align-items:end;gap:12px;max-width:360px;display:grid}.transaction-range-controls label{min-width:150px;font-size:15px}.transaction-count{color:#5d6878;white-space:nowrap;font-size:14px;font-weight:800}.compact-transaction-list{gap:10px;display:grid}.compact-transaction-row{border:1px solid #e3e8ef;border-radius:8px;justify-content:space-between;align-items:center;gap:16px;padding:14px;display:flex}.compact-transaction-row>div{gap:4px;display:grid}.compact-transaction-row span{color:#718096;font-size:14px}.compact-transaction-row .kind-text.payment{color:#2563eb;font-weight:800}.compact-transaction-row .kind-text.receipt{color:#16a34a;font-weight:800}.entry-panel{gap:16px;display:grid}.form-title-row{justify-content:space-between;align-items:center;gap:16px;display:flex}.entry-panel .segmented-control{grid-template-columns:repeat(2,1fr);max-width:360px}.entry-panel .segmented-control button.payment.active{color:#2563eb;background:#e7f0ff}.entry-panel .segmented-control button.receipt.active{color:#16a34a;background:#e3f4ef}.form-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid}.transaction-list{gap:10px;display:grid}.fixed-actions{justify-content:center;margin-top:24px;display:flex}.transaction-row{border:1px solid #e3e8ef;border-radius:8px;justify-content:space-between;align-items:center;gap:16px;padding:13px 14px;display:flex}.transaction-row div:first-child{gap:4px;display:grid}.transaction-row span{color:#5d6878}.transaction-amount{white-space:nowrap;align-items:center;gap:10px;display:flex}.transaction-amount span{text-transform:uppercase;border-radius:999px;padding:4px 8px;font-size:12px;font-weight:800}.transaction-amount span.payment{color:#2563eb;background:#e7f0ff}.transaction-amount span.receipt{color:#16a34a;background:#e3f4ef}.transaction-amount button{color:#9f1d1d;background:#fff7f7;border:1px solid #f1b5b5;border-radius:8px;padding:7px 9px;font-size:12px;font-weight:700}.transaction-amount .edit-button{color:#2563eb;background:#f3f7ff;border-color:#bdd2f6}.empty-state{color:#5d6878;margin:0}@media (width<=920px){.toolbar-card,.app-header,.transaction-row{flex-direction:column;align-items:stretch}.period-controls,.range-fields,.transaction-range-controls,.metric-grid,.dashboard-grid,.stats-year-card,.stats-top-grid,.pie-chart-wrap,.form-grid{grid-template-columns:1fr}.range-fields{justify-content:stretch;margin-left:0}.page-tabs{width:100%}.pie-chart-wrap{justify-items:center}.chart-legend{width:100%}.tab-action-row,.transaction-range-row{flex-direction:column;align-items:stretch}.transaction-count{white-space:normal}.transaction-amount{white-space:normal;justify-content:space-between}.section-title{flex-direction:column;align-items:stretch}}@media (width<=560px){.app-shell{padding:18px 12px}.app-header h1{font-size:30px}.card{padding:16px}.metric strong{font-size:24px}.stats-year-select{justify-self:stretch;width:100%}.stats-total-list strong{font-size:24px}.page-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}}
