:root{--pur:#43266f;--pur2:#6a3fb0;--pur3:#efe8fa;--grn:#2f8f46;--ylw:#f1b92c;--red:#c0392b;--ink:#1f2530;--ink2:#5b6472;--line:#dcdfe6;--bg:#eef0f4;--card:#fff}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{background:var(--bg);color:var(--ink);font:15px/1.45 Inter,Segoe UI,system-ui,-apple-system,sans-serif}a{color:var(--pur2)}.lnk{color:var(--pur2);text-decoration:none}.lnk:hover{text-decoration:underline}.b{font:inherit;border:1px solid var(--line);background:#fff;color:var(--ink);padding:8px 14px;border-radius:6px;cursor:pointer;min-height:38px}.b:disabled{opacity:.5;cursor:not-allowed}.b-s{padding:4px 10px;min-height:30px;font-size:13px}.b-save{background:var(--grn);color:#fff;border-color:var(--grn);font-weight:600}.b-edit{background:var(--ylw);border-color:var(--ylw);font-weight:600}.b-purple{background:var(--pur2);color:#fff;border-color:var(--pur2);font-weight:600}.b-danger{background:#fff;color:var(--red);border-color:#e5b3ad}.sample{background:#fff4d6;color:#6a4a00;font-size:12.5px;padding:6px 14px;border-bottom:1px solid #ecd9a0;text-align:center}.app{display:flex;min-height:100vh}.side{width:200px;flex:none;background:var(--pur);color:#fff;position:sticky;top:0;height:100vh;overflow:auto;display:flex;flex-direction:column}.side .brand{padding:14px 14px 10px;font-weight:700;font-size:16px;border-bottom:1px solid rgba(255,255,255,.14);display:flex;justify-content:space-between;align-items:center}.side .brand button{background:none;border:0;color:#fff;font-size:20px;cursor:pointer}.side a.nv{display:flex;gap:10px;align-items:center;padding:11px 14px;color:#e6dcf7;text-decoration:none;min-height:44px;border-left:3px solid transparent}.side a.nv:hover{background:#ffffff14}.side a.nv[aria-current=page]{background:#ffffff24;border-left-color:var(--ylw);color:#fff;font-weight:600}.side .ic{width:18px;text-align:center;opacity:.9}.side .foot{margin-top:auto;padding:12px;border-top:1px solid rgba(255,255,255,.14);font-size:12px;color:#cdbfe8}.side .foot button{width:100%;margin-top:6px;background:none;border:1px solid rgba(255,255,255,.3);color:#fff;border-radius:6px;padding:8px;cursor:pointer;min-height:40px}.main{flex:1;min-width:0}.top{display:flex;gap:10px;align-items:center;padding:10px 18px;background:#fff;border-bottom:1px solid var(--line);flex-wrap:wrap}.top h1{margin:0 auto 0 0;font-size:19px;color:var(--pur)}.top input[type=search],.top .srch{border:1px solid var(--line);border-radius:6px;padding:7px 10px;font:inherit;min-width:200px}.role{font-size:13px;color:var(--ink2);display:flex;gap:6px;align-items:center}.role select{font:inherit;padding:5px;border:1px solid var(--line);border-radius:6px;background:#fff}.page{padding:16px 18px;max-width:1280px}.menu-btn{display:none}.card{background:var(--card);border:1px solid var(--line);border-radius:8px;margin:0 0 14px;overflow:hidden}.card-h{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line);background:#fafbfc}.card-h h3{margin:0;font-size:15px;color:var(--pur)}.card-r{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.card-b{padding:14px}.grid{display:grid;gap:14px}.g2{grid-template-columns:1fr 1fr}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}.g-home{grid-template-columns:minmax(0,2fr) minmax(260px,1fr)}.tw{overflow-x:auto}.tb{width:100%;border-collapse:collapse;font-size:14px}.tb th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.4px;color:var(--ink2);padding:8px 10px;border-bottom:2px solid var(--line);background:#fafbfc;white-space:nowrap}.tb td{padding:8px 10px;border-bottom:1px solid #eceef2;vertical-align:top}.tb tr:hover td{background:#faf8ff}.emp,.emp2{color:var(--ink2);padding:14px;text-align:center}.tabs{display:flex;flex-wrap:wrap;gap:2px;border-bottom:2px solid var(--line);margin:0 0 12px}.tabs button{background:#eceff3;border:1px solid var(--line);border-bottom:0;padding:8px 13px;font:inherit;cursor:pointer;border-radius:6px 6px 0 0;color:var(--ink);min-height:38px}.tabs button.on{background:#fff;color:var(--pur2);font-weight:700;box-shadow:inset 0 3px 0 var(--pur2)}.tabs.lower button{font-size:13.5px;padding:8px 11px}.fld{display:flex;flex-direction:column;gap:3px;font-size:13px;min-width:0}.fld span{color:var(--ink2);font-weight:600}.fld .req{border-bottom:1px dotted var(--ink2);align-self:flex-start}.fld input,.fld select,.fld textarea{font:inherit;padding:8px 9px;border:1px solid #c9cfda;border-radius:6px;background:#fff;min-width:0;width:100%}.fld small{color:var(--ink2)}.fld.wide{grid-column:1/-1}.frm{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px 12px;align-items:end}.chk{display:flex;gap:7px;align-items:center;font-size:14px;min-height:30px}.chips{display:flex;flex-wrap:wrap;gap:6px}.pillc{border:1px solid #b9a6dc;background:#fff;color:#4c2f83;border-radius:99px;padding:5px 12px;font:inherit;font-size:13px;cursor:pointer;min-height:32px}.pillc.on{background:#4f6f64;border-color:#4f6f64;color:#fff}.chip{display:inline-block;font-size:12px;padding:2px 9px;border-radius:99px;white-space:nowrap}.chip.ok{background:#e0f2e6;color:#1f6b37}.chip.warn{background:#fff0cc;color:#7a5200}.chip.bad{background:#fbe0dd;color:#9c2b20}.chip.info{background:var(--pur3);color:#4c2f83}.chip.mute{background:#eceff3;color:#46505e}.tile{display:inline-grid;place-items:center;width:30px;height:28px;font-size:12px;font-weight:700;color:#fff;clip-path:polygon(50% 0,100% 20%,100% 80%,50% 100%,0 80%,0 20%);margin-right:3px}.tg{background:#2f8f46}.tb2,.tbl{background:#2d6cb5}.tr{background:#c0392b}.ty{background:#d4a017}.tp{background:#7b4fb3}.tn{background:#c4c9d2}.tile.tb{background:#2d6cb5}.tiles{display:flex;gap:2px;flex-wrap:wrap}.tag{display:inline-block;background:#e9edf3;border-radius:4px;padding:2px 7px;font-size:12px;margin:0 4px 4px 0}.mdl-bg{position:fixed;inset:0;background:#14102480;z-index:50;display:grid;place-items:center;padding:12px}.mdl{background:#fff;border-radius:8px;width:min(560px,100%);max-height:92vh;display:flex;flex-direction:column}.mdl.wide{width:min(900px,100%)}.mdl header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line);background:var(--pur);color:#fff;border-radius:8px 8px 0 0}.mdl .x{background:none;border:0;color:#fff;font-size:24px;cursor:pointer;min-width:36px;min-height:36px}.mdl-b{padding:16px;overflow:auto}.note{padding:10px 12px;border-radius:6px;font-size:13.5px;margin:0 0 10px}.n-info{background:#eef4ff;color:#244a82}.n-warn{background:#fff6dc;color:#6a4a00}.n-bad{background:#fde8e5;color:#8f2418}.bl{margin:8px 0 0;padding-left:20px;color:var(--ink2)}.kv{display:flex;gap:8px;padding:4px 0;font-size:14px;border-bottom:1px dashed #eceef2}.kv span{color:var(--ink2);min-width:120px;font-size:13px}.stat{padding:12px 14px;border:1px solid var(--line);border-radius:8px;background:#fff}.stat b{display:block;font-size:24px;color:var(--pur)}.stat span{font-size:12.5px;color:var(--ink2)}.bar{height:8px;background:#e6e9ef;border-radius:99px;overflow:hidden}.bar i{display:block;height:100%;background:var(--pur2)}.upr{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;margin-bottom:12px}.upr .card{margin:0}.upr .face{display:flex;gap:14px}.avatar{width:92px;height:92px;border-radius:8px;background:#d9efe0;display:grid;place-items:center;flex:none}.avatar i{width:44px;height:44px;border-radius:50%;background:#2f8f46;display:block}.uprname{font-weight:700;font-size:16px}.edge{display:flex;justify-content:space-between;gap:8px;align-items:center;border-top:1px solid var(--line);margin-top:10px;padding-top:8px}.collapse{display:block;margin:-4px auto 8px;font-size:12px}.alertbar{background:#fde8e5;color:#8f2418;border:1px solid #f1b9b2;border-radius:6px;padding:8px 12px;margin-bottom:10px;font-weight:600}.two{display:grid;grid-template-columns:1fr 1fr;gap:14px}.board{display:flex;gap:10px;overflow-x:auto;align-items:flex-start;padding-bottom:6px}.col{flex:0 0 220px;background:#f3f4f8;border:1px solid var(--line);border-radius:8px;padding:8px}.col h4{margin:0 0 8px;font-size:13px}.cd{background:#fff;border:1px solid var(--line);border-radius:6px;padding:7px 9px;margin-bottom:6px;font-size:13px;display:flex;gap:6px;align-items:flex-start}.hc{background:#1f2a3a;color:#fff;border-radius:8px;overflow:hidden}.hc-h{padding:12px 16px;font-size:20px;font-weight:700;border-bottom:1px solid #33445c}.hc-h small{font-weight:400;font-size:14px;color:#c4cfdd}.hc-bar{display:flex;gap:6px;padding:10px 16px;align-items:center;flex-wrap:wrap;background:#243247}.hc-bar button{background:#fff;border:1px solid #fff;color:#1f2a3a;border-radius:4px;padding:6px 12px;font:inherit;cursor:pointer;min-height:34px}.hc-bar button.on{background:#e7dcfa;border-color:var(--pur2);color:var(--pur);font-weight:700}.hc-b{background:#fff;color:var(--ink);display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:0}.hc-main{padding:14px}.hc-rail{padding:14px;border-left:1px solid var(--line);background:#fafbfc;font-size:13.5px}.hc-rail h5{margin:10px 0 3px;font-size:12px;text-transform:uppercase;color:var(--ink2)}.hc-rail p{margin:0}.mar-row{border:1px solid var(--line);border-radius:6px;padding:10px 12px;margin-bottom:8px;display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;align-items:center}.slot{font-size:12px;font-weight:700;letter-spacing:.8px;color:var(--ink2);margin:10px 0 4px}.hist{border-left:3px solid var(--pur3);padding-left:10px;margin:0 0 10px;font-size:13.5px}.hist small{color:var(--ink2)}.rail{display:flex;flex-direction:column;gap:2px}.rail button{text-align:left;background:none;border:0;padding:7px 10px;border-radius:6px;font:inherit;cursor:pointer}.rail button.on{background:var(--pur3);color:var(--pur);font-weight:600}.rail h6{margin:10px 0 4px;font-size:11.5px;text-transform:uppercase;color:var(--ink2)}.mrow{display:flex;gap:10px;justify-content:space-between;padding:10px 4px;border-bottom:1px solid #eceef2;align-items:center;flex-wrap:wrap;cursor:pointer}.mrow:hover{background:#faf8ff}.cit{min-height:100vh;background:linear-gradient(180deg,#3b5a47 0,#547a63 220px,#e9efe9 220px)}.cit-nav{display:flex;gap:16px;padding:12px 18px;color:#fff;font-size:14px;flex-wrap:wrap}.cit-nav a{color:#fff}.cit-card{max-width:760px;margin:20px auto;background:#fff;border-radius:14px;padding:22px;box-shadow:0 8px 26px #0000002e}.cit-card h1{font-size:22px;margin:0 0 14px}.login{max-width:380px;margin:40px auto;background:#fff;border-radius:14px;padding:24px;box-shadow:0 8px 26px #00000038;text-align:center}.login h1{font-size:22px;margin:0 0 6px}.login p{color:var(--ink2);font-size:14px}.login .fld{text-align:left;margin:12px 0}.login .go{width:100%;background:#151a2c;color:#fff;border:0;border-radius:8px;padding:12px;font:600 15px inherit;cursor:pointer}.menu-l a.it{display:flex;align-items:center;gap:12px;padding:14px;border:1px solid var(--line);border-radius:10px;margin-bottom:8px;text-decoration:none;color:var(--ink);min-height:54px}.menu-l a.it:hover{background:#f6faf7}.menu-l .it b{display:block}.menu-l .it span{font-size:13px;color:var(--ink2)}.fd-row{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:8px;margin-bottom:8px;flex-wrap:wrap}.fd-row.done{background:#eaf6ee;border-color:#bfe2c9}.steps{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap}.steps span{font-size:12px;padding:4px 10px;border-radius:99px;background:#eceff3}.steps span.on{background:var(--pur2);color:#fff}.viewer{width:100%;height:68vh;border:1px solid var(--line);border-radius:6px}@media(max-width:900px){.g2,.g3,.g4,.g-home,.two,.upr,.hc-b{grid-template-columns:1fr}.hc-rail{border-left:0;border-top:1px solid var(--line)}}@media(max-width:760px){.app{display:block}.side{position:fixed;left:0;top:0;z-index:40;transform:translate(-100%);transition:transform .2s;width:240px}.side.open{transform:none}.menu-btn{display:inline-block}.page{padding:12px}.top{padding:8px 12px}.top .srch{min-width:0;flex:1}.tb.stack thead{display:none}.tb.stack td{display:block;border:0;padding:3px 10px}.tb.stack td:before{content:attr(data-l) ": ";color:var(--ink2);font-size:12px}.tb.stack tr{display:block;border-bottom:1px solid var(--line);padding:8px 0}.tb.stack td[data-l=""]:before{content:""}.frm{grid-template-columns:1fr}.cit-card{margin:12px;padding:16px}}.card table input{max-width:120px}
