:root{--bg:#f3f4fb;--card:#fff;--tx:#1f2440;--mu:#7b819e;--bd:#e7e9f4;--pr:#5b5bf0;--pr2:#7c7cf7;--prs:#eeeefe;--ok:#16a34a;--okbg:#dcfce7;--no:#e11d48;--nobg:#ffe4e9;--wt:#d97706;--wtbg:#fef3c7;--bl:#2563eb;--blbg:#dbeafe;--pu:#7c3aed;--pubg:#ede9fe;--sh:0 6px 24px rgba(60,64,130,.07)}
@media(prefers-color-scheme:dark){:root{--bg:#0f1220;--card:#181c30;--tx:#e8eaf8;--mu:#8e94b5;--bd:#262b45;--pr:#7c7cf7;--pr2:#9a9afa;--prs:#23274a;--okbg:#10321f;--nobg:#3a1522;--wtbg:#3a2a0c;--blbg:#14264a;--pubg:#2a1f4f;--sh:none}}
*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--tx);font:14px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
button,input,select,textarea{font:inherit;color:inherit}
.hide{display:none!important}
/* login */
.lg{min-height:100vh;display:grid;place-items:center;padding:16px;background:linear-gradient(135deg,#5b5bf0,#8b6cf6)}
.lgc{width:100%;max-width:380px;background:var(--card);border-radius:20px;padding:28px;box-shadow:0 20px 60px rgba(30,30,90,.35)}
.lgc h1{margin:10px 0 2px;font-size:22px}.lgc .sub{color:var(--mu);margin-bottom:16px}
.logo{width:46px;height:46px;border-radius:14px;background:linear-gradient(135deg,var(--pr),var(--pr2));display:grid;place-items:center;color:#fff}
label.l{display:block;font-size:12px;color:var(--mu);margin:12px 0 5px}
input,select,textarea{width:100%;padding:11px 12px;border:1px solid var(--bd);border-radius:11px;background:var(--bg);outline:none}
input:focus,select:focus,textarea:focus{border-color:var(--pr);box-shadow:0 0 0 3px var(--prs)}
.btn{display:inline-flex;align-items:center;gap:6px;border:0;background:var(--pr);color:#fff;padding:10px 16px;border-radius:11px;cursor:pointer;font-weight:600}
.btn:hover{filter:brightness(1.07)}.btn[disabled]{opacity:.55;cursor:default}
.btn.g{background:var(--card);color:var(--tx);border:1px solid var(--bd)}.btn.r{background:var(--no)}.btn.k{background:var(--ok)}.btn.w{background:#fff;color:var(--pr)}
.btn.sm{padding:6px 11px;font-size:12px;border-radius:9px}.btn.blk{width:100%;justify-content:center;margin-top:16px}
.err{color:var(--no);font-size:13px;margin-top:10px;min-height:18px}.ok{color:var(--ok)}
/* shell */
.app{display:flex;min-height:100vh}
.sb{width:230px;flex:none;background:linear-gradient(180deg,#5b5bf0 0%,#6a63f2 55%,#7a6af5 100%);color:#fff;display:flex;flex-direction:column;padding:18px 14px;position:sticky;top:0;height:100vh;overflow:auto;z-index:30}
.sb .brand{display:flex;align-items:center;gap:10px;padding:2px 6px 18px;font-weight:800;font-size:17px;letter-spacing:.2px}
.sb .brand i{width:38px;height:38px;border-radius:12px;background:rgba(255,255,255,.2);display:grid;place-items:center}
.sb h6{margin:14px 8px 6px;font-size:11px;letter-spacing:1px;text-transform:uppercase;opacity:.65;font-weight:600}
.sb a{display:flex;align-items:center;gap:11px;color:#fff;text-decoration:none;padding:10px 12px;border-radius:11px;font-size:14px;opacity:.9;cursor:pointer;position:relative}
.sb a:hover{background:rgba(255,255,255,.12)}.sb a.a{background:rgba(255,255,255,.24);opacity:1;font-weight:600}
.sb a svg{width:18px;height:18px;flex:none}
.sb .bd{margin-left:auto;background:#fff;color:var(--pr);border-radius:99px;font-size:11px;font-weight:700;padding:1px 7px}
.sb .sp{flex:1}
.mn{flex:1;min-width:0}
.top{display:flex;align-items:center;gap:12px;padding:14px 22px;background:var(--card);border-bottom:1px solid var(--bd);position:sticky;top:0;z-index:20}
.top .srch{flex:1;max-width:520px;position:relative}.top .srch input{border-radius:99px;padding-left:40px;background:var(--bg)}
.top .srch svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);width:17px;color:var(--mu)}
.top .sp{flex:1}
.ib{position:relative;width:38px;height:38px;border-radius:50%;border:1px solid var(--bd);background:var(--card);display:grid;place-items:center;cursor:pointer;color:var(--mu)}
.ib .n{position:absolute;top:-4px;right:-4px;background:var(--no);color:#fff;border-radius:99px;font-size:10px;font-weight:700;padding:0 5px;min-width:17px;text-align:center}
.me{display:flex;align-items:center;gap:9px;cursor:default}.me .av{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--pr),#a78bfa);color:#fff;display:grid;place-items:center;font-weight:700;font-size:13px}
.me b{display:block;font-size:13px;line-height:1.1}.me span{font-size:11px;color:var(--mu)}
.ham{display:none}
.pg{padding:20px 22px 40px;max-width:1280px}
.card{background:var(--card);border:1px solid var(--bd);border-radius:16px;padding:16px;box-shadow:var(--sh)}
.card h3{margin:0 0 12px;font-size:15px;display:flex;align-items:center;justify-content:space-between;gap:8px}
.card h3 small{font-weight:400;color:var(--mu);font-size:12px}
.grid{display:grid;gap:16px}
.g2{grid-template-columns:2fr 1fr}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}.g22{grid-template-columns:1fr 1fr}
/* dashboard */
.hero{background:linear-gradient(120deg,#5b5bf0,#7c7cf7 60%,#8e84f8);color:#fff;border-radius:18px;padding:26px 28px;position:relative;overflow:hidden;min-height:170px}
.hero h2{margin:0 0 6px;font-size:21px}.hero p{margin:0 0 18px;opacity:.92;max-width:420px}
.hero:before,.hero:after{content:"";position:absolute;border-radius:50%;background:rgba(255,255,255,.12)}
.hero:before{width:260px;height:260px;right:-60px;top:-80px}.hero:after{width:180px;height:180px;right:90px;bottom:-110px}
.hero .cl{position:absolute;right:34px;top:50%;transform:translateY(-50%);font-size:46px;font-weight:800;text-align:right;line-height:1;z-index:1}
.hero .cl small{display:block;font-size:13px;font-weight:500;opacity:.9;margin-top:8px}
.kpi{display:flex;gap:12px;align-items:center}.kpi .ic{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;flex:none}
.kpi .ic svg{width:20px;height:20px}.kpi small{color:var(--mu);display:block;font-size:12px}.kpi b{font-size:26px;line-height:1.1}
.c-bl{background:var(--blbg);color:var(--bl)}.c-ok{background:var(--okbg);color:var(--ok)}.c-wt{background:var(--wtbg);color:var(--wt)}.c-no{background:var(--nobg);color:var(--no)}.c-pu{background:var(--pubg);color:var(--pu)}
.donut{width:150px;height:150px;border-radius:50%;display:grid;place-items:center;margin:0 auto;position:relative}
.donut:after{content:"";position:absolute;inset:20px;background:var(--card);border-radius:50%}
.donut b{position:relative;z-index:1;font-size:26px}
.lgd{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;margin-top:12px;font-size:12px;color:var(--mu)}.lgd i{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px}
.bars{display:flex;align-items:flex-end;gap:10px;height:130px;padding-top:6px}.bars div{flex:1;text-align:center;font-size:11px;color:var(--mu);display:flex;flex-direction:column;justify-content:flex-end;height:100%}
.bars i{display:block;background:linear-gradient(180deg,var(--pr2),var(--pr));border-radius:7px 7px 3px 3px;min-height:3px}.bars b{font-size:11px;color:var(--tx);margin-bottom:3px}
.prog{height:8px;border-radius:99px;background:var(--prs);overflow:hidden;min-width:90px}.prog i{display:block;height:100%;background:var(--pr);border-radius:99px}
.cal{width:100%;text-align:center;font-size:13px}.cal th{color:var(--mu);font-weight:500;padding:6px 0;font-size:11px;border:0}
.cal td{padding:3px 0;border:0}.cal td span{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%}
.cal td.t span{background:var(--no);color:#fff;font-weight:700}.cal td.m{color:var(--mu);opacity:.45}.cal td.e span{background:var(--prs);color:var(--pr);font-weight:700}
.chd{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.chd b{font-size:14px}
.li{display:flex;gap:11px;align-items:center;padding:9px 0;border-bottom:1px solid var(--bd)}.li:last-child{border:0}
.li .ic{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;flex:none;background:var(--prs);color:var(--pr);font-weight:700;font-size:12px}
.li .t{flex:1;min-width:0}.li .t b{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.li .t span{font-size:12px;color:var(--mu)}
.li .r{font-size:12px;color:var(--mu);text-align:right}
/* tables */
.tw{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:13px}
th{text-align:left;color:var(--mu);font-weight:500;font-size:12px;padding:9px 8px;border-bottom:1px solid var(--bd);white-space:nowrap}
td{padding:10px 8px;border-bottom:1px solid var(--bd);vertical-align:middle}tr:last-child td{border:0}
tbody tr.cl{cursor:pointer}tbody tr.cl:hover{background:var(--prs)}
.pill{display:inline-block;padding:2px 10px;border-radius:99px;font-size:12px;font-weight:600;white-space:nowrap}
.p-ok{background:var(--okbg);color:var(--ok)}.p-no{background:var(--nobg);color:var(--no)}.p-wt{background:var(--wtbg);color:var(--wt)}.p-bl{background:var(--blbg);color:var(--bl)}.p-pu{background:var(--pubg);color:var(--pu)}.p-gr{background:var(--bg);color:var(--mu)}
.bar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:14px}.bar .sp{flex:1}.bar input,.bar select{width:auto}
.tl{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.tl span{font-size:12px;background:var(--bg);border:1px solid var(--bd);border-radius:99px;padding:3px 10px}
.tl .y{background:var(--okbg);color:var(--ok);border-color:transparent}.tl .n{background:var(--nobg);color:var(--no);border-color:transparent}.tl .w{background:var(--wtbg);color:var(--wt);border-color:transparent}
.pc{border:1px solid var(--bd);border-radius:14px;padding:14px;margin-bottom:12px;background:var(--card)}
.pc .hd{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;align-items:flex-start}.pc .hd b{font-size:15px}
.pc .mt{color:var(--mu);font-size:12px;margin-top:2px}.pc .rs{margin-top:8px}
.pc.late{border-color:var(--no);background:var(--nobg)}
.pc .ac{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap;align-items:center}.pc .ac input{flex:1;min-width:140px}
.sec .pc{padding:18px}.sec .pc .btn{padding:14px 26px;font-size:16px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.three{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.empty{color:var(--mu);text-align:center;padding:26px 0}
.note{background:var(--prs);border-radius:12px;padding:12px 14px;font-size:13px;color:var(--tx)}
.note code{background:var(--card);padding:1px 6px;border-radius:6px}
dialog{border:0;border-radius:18px;padding:22px;max-width:520px;width:calc(100% - 24px);background:var(--card);color:var(--tx);box-shadow:0 30px 80px rgba(20,20,60,.4)}
dialog::backdrop{background:rgba(15,18,40,.55)}
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:#1f2440;color:#fff;padding:11px 18px;border-radius:12px;z-index:99;max-width:90%;box-shadow:0 10px 30px rgba(0,0,0,.3)}
@media(max-width:1000px){.g2{grid-template-columns:1fr}.g4{grid-template-columns:1fr 1fr}.g3{grid-template-columns:1fr}.g22{grid-template-columns:1fr}}
@media(max-width:820px){.sb{position:fixed;left:-250px;transition:left .2s;width:240px}.sb.o{left:0}.ham{display:grid}.pg{padding:14px 12px 40px}.top{padding:10px 12px}.me div{display:none}
 .hero .cl{display:none}.two,.three{grid-template-columns:1fr}.scr{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:25}}
@media(max-width:480px){.g4{grid-template-columns:1fr 1fr}.kpi b{font-size:22px}}

/* foto & profil */
.av2{width:44px;height:44px;border-radius:50%;object-fit:cover;flex:none;background:var(--prs);color:var(--pr);display:grid;place-items:center;font-weight:700;font-size:14px}
.av2.big{width:84px;height:84px;font-size:26px}.sec .av2{width:64px;height:64px;font-size:20px}
.me .av img{width:100%;height:100%;border-radius:50%;object-fit:cover}
.pf{display:flex;gap:18px;align-items:center;flex-wrap:wrap}.pf .av2{width:120px;height:120px;font-size:36px}
video.cam{width:100%;border-radius:14px;background:#000;transform:scaleX(-1);max-height:60vh}
.pc .hd .who{display:flex;gap:12px;align-items:flex-start}
