:root{--bg: #eef1ea;--surface: #ffffff;--ink: #1b2a1f;--muted: #5f6d62;--line: #d8e0d3;--leaf: #1f7a4a;--leaf-ink: #fff;--tama: #c4621b;--soft: #e4eddf;--ok: #1f7a4a;--warn: #b7791f;--bad: #b4342c;--side: #e3e8e0;--display: "Bricolage Grotesque", ui-rounded, system-ui, sans-serif;--body: "Figtree", system-ui, -apple-system, "Segoe UI", sans-serif;color-scheme:light}@media (prefers-color-scheme: dark){:root{--bg: #0f1511;--surface: #18211b;--ink: #e6eee7;--muted: #9aae9f;--line: #2a372e;--leaf: #4fbf83;--leaf-ink: #0c1a11;--tama: #e8924f;--soft: #1f2e25;--ok: #4fbf83;--warn: #e2b053;--bad: #ef7a70;--side: #141c16;color-scheme:dark}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--body);font-size:14px;line-height:1.4}h1,h2,h3{font-family:var(--display);margin:0;letter-spacing:-.01em;text-wrap:balance}h1{font-size:26px}h2{font-size:21px}h3{font-size:16px}a{color:var(--leaf)}button,input,select,textarea{font:inherit;color:inherit}button{font-weight:600;border-radius:10px;border:1px solid var(--line);background:var(--surface);padding:9px 14px;cursor:pointer}button.pri{background:var(--leaf);color:var(--leaf-ink);border-color:var(--leaf)}button.danger{color:var(--bad);border-color:var(--bad);background:transparent}button.ghost{background:transparent;border-color:transparent}button:disabled{opacity:.45;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--leaf);outline-offset:1px}input,select,textarea{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:8px 10px;width:100%}label.f{display:flex;flex-direction:column;gap:4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}label.chk{display:flex;gap:8px;align-items:center;font-size:14px}label.chk input{width:auto}.shell{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:100%}.side{background:var(--side);border-right:1px solid var(--line);padding:16px 10px;display:flex;flex-direction:column;gap:2px;position:sticky;top:0;height:100vh;overflow-y:auto}.brand{font-family:var(--display);font-weight:800;font-size:20px;padding:4px 10px 12px}.brand span{color:var(--tama)}.side a{text-decoration:none;color:var(--muted);font-weight:600;padding:8px 10px;border-radius:8px;display:block}.side a.active{background:var(--surface);color:var(--ink)}.side .grp{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);padding:12px 10px 4px}.side .foot{margin-top:auto;padding:10px;font-size:12px;color:var(--muted);display:flex;flex-direction:column;gap:6px}.main{padding-block:22px 60px;padding-left:max(20px,env(safe-area-inset-left,0px));padding-right:max(20px,env(safe-area-inset-right,0px));display:flex;flex-direction:column;gap:16px;min-width:0;max-width:1240px}@media (max-width: 820px){.shell{grid-template-columns:minmax(0,1fr)}.side{position:static;height:auto;flex-direction:row;overflow-x:auto;align-items:center;padding:8px}.side .grp,.side .foot{display:none}.brand{padding:0 8px;font-size:16px;white-space:nowrap}.side a{white-space:nowrap}}.head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap}.sub{color:var(--muted);font-size:13px}.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:12px;min-width:0}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px}.kpi{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px}.kpi span{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.kpi b{display:block;font-family:var(--display);font-size:24px;font-variant-numeric:tabular-nums}.tbl{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:var(--surface)}table{border-collapse:collapse;width:100%;font-size:13px}th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap;background:var(--surface);position:sticky;top:0}td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:middle;font-variant-numeric:tabular-nums}tr:last-child td{border-bottom:0}tr.click{cursor:pointer}tr.click:hover td{background:var(--soft)}td input.cell{width:90px;padding:5px 7px}.pill{font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;white-space:nowrap;display:inline-block}.p-ok{background:color-mix(in srgb,var(--ok) 18%,transparent);color:var(--ok)}.p-warn{background:color-mix(in srgb,var(--warn) 20%,transparent);color:var(--warn)}.p-bad{background:color-mix(in srgb,var(--bad) 16%,transparent);color:var(--bad)}.p-mut{background:color-mix(in srgb,var(--muted) 16%,transparent);color:var(--muted)}.empty{color:var(--muted);text-align:center;padding:28px;border:1px dashed var(--line);border-radius:12px}.msg{border-radius:10px;padding:10px 12px;font-weight:600;font-size:13px}.msg.err{background:color-mix(in srgb,var(--bad) 14%,transparent);color:var(--bad)}.msg.ok{background:color-mix(in srgb,var(--ok) 15%,transparent);color:var(--ok)}.chips{display:flex;gap:6px;flex-wrap:wrap}.chip{padding:5px 10px;border-radius:999px;font-size:12px;border:1px solid var(--line);background:var(--surface);font-weight:600}.chip.on{background:var(--leaf);color:var(--leaf-ink);border-color:var(--leaf)}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a140c73;display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;overflow-y:auto;z-index:20}.modal{background:var(--surface);border-radius:16px;width:100%;max-width:640px;padding:20px;display:flex;flex-direction:column;gap:14px}.thumb{width:40px;height:40px;object-fit:cover;border-radius:8px;background:var(--soft);display:block}.auth{min-height:100%;display:grid;place-items:center;padding:20px}.auth .card{width:100%;max-width:400px}.num{font-variant-numeric:tabular-nums}
