*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --pri:#3C3489;--pril:#EEEDFE;--prid:#26215C;
  --bg:#F5F4F0;--sur:#FFF;--bdr:#E0DFDA;--bdr2:#F0EFE9;
  --tx:#1A1A18;--mu:#6B6965;--mu2:#9B9895;
  --ok:#27500A;--okb:#EAF3DE;--okbdr:#97C459;
  --wa:#633806;--wab:#FAEEDA;--wabdr:#EF9F27;
  --er:#791F1F;--erb:#FCEBEB;--erbdr:#F09595;
  --in:#0C447C;--inb:#E6F1FB;--inbdr:#85B7EB;
  --sw:240px;--th:56px;--rad:8px;--radl:12px;
  --shadow:0 1px 3px rgba(0,0,0,.08)
}
html,body{height:100%;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;font-size:14px;color:var(--tx);background:var(--bg)}

/* ── Loading ── */
#loading{position:fixed;inset:0;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;z-index:9999}
.spin{width:36px;height:36px;border:3px solid var(--bdr);border-top-color:var(--pri);border-radius:50%;animation:sp .8s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}

/* ── Login ── */
#login-wrap{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px}
.login-box{background:var(--sur);border-radius:var(--radl);border:1px solid var(--bdr);padding:36px 32px;width:360px;box-shadow:var(--shadow)}
.login-logo{font-size:22px;font-weight:700;color:var(--pri);margin-bottom:6px}
.login-sub{font-size:13px;color:var(--mu);margin-bottom:24px}
.login-err{background:var(--erb);color:var(--er);border:1px solid var(--erbdr);border-radius:var(--rad);padding:8px 12px;font-size:13px;margin-bottom:14px;display:none}

/* ── Shell ── */
#app{display:none;height:100%;flex-direction:column}
#app.show{display:flex}
#topbar{height:var(--th);background:var(--sur);border-bottom:1px solid var(--bdr);display:flex;align-items:center;padding:0 16px;gap:10px;position:sticky;top:0;z-index:100;flex-shrink:0;box-shadow:var(--shadow)}
#mb{display:none;background:none;border:none;cursor:pointer;padding:7px;border-radius:var(--rad);color:var(--tx)}
.tlogo{font-size:15px;font-weight:600;color:var(--pri);flex:1}
.tlogo small{font-weight:400;color:var(--mu);font-size:11px;margin-left:4px}
.tr{display:flex;align-items:center;gap:8px}
.tbtn{background:none;border:1px solid var(--bdr);cursor:pointer;padding:6px 10px;border-radius:var(--rad);color:var(--mu);font-size:12px;display:flex;align-items:center;gap:5px;transition:all .12s}
.tbtn:hover{background:var(--bg)}
.av{width:28px;height:28px;border-radius:50%;background:var(--pri);color:#fff;font-size:11px;font-weight:600;display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer}
.un{font-size:12px;font-weight:500}
.ur{font-size:10px;color:var(--mu)}
#body{display:flex;flex:1;overflow:hidden}
#sb{width:var(--sw);background:var(--sur);border-right:1px solid var(--bdr);display:flex;flex-direction:column;overflow-y:auto;flex-shrink:0;transition:transform .25s}
.nsc{padding:14px 12px 3px;font-size:10px;font-weight:600;letter-spacing:.07em;color:var(--mu2);text-transform:uppercase}
.ni{display:flex;align-items:center;gap:9px;padding:8px 12px;margin:1px 6px;border-radius:var(--rad);cursor:pointer;font-size:13px;color:var(--mu);border:none;background:none;width:calc(100% - 12px);text-align:left;transition:all .12s}
.ni:hover{background:var(--bg);color:var(--tx)}
.ni.act{background:var(--pril);color:var(--pri);font-weight:500}
.sbfoot{margin-top:auto;padding:10px 12px;border-top:1px solid var(--bdr);font-size:11px;color:var(--mu);text-align:center}
#ovl{display:none;position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:200}
#main{flex:1;overflow-y:auto;padding:20px 24px}

/* ── Cards & Stats ── */
.ph{margin-bottom:20px}
.pt{font-size:20px;font-weight:600}
.ps{font-size:13px;color:var(--mu);margin-top:3px}
.bc{font-size:11px;color:var(--mu2);margin-bottom:4px}
.sgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(155px,1fr));gap:10px;margin-bottom:20px}
.sc{background:var(--sur);border-radius:var(--radl);border:1px solid var(--bdr);padding:14px;cursor:pointer;transition:all .15s;box-shadow:var(--shadow)}
.sc:hover{border-color:var(--pri);transform:translateY(-1px)}
.sl{font-size:11px;color:var(--mu);margin-bottom:5px;font-weight:500}
.sv{font-size:24px;font-weight:700;line-height:1}
.ss{font-size:11px;color:var(--mu);margin-top:3px}
.si{width:30px;height:30px;border-radius:7px;display:flex;align-items:center;justify-content:center;margin-bottom:8px}
.ip{background:var(--pril);color:var(--pri)}
.ig{background:var(--okb);color:var(--ok)}
.ia{background:var(--wab);color:var(--wa)}
.ir{background:var(--erb);color:var(--er)}
.ib{background:var(--inb);color:var(--in)}
.card{background:var(--sur);border-radius:var(--radl);border:1px solid var(--bdr);padding:18px;margin-bottom:14px;box-shadow:var(--shadow)}
.ctit{font-size:13px;font-weight:600;margin-bottom:12px;display:flex;align-items:center;gap:7px}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:14px}

