:root{
  --bg:#f5f2e8; --card:#fffdf7; --ink:#1e2b1f; --muted:#6a7566; --line:#e2ddcb;
  --green:#2f6b3a; --green2:#1f4d2a; --greenbg:#e6f0e3; --ochre:#b97a12; --ochrebg:#f8ecd2;
  --red:#b3402f; --redbg:#f8e1dc; --blue:#2c6a8f; --shadow:0 1px 2px rgba(40,50,30,.07),0 4px 14px rgba(40,50,30,.05);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#121811; --card:#1a2219; --ink:#e8eadc; --muted:#98a38f; --line:#2c372a;
    --green:#6fb27c; --green2:#8fcb9b; --greenbg:#1f3322; --ochre:#e0a43a; --ochrebg:#3a2f14;
    --red:#e2705e; --redbg:#3b1f1a; --blue:#6aaed4; --shadow:none;
  }
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
a{color:var(--green);text-decoration:none}
a:hover{text-decoration:underline}
h1{font-size:1.45rem;margin:0;font-weight:700;letter-spacing:-.01em}
h2{font-size:1.1rem;margin:0 0 .6rem}
h3{font-size:.95rem;margin:0 0 .4rem;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.04em}
small,.muted{color:var(--muted)}
.grow{flex:1}
.top{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:.7rem;padding:.55rem 1rem;background:var(--green2);color:#fff}
.top a{color:#fff}
.brand{white-space:nowrap;font-weight:700;font-size:1.1rem;letter-spacing:.01em}
.leaf{color:#cde8b0}
.who{font-size:.85rem;opacity:.95}
.scope{margin:0 0 0 .6rem;min-width:0}
.scope select{width:auto;max-width:240px;padding:.32rem .6rem;border-radius:8px;border:1px solid rgba(255,255,255,.35);background:rgba(255,255,255,.12);color:#fff;font-weight:600;font-size:.9rem;cursor:pointer}
.scope select option{color:#1d2a1f;background:#fff}
.scope.on select{background:#c98a1b;border-color:#c98a1b}
.scopenote{background:var(--greenbg);border-radius:8px;padding:.5rem .8rem}
.who small{color:#cfe3c8}
.burger{display:none;background:none;border:0;color:#fff;font-size:1.4rem;padding:0 .3rem;cursor:pointer}
.shell{display:flex;min-height:calc(100vh - 50px)}
.side{width:224px;flex:none;padding:1rem .6rem;border-right:1px solid var(--line);background:var(--card)}
.side a{display:flex;align-items:center;gap:.65rem;padding:.5rem .8rem;border-radius:8px;color:var(--ink);font-weight:500;margin-bottom:2px}
.side a:hover{background:var(--greenbg);text-decoration:none}
.side a.on{background:var(--green);color:#fff}
.side .ico{flex:none;opacity:.8}
.side a.on .ico,.side a:hover .ico{opacity:1}
.side a.sub{margin-top:1rem;color:var(--muted);font-size:.9rem}
.main{flex:1;min-width:0;padding:1.2rem 1.4rem 5rem;max-width:1280px}
.pagehead{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.6rem;margin-bottom:1rem}
.actions{display:flex;flex-wrap:wrap;gap:.5rem}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:1rem 1.1rem;box-shadow:var(--shadow);margin-bottom:1rem}
.card>h2:first-child,.card>h3:first-child{margin-top:0}
.grid{display:grid;gap:.8rem}
.kpis{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));margin-bottom:1rem}
.g2{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}
.g3{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:.8rem .95rem;box-shadow:var(--shadow);border-top:3px solid var(--green)}
.kpi.warn{border-top-color:var(--ochre)} .kpi.bad{border-top-color:var(--red)} .kpi.info{border-top-color:var(--blue)}
.kl{font-size:.74rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600}
.kv{font-size:1.4rem;font-weight:700;margin-top:.15rem;font-variant-numeric:tabular-nums}
.ks{font-size:.8rem;color:var(--muted);margin-top:.1rem}
.pos{color:var(--green);font-weight:600} .neg{color:var(--red);font-weight:600}
.btn{display:inline-block;border:1px solid var(--green);background:var(--green);color:#fff;padding:.5rem .95rem;border-radius:9px;font:inherit;font-weight:600;cursor:pointer;line-height:1.2}
.btn:hover{background:var(--green2);text-decoration:none;color:#fff}
.btn.ghost{background:transparent;color:var(--green);border-color:var(--line)}
.top .btn.ghost{color:#fff;border-color:rgba(255,255,255,.35)}
.btn.ghost:hover{background:var(--greenbg);color:var(--green2)}
.btn.sm{padding:.3rem .65rem;font-size:.85rem}
.btn.red{background:var(--red);border-color:var(--red)}
.btn.ochre{background:var(--ochre);border-color:var(--ochre)}
.lnk{background:none;border:0;color:var(--green);cursor:pointer;font:inherit;padding:0}
.lnk.danger{color:var(--red)}
form.inline{display:inline}
.tblwrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
table.tbl{width:100%;border-collapse:collapse;font-size:.92rem}
.tbl th{text-align:left;font-size:.74rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:.45rem .55rem;border-bottom:2px solid var(--line);white-space:nowrap}
.tbl td{padding:.5rem .55rem;border-bottom:1px solid var(--line);vertical-align:top}
.tbl tr:hover td{background:color-mix(in srgb,var(--greenbg) 45%,transparent)}
.tbl .r{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.tbl tfoot td{font-weight:700;border-top:2px solid var(--line);border-bottom:0}
.tbl td.act{white-space:nowrap;text-align:right}
.tbl td.act a,.tbl td.act button{margin-left:.5rem;font-size:.85rem}
.badge{display:inline-block;padding:.1rem .55rem;border-radius:99px;font-size:.75rem;font-weight:600;background:var(--line);color:var(--ink);white-space:nowrap}
.b-green{background:var(--greenbg);color:var(--green2)} .b-ochre{background:var(--ochrebg);color:var(--ochre)} .b-red{background:var(--redbg);color:var(--red)} .b-gray{background:var(--line);color:var(--muted)}
.flash{padding:.7rem 1rem;border-radius:10px;margin-bottom:1rem;font-weight:500}
.flash.ok{background:var(--greenbg);color:var(--green2)} .flash.err{background:var(--redbg);color:var(--red)}
.form{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:.8rem 1rem}
.fld{display:flex;flex-direction:column;gap:.25rem}
.fld>span{font-size:.78rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}
.fld.full{grid-column:1/-1}
input,select,textarea{font:inherit;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:9px;padding:.55rem .65rem;width:100%}
input:focus,select:focus,textarea:focus{outline:2px solid color-mix(in srgb,var(--green) 55%,transparent);border-color:var(--green)}
.formactions{grid-column:1/-1;display:flex;gap:.6rem;flex-wrap:wrap;margin-top:.3rem}
.filters{display:flex;flex-wrap:wrap;gap:.6rem;align-items:flex-end;margin-bottom:1rem}
.filters .fld{min-width:140px;flex:1 1 140px}
.filters .btn{flex:none}
.tabs{display:flex;gap:.3rem;flex-wrap:wrap;margin-bottom:1rem;border-bottom:1px solid var(--line)}
.tabs a{padding:.5rem .9rem;border-radius:9px 9px 0 0;color:var(--muted);font-weight:600}
.tabs a.on{color:var(--green2);border-bottom:3px solid var(--green);background:var(--card)}
.chartbox{position:relative;width:100%}
.bar{height:8px;background:var(--line);border-radius:99px;overflow:hidden;min-width:70px}
.bar>i{display:block;height:100%;background:var(--green);border-radius:99px}
.bar.over>i{background:var(--red)} .bar.mid>i{background:var(--ochre)}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:.9rem}
.pcard{display:block;color:inherit;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:1rem;box-shadow:var(--shadow)}
.pcard:hover{text-decoration:none;border-color:var(--green)}
.pcard h3{color:var(--ink);text-transform:none;letter-spacing:0;font-size:1.05rem;margin:0 0 .2rem}
.pcard .row{display:flex;justify-content:space-between;font-size:.9rem;padding:.12rem 0}
.list-plain{list-style:none;margin:0;padding:0}
.list-plain li{padding:.45rem 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:.8rem}
.alert{padding:.55rem .8rem;border-radius:9px;margin-bottom:.5rem;font-size:.9rem}
.alert.warn{background:var(--ochrebg);color:var(--ochre)} .alert.bad{background:var(--redbg);color:var(--red)} .alert.info{background:var(--greenbg);color:var(--green2)}
.empty{text-align:center;color:var(--muted);padding:2rem 1rem}
.eq{font-variant-numeric:tabular-nums}
.help{font-size:.82rem;color:var(--muted);margin:.2rem 0 .6rem}
/* auth */
.auth{max-width:420px;margin:8vh auto;padding:1rem}
.auth .card{padding:1.4rem}
.auth h1{margin-bottom:.8rem}
/* FAB */
.fab{position:fixed;right:1.1rem;bottom:1.1rem;z-index:40}
.fab>button{width:56px;height:56px;border-radius:50%;border:0;background:var(--ochre);color:#fff;font-size:2rem;line-height:1;cursor:pointer;box-shadow:0 4px 14px rgba(0,0,0,.3)}
.fabmenu{display:none;position:absolute;right:0;bottom:66px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.25);overflow:hidden;min-width:200px}
.fabmenu.open{display:block}
.fabmenu a{display:block;padding:.7rem 1rem;color:var(--ink);border-bottom:1px solid var(--line);font-weight:600}
.fabmenu a:last-child{border:0}
.fabmenu a:hover{background:var(--greenbg);text-decoration:none}
@media (max-width:900px){
  .burger{display:block}
  .side{position:fixed;left:0;top:50px;bottom:0;z-index:35;transform:translateX(-100%);transition:transform .2s;box-shadow:4px 0 20px rgba(0,0,0,.2);overflow:auto}
  .side.open{transform:none}
  .main{padding:1rem .9rem 6rem}
  .who{display:none}
  .scope{margin-left:.2rem}.scope select{max-width:150px;font-size:.85rem}
  h1{font-size:1.25rem}
  .kv{font-size:1.2rem}
}
@media print{
  .top,.side,.fab,.actions,.filters,.tabs,.noprint,.btn,form.inline,.lnk{display:none!important}
  body{background:#fff;color:#000} .main{padding:0;max-width:none}
  .card,.kpi{box-shadow:none;border:1px solid #ccc;break-inside:avoid}
}
