:root{color-scheme:light dark;--font-stack: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--accent: #0a6cff;--grid-line: rgba(128, 128, 128, .35);--bg: #ffffff;--fg: #161616;--muted: #767676;--surface: #f4f4f5;--border: #d9d9de;--danger: #b3261e;--income: #1a5c1a;--expense: #7a1010}@media(prefers-color-scheme:dark){:root{--bg: #1c1c1e;--fg: #ececec;--muted: #9a9a9e;--surface: #2a2a2d;--border: #3a3a3e}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-stack);background:var(--bg);color:var(--fg)}.muted{color:var(--muted)}.center-screen{display:grid;place-items:center;height:100vh}.topbar{display:flex;align-items:center;gap:10px;padding:8px 14px;border-bottom:1px solid var(--border);background:var(--surface)}.topbar .brand{font-weight:700;letter-spacing:.02em;margin-right:4px;text-decoration:none;color:var(--fg)}.topbar .spacer{flex:1}.btn{font:inherit;padding:4px 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--fg);cursor:pointer}.btn:hover{border-color:var(--accent)}.btn:disabled{opacity:.45;cursor:default}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-ghost{border:none;background:none;color:var(--fg);cursor:pointer;font:inherit;padding:4px 8px;text-decoration:none}.btn-danger{color:var(--danger)}select.btn,input.btn{padding:4px 8px}.banner{padding:8px 14px;background:#fff3cd;color:#664d03;border-bottom:1px solid #ffe69c;display:flex;gap:12px;align-items:center}@media(prefers-color-scheme:dark){.banner{background:#3a3000;color:#ffe69c;border-color:#5c4d00}}.page{max-width:980px;margin:0 auto;padding:24px 16px}.card{border:1px solid var(--border);border-radius:10px;padding:16px;margin-bottom:16px}.card h2{margin:0 0 10px;font-size:1.05rem}.book-table{width:100%;border-collapse:collapse}.book-table th,.book-table td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border)}.book-table a{color:var(--fg);font-weight:600;text-decoration:none}.book-table a:hover{color:var(--accent)}.role-badge{font-size:.75rem;border:1px solid var(--border);border-radius:999px;padding:1px 8px;color:var(--muted)}.grid-page{display:flex;flex-direction:column;height:100vh}.grid-toolbar{display:flex;align-items:center;gap:8px;padding:6px 10px;border-bottom:1px solid var(--border);flex-wrap:wrap}.grid-toolbar .name{font-weight:700;margin-right:6px}.grid-container{flex:1;overflow:auto;position:relative}.grid-inner{display:grid;background:var(--bg)}.gcell{border-right:1px solid var(--grid-line);border-bottom:1px solid var(--grid-line);padding:2px 5px;overflow:hidden;overflow-wrap:break-word;white-space:pre-wrap;vertical-align:top;position:relative;user-select:none;-webkit-user-select:none}.gcell.num{text-align:right;font-variant-numeric:tabular-nums}.gcell.gutter{text-align:right;color:var(--muted);font-size:.85em}.gcell.header{position:sticky;background:var(--surface);z-index:3;font-weight:600}.gcell.header.letters{top:0;color:var(--muted);font-weight:400}.gcell.header.top-tier{top:var(--lh, 20px)}.gcell.header.bottom-tier{top:calc(var(--lh, 20px) * 2)}.gcell.selected{outline:2px solid var(--accent);outline-offset:-2px;z-index:2}.gcell.hovered{box-shadow:inset 0 0 0 1px #0a6cff59}.gcell .collapse-toggle{cursor:pointer;font-weight:700;margin-right:4px;color:var(--accent)}.gcell .cat-income{color:var(--income);font-weight:600}.gcell .cat-expense{color:var(--expense);font-weight:600}.gcell.subtotal{font-weight:600}.gcell.grand{font-weight:700}.cell-editor{width:100%;font:inherit;border:1px solid var(--accent);border-radius:3px;padding:0 2px;background:var(--bg);color:var(--fg)}.menu{position:fixed;z-index:100;min-width:200px;background:var(--bg);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #00000040;padding:4px}.menu button{display:block;width:100%;text-align:left;font:inherit;background:none;border:none;border-radius:5px;padding:6px 10px;cursor:pointer;color:var(--fg)}.menu button:hover:not(:disabled){background:var(--surface)}.menu button:disabled{color:var(--muted);cursor:default}.menu button.danger{color:var(--danger)}.menu hr{border:none;border-top:1px solid var(--border);margin:4px 2px}.popover{position:fixed;z-index:90;max-width:420px;max-height:320px;overflow:auto;background:var(--bg);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #00000040;padding:10px}.popover table{border-collapse:collapse;width:100%;font-size:.9em}.popover td,.popover th{padding:2px 8px;border-bottom:1px solid var(--border);text-align:left}.popover td.num{text-align:right}.calendar{width:238px}.calendar .cal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.calendar table{width:100%;border-collapse:collapse}.calendar th{font-size:.75em;color:var(--muted);font-weight:500;padding:2px}.calendar td{padding:1px;border:none}.calendar td button{width:100%;font:inherit;border:none;background:none;border-radius:5px;padding:3px 0;cursor:pointer;color:var(--fg)}.calendar td button:hover:not(:disabled){background:var(--accent);color:#fff}.calendar td button:disabled{color:var(--muted);opacity:.4;cursor:default}.conflict-bar{background:#fde2e1;color:var(--danger);padding:6px 14px;display:flex;gap:12px;align-items:center}@media(prefers-color-scheme:dark){.conflict-bar{background:#4a1512;color:#ffbab6}}
