:root{color-scheme:light;--paper: #f3efe6;--paper-deep: #e7e1d6;--card: #fbf8f3;--ink: #1c1915;--muted: #6d655c;--line: #ddd4c6;--pine: #1f4d3a;--pine-deep: #16382b;--moss: #2f6f52;--copper: #8d4632;--gold: #8a6a32;--ok: #1d6b45;--bad: #8d4632;--shadow: 0 16px 40px rgba(48, 36, 22, .08);font-family:IBM Plex Sans,Segoe UI,sans-serif;color:var(--ink);background:var(--paper)}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;background:radial-gradient(circle at top left,rgba(31,77,58,.08),transparent 28rem),var(--paper)}button,input,select{font:inherit;color:inherit}button{cursor:pointer}a{color:inherit}.app{min-height:100vh}.topbar{display:flex;align-items:center;gap:1.5rem;padding:.9rem 1.5rem;background:var(--pine);color:#f6f1e8}.brand{display:flex;flex-direction:column;min-width:9rem;text-decoration:none}.brand strong{font-family:"Source Serif 4",Georgia,serif;font-size:1.25rem;font-weight:650;letter-spacing:-.02em}.brand span{color:#d5c7b2;font-size:.78rem}.nav{display:flex;gap:.35rem;flex:1}.nav a{text-decoration:none;padding:.45rem .75rem;border-radius:999px;color:#efe6d8}.nav a.active,.nav a:hover{background:#ffffff1f}.userbox{display:flex;align-items:center;gap:.75rem;font-size:.92rem}.userbox span{max-width:16rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page{width:min(1120px,calc(100% - 2rem));margin:1.5rem auto 3rem}.page-head{display:flex;justify-content:space-between;gap:1rem;align-items:flex-end;margin-bottom:1.25rem}.page-head h1,.login h1{font-family:"Source Serif 4",Georgia,serif;font-weight:650;letter-spacing:-.03em;margin:0 0 .35rem;font-size:clamp(2rem,4vw,2.8rem)}.lede{margin:0;color:var(--muted);max-width:42rem}.grid-2{display:grid;grid-template-columns:1.1fr .9fr;gap:1rem}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem;margin-bottom:1rem}.card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:1rem 1.1rem 1.15rem;box-shadow:var(--shadow)}.stat-label,.field span{display:block;color:var(--muted);font-size:.78rem;letter-spacing:.04em;text-transform:uppercase}.stat-value{display:block;margin-top:.35rem;font-variant-numeric:tabular-nums;font-size:1.35rem;font-weight:600}.positive{color:var(--ok)}.negative{color:var(--bad)}.muted{color:var(--muted)}.row-actions,.inline-actions{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.btn{border:1px solid transparent;background:var(--paper-deep);border-radius:999px;padding:.55rem .9rem;font-weight:600}.btn.primary{background:var(--pine);color:#f6f1e8}.btn.primary:hover{background:var(--pine-deep)}.btn.ghost{background:transparent;border-color:currentColor}.btn.danger{background:transparent;color:var(--bad);border-color:#e4c6bc}.btn:disabled{opacity:.55;cursor:not-allowed}.topbar .btn.ghost{color:#f6f1e8;border-color:#f6f1e859}.fields{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem}.fields.two{grid-template-columns:1fr 1fr}h2{font-family:"Source Serif 4",Georgia,serif;font-size:1.45rem;margin:0 0 .4rem}.chart .soll-label{fill:#8a6a32}.chart .ist-label{fill:#1f4d3a}.field{display:flex;flex-direction:column;gap:.35rem}.field input,.field select{width:100%;border:1px solid var(--line);background:#fff;border-radius:12px;padding:.65rem .75rem;font-variant-numeric:tabular-nums}.field input:focus,.field select:focus{outline:2px solid rgba(31,77,58,.35);border-color:var(--pine)}.hint{margin:.35rem 0 0;color:var(--muted);font-size:.88rem}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}.table th{color:var(--muted);font-size:.78rem;letter-spacing:.04em;text-transform:uppercase;font-weight:500;text-align:left;white-space:nowrap;padding:.45rem .5rem}.table thead th{border-bottom:1px solid var(--line);vertical-align:bottom}.table td{padding:.35rem .5rem;border-top:1px solid var(--line);vertical-align:middle;font-variant-numeric:tabular-nums}.table th.num,.table td.num{text-align:right}.table tr.current{background:#1f4d3a0f}.table input{width:9.5rem;text-align:right;border:1px solid var(--line);background:#fff;border-radius:8px;padding:.4rem .45rem}.table input:hover,.table input:focus{border-color:var(--pine);outline:none}.table input.adjusted{border-color:var(--gold);background:#fbf6ec}.table input::placeholder{color:var(--muted);font-weight:400}.num{text-align:right}.segment{display:inline-flex;padding:.2rem;border-radius:999px;background:var(--paper-deep)}.segment button{border:0;background:transparent;border-radius:999px;padding:.4rem .75rem}.segment button.active{background:var(--card);box-shadow:0 1px 2px #0000000f}.badge{display:inline-flex;align-items:center;border-radius:999px;padding:.2rem .6rem;font-size:.82rem;font-weight:600}.badge.ok{background:#e5f3eb;color:var(--ok)}.badge.bad{background:#f8ebe6;color:var(--bad)}.violations{margin:.6rem 0 0;padding-left:1.1rem;color:var(--bad)}.figure-list{display:grid;grid-template-columns:1fr auto;gap:.35rem 1rem;margin:.8rem 0 0}.figure-list dt{color:var(--muted)}.figure-list dd{margin:0;text-align:right;font-variant-numeric:tabular-nums;font-weight:600}.rate-grid{display:flex;flex-wrap:wrap;gap:.5rem}.rate-chip{min-width:5.5rem;border:1px solid var(--line);background:#fff;border-radius:14px;padding:.55rem .7rem;text-align:left}.rate-chip.active{border-color:var(--pine);background:#f3f8f5}.rate-chip small,.rate-chip span{display:block;color:var(--muted);font-size:.75rem}.rate-chip strong{font-variant-numeric:tabular-nums}.offer-list{max-height:22rem;overflow:auto;margin-top:.8rem}.notice,.error-box{border-radius:14px;padding:.75rem .9rem;margin:.8rem 0 0}.notice{background:#f6f1e4;color:#5c4b32}.error-box{background:#f8ebe6;color:var(--bad)}.chart{width:100%;height:auto}.chart text{fill:var(--muted);font-size:11px}.login-screen{min-height:100vh;display:grid;place-items:center;padding:1.5rem}.login{width:min(28rem,100%);text-align:left}.mark{width:3rem;height:3rem;border-radius:14px;background:var(--pine);margin-bottom:1rem}.google{width:100%;display:flex;justify-content:center;align-items:center;gap:.7rem;margin-top:1.25rem}.splash{min-height:100vh;display:grid;place-items:center;color:var(--muted)}@media(max-width:900px){.topbar{flex-wrap:wrap}.stats,.grid-2,.fields{grid-template-columns:1fr}.userbox{width:100%;justify-content:space-between}}
