:root{--paper: #f2f0e9;--paper-raised: #fbfaf6;--paper-sunken: #e8e5db;--ink: #1b1f1c;--ink-soft: #5c6159;--ink-faint: #8c9088;--rule: #d7d2c4;--rule-strong: #b3ad9b;--accent: #2c5340;--accent-soft: #e2eae4;--deficit: #9e3b2e;--excess: #a8761a;--within: #2c5340;--font-text: "PT Sans", "Segoe UI", system-ui, sans-serif;--font-num: "PT Mono", "Cascadia Mono", Consolas, "Courier New", monospace;--row: 30px;--radius: 2px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-text);font-size:14px;color:var(--ink);background-color:var(--paper);background-image:repeating-linear-gradient(to right,rgba(140,144,136,.07) 0 1px,transparent 1px 24px),repeating-linear-gradient(to bottom,rgba(140,144,136,.07) 0 1px,transparent 1px 24px)}.app{display:flex;flex-direction:column;height:100%}.masthead{display:flex;align-items:baseline;gap:18px;padding:10px 20px;background:var(--ink);color:var(--paper);border-bottom:3px double var(--rule-strong)}.masthead__title{margin:0;font-size:17px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}.masthead__subtitle{font-size:12px;color:var(--ink-faint);letter-spacing:.05em}.masthead__nav{display:flex;gap:4px;margin-left:auto}.tab{padding:6px 16px;font-family:var(--font-text);font-size:13px;letter-spacing:.04em;color:var(--paper);background:transparent;border:1px solid transparent;border-radius:var(--radius);cursor:pointer;transition:background-color .15s ease,border-color .15s ease}.tab:hover{background:#f2f0e91f}.tab[aria-current=true]{background:var(--paper);color:var(--ink);font-weight:700}.screen{flex:1;min-height:0;padding:16px 20px 24px;overflow:auto}.controls{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end;padding:12px 14px;margin-bottom:14px;background:var(--paper-raised);border:1px solid var(--rule);border-left:3px solid var(--accent)}.field{display:flex;flex-direction:column;gap:4px;min-width:0}.field__label{font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-soft)}.field select,.field input{font-family:var(--font-text);font-size:14px;color:var(--ink);padding:5px 8px;background:var(--paper-raised);border:1px solid var(--rule-strong);border-radius:var(--radius)}.field select:focus,.field input:focus,.cell-input:focus{outline:2px solid var(--accent);outline-offset:-1px}.field--wide select{min-width:340px}.button{padding:6px 14px;font-family:var(--font-text);font-size:13px;color:var(--paper-raised);background:var(--accent);border:1px solid var(--accent);border-radius:var(--radius);cursor:pointer;transition:filter .15s ease}.button:hover:not(:disabled){filter:brightness(1.18)}.button:disabled{opacity:.45;cursor:not-allowed}.button--quiet{color:var(--ink);background:var(--paper-raised);border-color:var(--rule-strong)}.button--danger{color:var(--deficit);background:var(--paper-raised);border-color:var(--deficit)}.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:10px}.toolbar__spacer{flex:1}.panel{background:var(--paper-raised);border:1px solid var(--rule)}.panel__head{display:flex;align-items:baseline;gap:10px;padding:7px 12px;background:var(--paper-sunken);border-bottom:1px solid var(--rule)}.panel__title{margin:0;font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.panel__note{font-size:12px;color:var(--ink-soft)}.sheet{width:100%;border-collapse:collapse;font-size:13px}.sheet th{position:sticky;top:0;z-index:1;padding:6px 10px;font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-soft);text-align:left;background:var(--paper-sunken);border-bottom:1px solid var(--rule-strong);white-space:nowrap}.sheet td{height:var(--row);padding:3px 10px;border-bottom:1px solid var(--rule)}.sheet tbody tr:nth-child(2n){background:#d8d3c329}.sheet tbody tr:hover{background:var(--accent-soft)}.num{font-family:var(--font-num);font-size:13px;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.num--muted{color:var(--ink-faint)}.cell-input{width:100%;padding:3px 6px;font-family:var(--font-num);font-size:13px;text-align:right;color:var(--ink);background:var(--paper);border:1px solid var(--rule-strong);border-radius:var(--radius)}.cell-input--text{font-family:var(--font-text);text-align:left}.deviation{display:flex;align-items:center;gap:8px}.gauge{position:relative;flex:1;min-width:60px;height:8px;background:var(--paper-sunken);border:1px solid var(--rule)}.gauge:after{content:"";position:absolute;top:-2px;bottom:-2px;left:50%;width:1px;background:var(--rule-strong)}.gauge__fill{position:absolute;top:0;bottom:0;transition:left .25s ease,width .25s ease,background-color .25s ease}.value--deficit{color:var(--deficit)}.value--excess{color:var(--excess)}.value--within{color:var(--within)}.badge{display:inline-block;padding:1px 6px;font-size:11px;letter-spacing:.05em;color:var(--excess);border:1px solid var(--excess);border-radius:var(--radius)}.split{display:grid;grid-template-columns:1.55fr 1fr;gap:14px;align-items:start;margin-top:14px}@media (max-width: 1100px){.split{grid-template-columns:1fr}.field--wide select{min-width:0}}.empty{padding:22px 14px;font-size:13px;color:var(--ink-soft);text-align:center}.warnings{margin:10px 0 0;padding:8px 12px;font-size:12px;color:var(--excess);background:var(--paper-raised);border:1px dashed var(--excess)}.warnings ul{margin:4px 0 0;padding-left:18px}
