:root{--bg: #f7f7f5;--panel: #ffffff;--ink: #1c2733;--muted: #66707c;--line: #e3e4e0;--accent: #0e5a8a;--accent-soft: #e8f1f7;--revenue: #1a6b4a;--expense: #8a3d0e;--danger: #b3372f;--radius: 6px;font-family:Segoe UI,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-size:14px}#root{min-height:100vh;display:flex;flex-direction:column}.topbar{background:var(--accent);color:#fff;display:flex;align-items:center;gap:24px;padding:0 20px;height:48px}.topbar .brand{font-weight:600;letter-spacing:.02em}.topbar nav{display:flex;gap:4px}.topbar nav a{color:#d5e5f0;text-decoration:none;padding:6px 12px;border-radius:var(--radius)}.topbar nav a.active{background:#ffffff2e;color:#fff}.topbar nav a:hover{color:#fff}.topbar .who{margin-left:auto;font-size:12px;color:#bcd3e2}.page{padding:20px;max-width:1600px;width:100%;margin:0 auto}.page h1{font-size:20px;margin:0 0 16px}.page h2{font-size:16px;margin:24px 0 8px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin-bottom:16px}.toolbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:16px}.toolbar label{color:var(--muted);font-size:13px}.muted{color:var(--muted)}.error{color:var(--danger)}select,input[type=text],input[type=number]{border:1px solid var(--line);border-radius:var(--radius);padding:5px 8px;font:inherit;background:#fff;color:var(--ink)}select:focus,input:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}button{border:1px solid var(--line);border-radius:var(--radius);background:#fff;color:var(--ink);padding:6px 12px;font:inherit;cursor:pointer}button:hover{border-color:var(--accent);color:var(--accent)}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover{filter:brightness(1.1);color:#fff}button.danger{color:var(--danger)}button:disabled{opacity:.5;cursor:default}button.small{padding:2px 8px;font-size:12px}table.data{border-collapse:collapse;width:100%;background:var(--panel);font-variant-numeric:tabular-nums}table.data th,table.data td{border:1px solid var(--line);padding:4px 8px;text-align:left}table.data th{background:#eef0ee;font-weight:600;font-size:12px;white-space:nowrap;position:sticky;top:0;z-index:2}table.data td.num,table.data th.num{text-align:right}table.data tr.subtotal td{background:#f3f4f1;font-weight:600}table.data tr.grand td{background:var(--accent-soft);font-weight:700}table.data tr.section td{background:#e9edf0;font-weight:700;text-transform:uppercase;font-size:12px;letter-spacing:.04em}.scroll-x{overflow-x:auto}.ws input.cell{width:78px;text-align:right;border:1px solid var(--line);background:#fff;padding:3px 4px;border-radius:3px;font-variant-numeric:tabular-nums}.ws input.cell:hover{border-color:var(--accent)}.ws input.cell:focus{border-color:var(--accent);background:#fff;box-shadow:0 0 0 2px var(--accent-soft)}.ws input.cell.computed{color:var(--muted);background:#f3f4f1;border-color:transparent}.ws input.cell.computed:hover{border-color:var(--line)}.ws input.cell.annual{font-weight:600;width:90px}.ws td.acct{vertical-align:middle}.ws .acct-line{display:flex;align-items:baseline;gap:6px}.ws .acct-name{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ws .acct-line .items-link{flex:none}.ws .code{color:var(--muted);font-size:12px;margin-right:6px}.ws td.cmp{color:var(--muted);background:#fafaf8}.ws .rev{color:var(--revenue)}.ws .exp{color:var(--expense)}.page.wide{max-width:none}.ws td,.ws th{padding:2px 4px}.ws input.cell{width:58px;font-size:12px;padding:2px}.ws input.cell.annual{width:72px}.ws td.num,.ws td.cmp,.ws th.num{font-size:12px}.ws th.acctcol,.ws td.acct{width:var(--acct-w, 220px);min-width:var(--acct-w, 220px);max-width:var(--acct-w, 220px);position:sticky;left:0;z-index:2;background:#fff;box-shadow:1px 0 0 var(--line)}.ws thead th.acctcol{z-index:4;background:#eef0ee;padding-right:10px}.ws th.modecol,.ws td.modecol{width:var(--mode-w, 210px);min-width:var(--mode-w, 210px);max-width:var(--mode-w, 210px);overflow:hidden;white-space:nowrap}.ws th.modecol{position:relative;padding-right:10px}.ws th.acctcol .col-resizer,.ws th.modecol .col-resizer{position:absolute;top:0;right:0;height:100%;width:7px;cursor:col-resize;-webkit-user-select:none;user-select:none}.ws th.acctcol .col-resizer:hover,.ws th.modecol .col-resizer:hover{background:var(--accent);opacity:.4}.mode-btn{border:1px solid var(--line);background:#fff;border-radius:3px;padding:1px 6px;font-size:11px;cursor:pointer;color:var(--muted)}.mode-btn.auto{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.items-link{font-size:12px;color:var(--accent);text-decoration:none;white-space:nowrap}.save-state{font-size:11px;color:var(--muted);margin-left:4px;white-space:nowrap}.save-state.saving{color:var(--accent)}.save-state.error{color:var(--danger)}.chip{display:inline-flex;gap:8px;align-items:center;background:#fff8e1;border:1px solid #e5d28a;border-radius:12px;padding:2px 10px;font-size:12px}.chip button{border:none;padding:0;color:var(--accent);text-decoration:underline}.steps{display:flex;gap:8px;margin-bottom:16px}.steps .step{padding:4px 12px;border-radius:12px;background:#eee;color:var(--muted);font-size:12px}.steps .step.active{background:var(--accent);color:#fff}.steps .step.done{background:var(--accent-soft);color:var(--accent)}.dropzone{border:2px dashed var(--line);border-radius:var(--radius);padding:40px;text-align:center;color:var(--muted);cursor:pointer}.dropzone:hover,.dropzone.drag-over{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.raw-preview td,.raw-preview th{font-size:12px;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}tr.header-candidate{cursor:pointer}tr.header-candidate:hover td{background:var(--accent-soft)}tr.header-chosen td{background:var(--accent-soft);font-weight:600}.tiles{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:16px}.tile{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:12px 20px;min-width:180px}.tile .label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.tile .value{font-size:22px;font-weight:700;margin-top:4px;font-variant-numeric:tabular-nums}.tile .value.rev{color:var(--revenue)}.tile .value.exp{color:var(--expense)}.tabs{display:flex;gap:2px;border-bottom:2px solid var(--line);margin-bottom:16px}.tabs button{border:none;border-radius:0;background:none;padding:8px 16px;color:var(--muted)}.tabs button.active{color:var(--accent);border-bottom:2px solid var(--accent);margin-bottom:-2px;font-weight:600}form.inline{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.login{width:320px;display:flex;flex-direction:column;gap:12px}.login h1{font-size:20px;margin:0}.login label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted)}.login input{font-size:14px}.login button{margin-top:4px}.topbar .logout{margin-left:12px;background:transparent;border-color:#fff6;color:#eaf2f8}.topbar .logout:hover{border-color:#fff;color:#fff}