/* ── Tabs ── */
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--bdr);margin-bottom:18px;overflow-x:auto}
.tab{padding:8px 16px;font-size:13px;font-weight:500;border:none;background:none;cursor:pointer;color:var(--mu);border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;transition:all .12s;display:flex;align-items:center;gap:5px}
.tab:hover{color:var(--tx)}
.tab.act{color:var(--pri);border-bottom-color:var(--pri)}

/* ── Table ── */
.tbl-wrap{overflow-x:auto;margin-top:2px}
table{width:100%;border-collapse:collapse;font-size:13px;min-width:600px}
th{text-align:left;padding:8px 12px;font-size:11px;font-weight:600;color:var(--mu);border-bottom:1px solid var(--bdr);white-space:nowrap;background:var(--bg)}
td{padding:9px 12px;border-bottom:1px solid var(--bdr2);vertical-align:middle}
tr:last-child td{border-bottom:none}
tr:hover td{background:#FAFAF8}

/* ── Badge ── */
.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:20px;font-size:11px;font-weight:500;white-space:nowrap}
.bp{background:var(--pril);color:var(--pri)}
.bg2{background:var(--okb);color:var(--ok)}
.ba{background:var(--wab);color:var(--wa)}
.br{background:var(--erb);color:var(--er)}
.bb{background:var(--inb);color:var(--in)}
.bk{background:var(--bg);color:var(--mu);border:1px solid var(--bdr)}

