:root{--ink: #1d1d1b;--ink-soft: #5e5e56;--rule: #e5e4de;--accent: #2c6e49;--neg: #a62a2a;--warn: #8a5712;--review: #35617d;--table-font-size: .72rem}*{box-sizing:border-box}body{margin:0;font-family:system-ui,sans-serif;color:var(--ink);background:#faf9f5}.app-header{display:flex;align-items:center;gap:1rem;padding:.75rem 1.5rem;border-bottom:2px solid var(--ink)}.brand{font-weight:700;font-size:1.2rem}.spacer{flex:1}.user-email{color:var(--ink-soft);font-size:.85rem}.font-size-toggle{display:flex;gap:.15rem;margin-right:.5rem}.font-size-toggle button{width:1.8rem;height:1.8rem;border:1px solid var(--rule);border-radius:4px;background:#fff;color:var(--ink-soft);cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1}.font-size-toggle button.active{border-color:var(--ink);color:var(--ink);background:var(--rule);font-weight:700}main{padding:1.5rem;padding-right:calc(1.5rem + var(--chat-panel-width, 0px));box-sizing:border-box}.report-switcher{display:flex;flex-wrap:wrap;gap:.25rem;padding:.5rem 1.5rem;background:var(--rule)}.report-switcher button{padding:.4rem .8rem;border:none;border-radius:4px;background:transparent;font-size:.85rem;cursor:pointer;color:var(--ink-soft)}.report-switcher button.active{background:var(--surface, #fff);color:var(--ink);font-weight:600}.report-switcher button:disabled{cursor:not-allowed;opacity:.5}.login-page{max-width:360px;margin:4rem auto;padding:2rem;border:1px solid var(--rule);border-radius:8px}.login-page form{display:flex;flex-direction:column;gap:1rem}.login-page label{display:flex;flex-direction:column;gap:.35rem;font-size:.85rem}.login-page input{width:100%;padding:.5rem;border:1px solid var(--rule);border-radius:4px}.password-field{position:relative;display:flex}.password-field input{flex:1;padding-right:2.2rem}.password-field .toggle-visibility{position:absolute;right:.3rem;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;padding:.2rem;color:var(--ink-soft);display:flex;align-items:center}.password-field .toggle-visibility:hover{color:var(--ink)}.login-page .error{color:var(--neg);font-size:.85rem}.login-page .password-policy{font-size:.78rem;color:var(--ink-soft);margin-top:-.5rem}.login-page code{display:inline-block;max-width:100%;overflow-wrap:break-word;word-break:break-all;white-space:pre-wrap;font-size:.85rem}.login-page img{max-width:100%;height:auto}.login-logo{display:block;margin:0 auto 1.5rem;max-width:180px;height:auto}.empty-state{padding:3rem;text-align:center;color:var(--ink-soft)}.empty-state .hint{font-size:.85rem}.controls{margin-bottom:1rem;display:flex;align-items:flex-end;gap:1rem}.controls label{display:flex;flex-direction:column;gap:.3rem;font-size:.8rem;width:220px}.export-menu{position:relative}.export-menu>button{padding:.45rem .8rem;border:1px solid var(--rule);border-radius:4px;background:#fff;color:var(--ink);font-size:.8rem;cursor:pointer}.export-menu>button:disabled{cursor:not-allowed;opacity:.6}.export-menu-dropdown{position:absolute;top:calc(100% + .25rem);left:0;z-index:10;display:flex;flex-direction:column;min-width:160px;border:1px solid var(--rule);border-radius:4px;background:#fff;box-shadow:0 2px 8px #0000001f;overflow:hidden}.export-menu-dropdown button{padding:.5rem .8rem;border:none;background:#fff;text-align:left;font-size:.8rem;cursor:pointer;color:var(--ink)}.export-menu-dropdown button:hover:not(:disabled){background:var(--rule)}.export-menu-dropdown button:disabled{color:var(--ink-soft);cursor:not-allowed}.export-menu-error{margin-left:.5rem;color:var(--neg);font-size:.8rem}.export-menu-info{margin-left:.5rem;color:var(--review);font-size:.8rem}.upload-form{display:flex;align-items:flex-end;gap:1rem;padding:1rem;margin-bottom:1.5rem;border:1px solid var(--rule);border-radius:8px;background:#f8f7f2}.upload-form label{display:flex;flex-direction:column;gap:.3rem;font-size:.8rem}.upload-form input[type=text],.upload-form input:not([type=file]){padding:.4rem;border:1px solid var(--rule);border-radius:4px;width:100px}.upload-form .error{color:var(--neg);font-size:.85rem;margin:0}.upload-queue{flex-basis:100%;margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.3rem;max-height:180px;overflow-y:auto}.upload-queue li{display:flex;justify-content:space-between;gap:.75rem;padding:.3rem .5rem;border:1px solid var(--rule);border-radius:4px;background:#fff;font-size:.78rem}.upload-queue-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-queue-status{color:var(--ink-soft);white-space:nowrap}.upload-queue-status button{border:none;background:none;cursor:pointer;color:var(--ink-soft);font-size:.9rem;line-height:1;padding:0 .2rem}.upload-queue-succeeded .upload-queue-status{color:var(--accent)}.upload-queue-failed .upload-queue-status{color:var(--neg)}.upload-queue-uploading .upload-queue-status{font-style:italic}.as-of{color:var(--ink-soft);font-size:.85rem}.table-wrap{overflow-x:auto}table.bva-table{border-collapse:collapse;font-size:var(--table-font-size);line-height:1.2}table.bva-table th,table.bva-table td{padding:.18rem .4rem;border-bottom:1px solid var(--rule);text-align:right;white-space:nowrap}table.bva-table th:nth-child(1),table.bva-table th:nth-child(2),table.bva-table td.acct,table.bva-table td.name{text-align:left}table.bva-table tr.fund-header td{background:#f3f2ec;font-weight:600;text-align:left}table.bva-table tr.obj-header td{background:#fbfaf7;font-weight:500;text-align:left;color:var(--ink-soft);font-size:.66rem;padding-left:1rem}table.bva-table tr.sub td,table.bva-table tr.objsub td{background:#f8f7f2;font-weight:600}table.bva-table tr.objsub td.name{padding-left:1rem;font-weight:500}table.bva-table tr.grand td{background:var(--ink);color:#fff;font-weight:700}table.bva-table td.muted{color:var(--ink-soft)}table.bva-table td.neg{color:var(--neg)}.cnt{color:var(--ink-soft);font-weight:400;font-size:.66rem}table.bva-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}table.bva-table th.sortable:hover{background:var(--rule)}table.bva-table th .sort-indicator{font-size:.7em;display:inline-block;width:.8em}table.bva-table td.proj,table.bva-table th.proj{font-style:italic;color:var(--ink-soft)}table.bva-table th.proj{background:#f8f7f2}.s-over{color:var(--neg)}.s-review{color:var(--review)}.s-near{color:var(--warn)}.muted{color:var(--ink-soft)}.recent-issues{margin:1rem 0;padding:.9rem 1.1rem;border:1px solid var(--rule);border-left:3px solid var(--neg);border-radius:6px;background:#fdf7f6}.recent-issues h3{margin:0 0 .5rem;font-size:.9rem}.recent-issues ul{margin:0;padding-left:1.1rem}.recent-issues li{margin-bottom:.6rem;font-size:.85rem}.issue-error{color:var(--ink-soft);font-size:.8rem;margin-top:.1rem}.status-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem;margin-top:1rem}.status-block{padding:.9rem 1.1rem;border:1px solid var(--rule);border-radius:6px;background:#fff}.status-block h3{margin:0 0 .6rem;font-size:.9rem}.status-block p{margin:0;font-size:.85rem}.month-chips{display:flex;flex-wrap:wrap;gap:.35rem}.chip{display:inline-block;padding:.2rem .55rem;border-radius:999px;font-size:.75rem;font-weight:600}.chip-uploaded{background:#e8f1ec;color:var(--accent)}.chip-open{background:#fbeee0;color:var(--warn)}.s-ok{color:var(--accent)}.strip4,.strip2{display:grid;gap:1rem;margin:1rem 0}.strip4{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}.strip2{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.stat-tile{padding:.9rem 1rem;border:1px solid var(--rule);border-radius:6px;background:#fff}.stat-tile .n{font-size:1.3rem;font-weight:700;font-family:var(--font-mono, monospace)}.stat-tile .l{font-size:.78rem;color:var(--ink-soft);margin-top:.2rem}.stat-tile .sub{font-size:.72rem;color:var(--ink-soft);margin-top:.15rem}.stat-tile.pos .n{color:var(--accent)}.stat-tile.neg .n{color:var(--neg)}.stat-tile.warn .n{color:var(--warn)}.stat-tile.rev .n{color:var(--review)}.stat-hero{margin:.5rem 0 1.5rem;padding:1.2rem 1.5rem;border:1px solid var(--rule);border-radius:8px;background:#f8f7f2;display:flex;flex-direction:column;align-items:flex-start;gap:.15rem}.stat-hero .n{font-size:2rem;font-weight:700;font-family:var(--font-mono, monospace);color:var(--ink)}.stat-hero .l{font-size:.85rem;color:var(--ink-soft)}.stat-hero .sub{font-size:.78rem;color:var(--ink-soft)}.chart-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:1rem;margin-bottom:1rem}.chart-card{padding:1rem 1.1rem;border:1px solid var(--rule);border-radius:6px;background:#fff}.chart-card h3{margin:0 0 .6rem;font-size:.9rem}.chart-wrap{position:relative}.chart-tooltip{position:absolute;transform:translate(-50%,-100%);pointer-events:none;background:var(--ink);color:#fff;padding:.4rem .6rem;border-radius:4px;font-size:.75rem;white-space:nowrap;z-index:5}.legend{display:flex;flex-wrap:wrap;gap:.9rem;margin-top:.6rem;font-size:.78rem;color:var(--ink-soft)}.legend .sw{display:inline-block;width:.7rem;height:.7rem;border-radius:2px;margin-right:.3rem;vertical-align:-1px}.notable-items{margin-top:1rem;padding:1rem 1.2rem;border:1px solid var(--rule);border-radius:6px;background:#fff}.notable-items h3{margin:0 0 .6rem;font-size:.9rem}.notable-items dl{margin:0}.notable-items dt{font-weight:600;font-size:.82rem;margin-top:.5rem}.notable-items dd{margin:.15rem 0 0;font-size:.85rem;color:var(--ink-soft)}.chat-widget{position:relative;display:inline-block}.chat-widget>button{padding:.45rem .8rem;border:1px solid var(--rule);border-radius:4px;background:#fff;color:var(--ink);font-size:.8rem;cursor:pointer}.chat-panel{position:fixed;top:0;right:0;bottom:0;z-index:50;max-width:90vw;display:flex;flex-direction:column;border-left:1px solid var(--rule);background:#fff;box-shadow:-4px 0 16px #00000026}.chat-resize-handle{position:absolute;top:0;left:-3px;bottom:0;width:6px;cursor:ew-resize;touch-action:none;z-index:1}.chat-resize-handle:hover{background:var(--accent);opacity:.4}.chat-panel-header{display:flex;align-items:center;justify-content:space-between;padding:.6rem .75rem;border-bottom:1px solid var(--rule);font-size:.82rem;font-weight:600}.chat-close{border:none;background:none;font-size:1.1rem;line-height:1;cursor:pointer;color:var(--ink-soft);padding:.1rem .4rem}.chat-close:hover{color:var(--ink)}.chat-messages{flex:1;overflow-y:auto;padding:.75rem;display:flex;flex-direction:column;gap:.5rem}.chat-message{padding:.5rem .65rem;border-radius:6px;font-size:.82rem;line-height:1.35;white-space:pre-wrap;max-width:92%}.chat-user{align-self:flex-end;background:var(--ink);color:#fff}.chat-assistant{align-self:flex-start;background:#f3f2ec;color:var(--ink)}.chat-pending{color:var(--ink-soft);font-style:italic}.chat-error{margin:0 .75rem;color:var(--neg);font-size:.78rem}.chat-input-row{display:flex;gap:.4rem;padding:.6rem;border-top:1px solid var(--rule);background:#faf9f5}.chat-input-row textarea{flex:1;resize:none;padding:.4rem;border:1px solid var(--rule);border-radius:4px;font-family:inherit;font-size:.82rem}.chat-input-row button{padding:0 .9rem;border:1px solid var(--rule);border-radius:4px;background:var(--accent);color:#fff;font-size:.82rem;cursor:pointer}.chat-input-row button:disabled{opacity:.5;cursor:not-allowed}.admin-create-user-form{display:flex;flex-direction:column;gap:.75rem;padding:1rem;margin-bottom:1.5rem;border:1px solid var(--rule);border-radius:6px;background:#fff;max-width:420px}.admin-create-user-form label{display:flex;flex-direction:column;gap:.3rem;font-size:.8rem}.admin-create-user-form input[type=email],.admin-create-user-form input[type=text]{padding:.4rem;border:1px solid var(--rule);border-radius:4px}.admin-create-user-form .error{color:var(--neg);font-size:.85rem;margin:0}.admin-create-user-form button[type=submit]{align-self:flex-start;padding:.45rem 1rem;border:1px solid var(--rule);border-radius:4px;background:var(--accent);color:#fff;cursor:pointer}.admin-create-user-form button[type=submit]:disabled{opacity:.5;cursor:not-allowed}.admin-checkbox-row{flex-direction:row;align-items:center;gap:.5rem}.admin-school-picker{border:1px solid var(--rule);border-radius:4px;padding:.6rem .8rem}.admin-school-picker-label{font-size:.78rem;color:var(--ink-soft);display:block;margin-bottom:.4rem}.admin-school-row{display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:.25rem 0}.admin-school-row label{flex-direction:row;align-items:center;gap:.4rem;font-weight:400}.admin-users-table,.admin-activity-table{margin-top:.75rem;margin-bottom:1.5rem;width:100%}
