:root{--bg: #eef2ef;--bg-accent: #e2ebe4;--surface: #f7faf8;--ink: #1a2e24;--muted: #5c7266;--line: #c5d4cb;--teal: #1f6b4f;--teal-soft: #d5ebe1;--warn: #9a4a1a;--warn-soft: #f3e2d4;--good: #1f6b4f;--good-soft: #d5ebe1;--mono: "IBM Plex Mono", ui-monospace, monospace;--sans: "DM Sans", system-ui, sans-serif;color:var(--ink);background:radial-gradient(ellipse 80% 50% at 10% -10%,#d8e8de 0%,transparent 55%),radial-gradient(ellipse 60% 40% at 100% 0%,#dce6e0 0%,transparent 50%),var(--bg);font-family:var(--sans);line-height:1.4}*{box-sizing:border-box}body{margin:0;min-height:100vh}#root{min-height:100vh}button,input,select{font:inherit}.app{max-width:1100px;margin:0 auto;padding:1.5rem 1.25rem 3rem}.topbar{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1.5rem;animation:rise .45s ease-out}.brand{display:grid;gap:.2rem}.brand h1{margin:0;font-size:clamp(1.75rem,3vw,2.25rem);font-weight:700;letter-spacing:-.03em;color:var(--teal)}.brand p{margin:0;color:var(--muted);font-size:.95rem}.controls{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}select,.field input{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:.45rem .6rem;color:var(--ink)}button.primary,button.ghost{border-radius:6px;padding:.5rem .85rem;cursor:pointer;transition:transform .15s ease,background .15s ease}button.primary{background:var(--teal);color:#f4faf7;border:none;font-weight:600}button.primary:hover{transform:translateY(-1px);background:#185a42}button.ghost{background:transparent;border:1px solid var(--line);color:var(--ink)}button.ghost:hover{background:var(--bg-accent)}.panel{background:color-mix(in srgb,var(--surface) 92%,white);border:1px solid var(--line);border-radius:10px;padding:1rem 1.1rem;margin-bottom:1rem;animation:rise .5s ease-out}.panel h2{margin:0 0 .75rem;font-size:.85rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600}.settings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem}.field{display:grid;gap:.25rem}.field label{font-size:.8rem;color:var(--muted)}.table-wrap{overflow-x:auto}table.months{width:100%;border-collapse:collapse;font-size:.92rem}table.months th,table.months td{padding:.55rem .45rem;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}table.months th:first-child,table.months td:first-child{text-align:left}table.months th{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:600}table.months input{width:5.5rem;text-align:right;font-family:var(--mono);font-size:.9rem;background:var(--surface);border:1px solid var(--line);border-radius:5px;padding:.35rem .4rem}table.months input:focus{outline:2px solid color-mix(in srgb,var(--teal) 35%,transparent);border-color:var(--teal)}table.months .readonly{font-family:var(--mono);color:var(--muted)}.rollup-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem}.stat{padding:.75rem .85rem;border-radius:8px;background:var(--bg-accent);border:1px solid transparent;transition:border-color .2s ease}.stat .label{display:block;font-size:.75rem;color:var(--muted);margin-bottom:.25rem}.stat .value{font-family:var(--mono);font-size:1.15rem;font-weight:500}.stat.good{background:var(--good-soft);border-color:color-mix(in srgb,var(--good) 25%,transparent)}.stat.warn{background:var(--warn-soft);border-color:color-mix(in srgb,var(--warn) 30%,transparent)}.banner{margin-top:.75rem;font-size:.9rem;color:var(--muted)}.banner strong{color:var(--ink);font-weight:600}.error{color:var(--warn);background:var(--warn-soft);padding:.75rem 1rem;border-radius:8px;margin-bottom:1rem}.empty{text-align:center;padding:2.5rem 1rem;color:var(--muted)}.empty button{margin-top:1rem}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media(max-width:700px){.app{padding:1rem .75rem 2rem}table.months input{width:4.5rem}}
