:root{--bg: #f5f6f8;--surface: #ffffff;--text: #1d2330;--muted: #6b7280;--border: #d9dde3;--primary: #1f5fbf;--primary-hover: #194f9f;--danger: #b42318;--danger-bg: #fdecea;--ok: #157f3b;--ok-bg: #e7f6ec;--warn: #8a5a00;--warn-bg: #fff4d6;--info-bg: #e8f0fb;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;color:var(--text)}*{box-sizing:border-box}body{margin:0;background:var(--bg)}h1{font-size:1.4rem;margin:0 0 1rem}h2{font-size:1.1rem;margin:0 0 .75rem}h3{font-size:1rem;margin:0}.topbar{display:flex;align-items:center;gap:1.5rem;padding:.6rem 1.25rem;background:var(--surface);border-bottom:1px solid var(--border)}.topbar nav{display:flex;gap:.25rem;flex:1}.topbar nav a{padding:.4rem .75rem;border-radius:6px;color:var(--text);text-decoration:none}.topbar nav a:hover{background:var(--bg)}.topbar nav a.active{background:var(--info-bg);color:var(--primary);font-weight:600}.brand{font-size:1.05rem}.content{padding:1.25rem;max-width:1500px;margin:0 auto}.card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:1rem;margin-bottom:1rem}.toolbar{display:flex;flex-wrap:wrap;align-items:end;gap:.75rem;margin-bottom:1rem}.toolbar .spacer{flex:1}.field{display:flex;flex-direction:column;gap:.25rem}.field>span{font-size:.8rem;color:var(--muted)}.grid-form{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.75rem;margin-bottom:.75rem}.grid-form .wide{grid-column:1 / -1}.check{flex-direction:row;align-items:center;gap:.4rem}input,select,textarea,button{font:inherit}input,select,textarea{padding:.4rem .5rem;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--text)}input:focus,select:focus,textarea:focus{outline:2px solid var(--primary);outline-offset:-1px}input:disabled,textarea:disabled,select:disabled{background:var(--bg);color:var(--muted)}textarea{resize:vertical;width:100%}button{padding:.45rem .9rem;border-radius:6px;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer}button:hover:not(:disabled){background:var(--bg)}button:disabled{opacity:.55;cursor:not-allowed}button.primary{background:var(--primary);border-color:var(--primary);color:#fff}button.primary:hover:not(:disabled){background:var(--primary-hover)}button.warn{background:#d97706;border-color:#d97706;color:#fff;font-weight:700}button.warn:hover:not(:disabled){background:#b45309}button.small{padding:.2rem .5rem;font-size:.85rem}button.link{border:none;background:none;color:var(--primary);padding:.2rem .4rem}table{width:100%;border-collapse:collapse;background:var(--surface)}th,td{text-align:left;padding:.5rem;border-bottom:1px solid var(--border);vertical-align:top}th{font-size:.8rem;color:var(--muted);font-weight:600;background:#fafbfc;position:sticky;top:0}td.num,th.num{text-align:right;white-space:nowrap}tr.disabled td{color:var(--muted)}.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:8px}.sub{display:block;font-size:.8rem;color:var(--muted)}.nowrap{white-space:nowrap}.cell-input{width:100%;min-width:7rem}.cell-input.amount{text-align:right;min-width:8rem}.cell-text{min-width:18rem;min-height:3.2rem}.saving{outline:2px dashed var(--muted)}.field-error{border-color:var(--danger)}.badge{display:inline-block;padding:.1rem .5rem;border-radius:999px;font-size:.75rem;font-weight:600;background:var(--bg);border:1px solid var(--border);white-space:nowrap}.badge.ok{background:var(--ok-bg);color:var(--ok);border-color:transparent}.badge.err{background:var(--danger-bg);color:var(--danger);border-color:transparent}.badge.warn{background:var(--warn-bg);color:var(--warn);border-color:transparent}.badge.info{background:var(--info-bg);color:var(--primary);border-color:transparent}.alert{padding:.6rem .8rem;border-radius:6px;margin-bottom:1rem}.alert.err{background:var(--danger-bg);color:var(--danger)}.alert.ok{background:var(--ok-bg);color:var(--ok)}.alert.warn{background:var(--warn-bg);color:var(--warn)}.alert ul,.result ul{margin:.25rem 0 0;padding-left:1.1rem}.result{font-size:.85rem}.result.ok{color:var(--ok)}.result.err{color:var(--danger)}.result.warn{color:var(--warn)}.muted{color:var(--muted)}.mono{font-family:ui-monospace,Consolas,monospace}.modal-backdrop{position:fixed;inset:0;background:#0f172a73;display:flex;align-items:center;justify-content:center;z-index:10}.modal{background:var(--surface);border-radius:10px;padding:1.25rem;width:min(480px,calc(100vw - 32px));box-shadow:0 10px 30px #0003}.modal .actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1rem}.totals{width:100%;margin:.5rem 0}.totals td{padding:.25rem}.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}.login form{width:min(360px,100%)}.login input{width:100%}.row-actions{display:flex;gap:.4rem;flex-wrap:wrap}
