:root{--paper:#F6F5F0;--card:#FFFFFF;--ink:#1C1F1A;--mute:#6A6E66;--line:#DCD9CE;--line2:#ECEAE2;--green:#1F4D3A;--green-soft:#E3EDE6;--gold:#C9A227;--gold-soft:#F6EFD6;--red:#B23A3A;--red-soft:#F7E3E3;--blue:#2F5F8A;--blue-soft:#E2ECF5;--sidebar:#17352A;--sidebar-ink:#D7E4DB}@media (prefers-color-scheme: dark){:root{--paper:#15181A;--card:#1E2224;--ink:#ECEAE2;--mute:#9BA09A;--line:#343A3C;--line2:#2A2F31;--green:#8CC7A6;--green-soft:#1E3328;--gold:#E0BE4F;--gold-soft:#3A3217;--red:#F08C8C;--red-soft:#3D2222;--blue:#8DB8E0;--blue-soft:#1F2F3E;--sidebar:#101A15;--sidebar-ink:#C4D4C9;color-scheme:dark}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:Segoe UI,system-ui,-apple-system,Roboto,Helvetica Neue,sans-serif;font-size:15px;line-height:1.4;font-variant-numeric:tabular-nums}button,input,select,textarea{font:inherit;color:inherit}h1{font-size:20px;margin:0;font-weight:700}h2{font-size:17px;margin:18px 0 8px;font-weight:600}h3{font-size:15px;margin:14px 0 6px;font-weight:600}.muted{color:var(--mute)}.small{font-size:13px}.right{text-align:right}.bold{font-weight:600}.red{color:var(--red)}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.between{justify-content:space-between}.grow{flex:1 1 auto;min-width:0}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin:10px 0}.card.click{cursor:pointer}.card.click:hover{border-color:var(--green)}.tag{display:inline-block;padding:2px 8px;border-radius:99px;font-size:12px;font-weight:600;background:var(--green-soft);color:var(--green);white-space:nowrap}.tag.red{background:var(--red-soft);color:var(--red)}.tag.gold{background:var(--gold-soft);color:var(--gold)}.tag.blue{background:var(--blue-soft);color:var(--blue)}.btn{border:1px solid var(--line);background:var(--card);border-radius:8px;padding:9px 14px;cursor:pointer;font-weight:500;min-height:40px;white-space:nowrap}.btn.primary{background:var(--green);color:#fff;border-color:var(--green)}.btn.danger{color:var(--red);border-color:var(--red)}.btn.sm{min-height:32px;padding:4px 10px;font-size:13px}.btn.link{border:0;background:none;color:var(--blue);padding:0;min-height:0}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.big{font-size:17px;min-height:52px;padding:12px 22px;margin:8px 0}.mobile .btn.big{width:100%}.btn.wa{background:#25d366;border-color:#25d366;color:#fff;text-decoration:none;display:inline-flex;align-items:center;gap:6px}.btn.wa:before{content:"";width:16px;height:16px;border-radius:50%;background:#fff;display:inline-block;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a10 10 0 0 0-8.6 15.1L2 22l5-1.3A10 10 0 1 0 12 2zm0 18a8 8 0 0 1-4.1-1.1l-.3-.2-3 .8.8-2.9-.2-.3A8 8 0 1 1 12 20zm4.4-6c-.2-.1-1.4-.7-1.7-.8-.2-.1-.4-.1-.5.1l-.8 1c-.1.2-.3.2-.5.1a6.5 6.5 0 0 1-3.2-2.8c-.2-.4.2-.4.7-1.3.1-.2 0-.3 0-.4l-.8-1.8c-.2-.5-.4-.4-.5-.4h-.5a1 1 0 0 0-.7.3 3 3 0 0 0-.9 2.2 5.2 5.2 0 0 0 1.1 2.8 12 12 0 0 0 4.6 4c1.7.7 2 .6 2.4.5a2.6 2.6 0 0 0 1.7-1.2c.2-.6.2-1.1.1-1.2l-.4-.3z'/%3E%3C/svg%3E") center/contain no-repeat;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a10 10 0 0 0-8.6 15.1L2 22l5-1.3A10 10 0 1 0 12 2zm0 18a8 8 0 0 1-4.1-1.1l-.3-.2-3 .8.8-2.9-.2-.3A8 8 0 1 1 12 20zm4.4-6c-.2-.1-1.4-.7-1.7-.8-.2-.1-.4-.1-.5.1l-.8 1c-.1.2-.3.2-.5.1a6.5 6.5 0 0 1-3.2-2.8c-.2-.4.2-.4.7-1.3.1-.2 0-.3 0-.4l-.8-1.8c-.2-.5-.4-.4-.5-.4h-.5a1 1 0 0 0-.7.3 3 3 0 0 0-.9 2.2 5.2 5.2 0 0 0 1.1 2.8 12 12 0 0 0 4.6 4c1.7.7 2 .6 2.4.5a2.6 2.6 0 0 0 1.7-1.2c.2-.6.2-1.1.1-1.2l-.4-.3z'/%3E%3C/svg%3E") center/contain no-repeat}.err{color:var(--red);font-size:14px;margin:6px 0;min-height:1em}.toast{position:fixed;left:50%;transform:translate(-50%);bottom:84px;background:var(--ink);color:var(--paper);padding:10px 16px;border-radius:10px;z-index:60;font-size:14px}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}.kpi{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px 14px;cursor:pointer;text-align:left}.kpi:hover{border-color:var(--green)}.kpi .l{font-size:13px;color:var(--mute)}.kpi .v{font-size:24px;font-weight:700;margin-top:2px}.kpi .s{font-size:12px;color:var(--mute)}.kpi.warn{border-color:var(--red);background:var(--red-soft)}.kpi.ok{border-color:var(--green);background:var(--green-soft)}label.f{display:block;margin:8px 0}label.f .l{display:block;font-size:12.5px;color:var(--mute);margin-bottom:3px}input[type=text],input[type=number],input[type=date],input[type=password],select,textarea{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:8px;background:var(--card);min-height:40px}input:focus,select:focus,textarea:focus,.btn:focus-visible{outline:2px solid var(--gold);outline-offset:1px}.g2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.g3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}.g4{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.calc{background:var(--gold-soft);border-radius:8px;padding:10px 12px;margin:10px 0;font-size:14px}.foot{display:flex;gap:10px;justify-content:flex-end;margin-top:14px;flex-wrap:wrap}.chk{display:flex;align-items:center;gap:8px;padding:6px 0;cursor:pointer}.chk input{width:18px;height:18px;margin:0}.line{border:1px solid var(--line);border-radius:8px;padding:8px 10px;margin:6px 0;background:var(--card)}.combo{position:relative}.combo input{padding-right:34px}.combo .arrow{position:absolute;right:4px;top:4px;bottom:4px;width:28px;border:0;background:none;cursor:pointer;color:var(--mute)}.combo .list{position:absolute;left:0;right:0;top:100%;z-index:30;background:var(--card);border:1px solid var(--line);border-radius:8px;max-height:240px;overflow:auto;box-shadow:0 8px 24px #0000001f;margin-top:2px}.combo .opt{padding:8px 10px;cursor:pointer;border-bottom:1px solid var(--line2)}.combo .opt:last-child{border-bottom:0}.combo .opt.on,.combo .opt:hover{background:var(--green-soft)}.combo .opt .sub{font-size:12px;color:var(--mute)}.gridwrap{overflow:auto;border:1px solid var(--line);border-radius:8px;background:var(--card);max-height:calc(100vh - 230px)}table.grid{border-collapse:separate;border-spacing:0;width:100%;font-size:13.5px;min-width:600px}.grid th{position:sticky;top:0;background:var(--line2);z-index:2;font-weight:600;color:var(--ink);text-align:left;padding:7px 9px;border-bottom:1px solid var(--line);border-right:1px solid var(--line);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none}.grid th.n,.grid td.n{text-align:right}.grid td{padding:0;border-bottom:1px solid var(--line2);border-right:1px solid var(--line2);white-space:nowrap;vertical-align:middle}.grid td>.cell{padding:6px 9px;min-height:32px}.grid td input,.grid td select{border:0;border-radius:0;background:transparent;padding:6px 9px;min-height:32px;width:100%}.grid td input:focus{outline:2px solid var(--gold);outline-offset:-2px;background:var(--gold-soft)}.grid tr.click{cursor:pointer}.grid tr.click:hover td{background:var(--green-soft)}.grid tr:nth-child(2n) td{background:#00000004}.grid tr.tot td{font-weight:700;border-top:2px solid var(--ink);background:var(--line2)}.gridbar{display:flex;gap:8px;align-items:center;margin:8px 0;flex-wrap:wrap}.gridbar input[type=text]{max-width:280px}.sheet{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:40;display:flex;align-items:flex-end;justify-content:center}.sheet .panel{background:var(--paper);width:100%;max-width:760px;max-height:92%;overflow:auto;border-radius:16px 16px 0 0;padding:14px 16px 28px}.panel h2{margin:4px 0 10px;font-size:19px}.desktop .sheet{align-items:stretch;justify-content:flex-end}.desktop .sheet .panel{border-radius:0;max-height:100%;height:100%;max-width:640px;box-shadow:-8px 0 30px #0003;padding:20px 24px}.mobile .app{padding:0 12px 90px;max-width:720px;margin:0 auto}.mobile .top{position:sticky;top:0;background:var(--paper);z-index:5;padding:12px 0 8px;display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid var(--line)}.mobile nav.tabs{position:fixed;left:0;right:0;bottom:0;background:var(--card);border-top:1px solid var(--line);display:flex;padding:6px 4px calc(6px + env(safe-area-inset-bottom,0px));z-index:6}.mobile nav.tabs a{flex:1;text-align:center;text-decoration:none;color:var(--mute);font-size:11.5px;padding:6px 2px;border-radius:8px}.mobile nav.tabs a.on{color:var(--green);font-weight:600;background:var(--green-soft)}.mobile nav.tabs a span{display:block;font-size:20px;line-height:1.1}.mobile .actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.mobile .actions .btn{min-height:76px;font-size:15px;font-weight:600;text-align:left;padding:12px 14px;white-space:normal}.mobile .actions .btn small{display:block;font-weight:400;color:var(--mute);font-size:12px;margin-top:3px}.mobile .list .item{display:flex;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px solid var(--line2);cursor:pointer}.mobile .list .item:last-child{border-bottom:0}.list .item .t{font-weight:600}.list .item .s{font-size:13px;color:var(--mute)}.list .item .r{text-align:right;white-space:nowrap;font-size:13px}.mobile .gridwrap{max-height:none}.mobile .g3,.mobile .g4{grid-template-columns:1fr 1fr}.mobile .fab{position:fixed;right:16px;bottom:calc(74px + env(safe-area-inset-bottom,0px));width:56px;height:56px;border-radius:50%;background:var(--green);color:#fff;font-size:28px;border:0;box-shadow:0 6px 18px #00000040;z-index:7}.desktop .shell{display:grid;grid-template-columns:220px 1fr;height:100vh}.desktop aside{background:var(--sidebar);color:var(--sidebar-ink);padding:18px 12px;display:flex;flex-direction:column;gap:4px}.desktop aside .brand{font-weight:700;font-size:17px;color:#fff;padding:4px 10px 14px}.desktop aside a{color:inherit;text-decoration:none;padding:9px 12px;border-radius:8px;display:flex;gap:10px;align-items:center}.desktop aside a.on{background:#ffffff24;color:#fff;font-weight:600}.desktop aside a:hover{background:#ffffff14}.desktop aside .spacer{flex:1}.desktop aside .user{font-size:12.5px;opacity:.8;padding:8px 12px}.desktop main{overflow:auto;padding:0 24px 30px}.desktop .top{position:sticky;top:0;background:var(--paper);z-index:5;padding:14px 0 10px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);margin-bottom:8px}.desktop .menu{position:relative}.desktop .menu .dd{position:absolute;right:0;top:100%;background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px #00000026;z-index:20;min-width:240px;padding:6px}.desktop .menu .dd button{display:block;width:100%;text-align:left;border:0;background:none;padding:9px 12px;border-radius:6px;cursor:pointer}.desktop .menu .dd button:hover{background:var(--green-soft)}.desktop .subtabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:4px 0 10px}.desktop .subtabs button{border:0;background:none;padding:8px 14px;cursor:pointer;border-bottom:2px solid transparent;color:var(--mute);font-weight:500}.desktop .subtabs button.on{color:var(--green);border-bottom-color:var(--green)}.mobile .subtabs{display:flex;gap:6px;margin:8px 0;overflow:auto}.mobile .subtabs button{border:1px solid var(--line);background:var(--card);border-radius:99px;padding:6px 12px;white-space:nowrap}.mobile .subtabs button.on{background:var(--green);color:#fff;border-color:var(--green)}.two{display:grid;grid-template-columns:1fr 1fr;gap:16px}.mobile .two{grid-template-columns:1fr}.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.login .box{width:100%;max-width:380px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:24px}details summary{cursor:pointer;color:var(--mute);font-size:13px}@media print{aside,nav.tabs,.top,.gridbar,.fab{display:none!important}.gridwrap{max-height:none;overflow:visible}}.desktop .line.rowline{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:8px;align-items:end;padding:8px 10px}.desktop .line.rowline .g2,.desktop .line.rowline .g3,.desktop .line.rowline .g4{display:contents}.desktop .line.rowline label.f{margin:0}.desktop .line.rowline .row{display:contents}.desktop .line.rowline .btn.sm{align-self:end;justify-self:start}.desktop .line.rowline>.row.between{display:flex;grid-column:1/-1}.desktop .line.rowline .small.muted,.desktop .line.rowline .calc{grid-column:1/-1}.desktop .sheet .panel{max-width:760px}