/* ── Buttons ── */
.btn{display:inline-flex;align-items:center;gap:5px;padding:7px 13px;border-radius:var(--rad);font-size:13px;font-weight:500;cursor:pointer;border:1px solid var(--bdr);background:var(--sur);color:var(--tx);transition:all .12s;white-space:nowrap}
.btn:hover{background:var(--bg)}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn-pri{background:var(--pri);color:#fff;border-color:var(--pri)}
.btn-pri:hover:not(:disabled){background:var(--prid)}
.btn-sm{padding:4px 9px;font-size:12px}
.btn-ok{background:var(--okb);color:var(--ok);border-color:var(--okbdr)}
.btn-er{background:var(--erb);color:var(--er);border-color:var(--erbdr)}
.btn-wa{background:var(--wab);color:var(--wa);border-color:var(--wabdr)}
.btn-row{display:flex;gap:6px;flex-wrap:wrap;align-items:center}

/* ── Form ── */
.fbox{background:var(--bg);border:1.5px solid var(--bdr);border-radius:var(--radl);padding:18px;margin-bottom:14px}
.fbox.active{border-color:var(--pri)}
.fbox h3{font-size:14px;font-weight:600;margin-bottom:14px;color:var(--pri)}
.fgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.fg{display:flex;flex-direction:column;gap:3px}
.fg label{font-size:11px;font-weight:500;color:var(--mu)}
.fg .req{color:var(--er)}
.fg input,.fg select,.fg textarea{padding:7px 10px;border:1px solid var(--bdr);border-radius:var(--rad);font-size:13px;background:var(--sur);color:var(--tx);width:100%;transition:border-color .12s}
.fg input:focus,.fg select:focus,.fg textarea:focus{outline:none;border-color:var(--pri);box-shadow:0 0 0 2px var(--pril)}
.fg input:disabled{background:var(--bg);color:var(--mu)}
.fg textarea{resize:vertical;min-height:64px}
.fspan{grid-column:1/-1}
.fsec{font-size:11px;font-weight:600;color:var(--mu);letter-spacing:.05em;text-transform:uppercase;margin:10px 0 6px;grid-column:1/-1;padding-top:10px;border-top:1px solid var(--bdr)}
.chkg{display:flex;flex-wrap:wrap;gap:6px;margin-top:3px}
.chki{display:flex;align-items:center;gap:5px;font-size:12px;cursor:pointer;padding:4px 10px;border:1px solid var(--bdr);border-radius:20px;background:var(--sur);transition:all .12s;user-select:none}
.chki:hover{border-color:var(--pri)}
.chki.ck{background:var(--pril);border-color:var(--pri);color:var(--pri)}
.sbar{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap;align-items:center}
.sbar input,.sbar select{padding:7px 10px;border:1px solid var(--bdr);border-radius:var(--rad);font-size:13px;background:var(--sur)}
.sbar input{flex:1;min-width:160px}
.sbar input:focus,.sbar select:focus{outline:none;border-color:var(--pri)}
.alert{padding:9px 13px;border-radius:var(--rad);font-size:13px;display:flex;align-items:flex-start;gap:8px;margin-bottom:10px;line-height:1.5}
.a-ok{background:var(--okb);color:var(--ok);border:1px solid var(--okbdr)}
.a-er{background:var(--erb);color:var(--er);border:1px solid var(--erbdr)}
.a-wa{background:var(--wab);color:var(--wa);border:1px solid var(--wabdr)}
.a-in{background:var(--inb);color:var(--in);border:1px solid var(--inbdr)}
.empty{text-align:center;padding:36px 16px;color:var(--mu);font-size:13px;line-height:1.6}
.kuota-bar{height:8px;border-radius:4px;background:var(--bdr);overflow:hidden;margin-top:4px}
.kuota-fill{height:100%;border-radius:4px;background:var(--ok)}
.kuota-fill.warn{background:var(--wa)}
.kuota-fill.crit{background:var(--er)}

/* ── Modal ── */
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:500;display:flex;align-items:center;justify-content:center}
.modal-box{background:var(--sur);border-radius:var(--radl);width:min(640px,95vw);max-height:85vh;overflow-y:auto;box-shadow:0 8px 32px rgba(0,0,0,.18);position:relative}
.modal-head{padding:16px 20px;border-bottom:1px solid var(--bdr);display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;background:var(--sur);z-index:1}
.modal-head h2{font-size:15px;font-weight:600}
.modal-body{padding:16px 20px}

/* ── Icons ── */
.icon{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.icl{width:20px;height:20px}

/* ── Responsive ── */
@media(max-width:768px){
  #mb{display:flex}
  #sb{position:fixed;top:0;left:0;height:100%;z-index:300;transform:translateX(-100%)}
  #sb.open{transform:translateX(0)}
  #ovl.show{display:block}
  #main{padding:14px 16px}
  .sgrid{grid-template-columns:1fr 1fr}
  .g2,.fgrid{grid-template-columns:1fr}
}
@media(max-width:460px){.sgrid{grid-template-columns:1fr}}
