:root{--acc:#7c3aed;--acc-d:#5b21b6;--acc-l:#ede9fe;--acc2:#2563eb;--cyan:#06b6d4;--ring:#22d3ee;--navy:#0b0b1f;--navy2:#16153a;--side:#0b0b1f;--side2:#16153a;--bg:#f5f4ff;--bd:#e4e2f5;--tx:#141327;--mu:#55546b;--grad:linear-gradient(110deg,#7c3aed 0%,#4f46e5 45%,#2563eb 75%,#0891b2 100%);--hf:"Space Grotesk",system-ui,sans-serif;--red:#d93025;--green:#188038;--sh:0 1px 2px #1018280f,0 1px 3px #10182814}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--tx);-webkit-font-smoothing:antialiased;margin:0;font-family:Plus Jakarta Sans,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:13.5px}a{color:var(--acc);cursor:pointer;text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;cursor:pointer}.app{height:100%;display:flex}.side{background:var(--side);color:#c9d1e0;flex-direction:column;flex-shrink:0;width:216px;transition:width .2s;display:flex}.brand{color:#fff;border-bottom:1px solid #ffffff12;align-items:center;gap:10px;padding:16px 18px;font-size:15px;font-weight:700;display:flex}.brand .logo{background:var(--acc);border-radius:8px;place-items:center;width:30px;height:30px;display:grid}.side nav{flex-direction:column;gap:2px;padding:10px 8px;display:flex}.side nav button{color:inherit;text-align:left;background:0 0;border:0;border-radius:8px;align-items:center;gap:12px;padding:9px 12px;font-size:13.5px;display:flex}.side nav button:hover{background:var(--side2);color:#fff}.side nav button.on{background:var(--acc);color:#fff}.mainwrap{flex-direction:column;flex:1;min-width:0;display:flex}.top{border-bottom:1px solid var(--bd);z-index:20;background:#fff;align-items:center;gap:12px;height:56px;padding:0 20px;display:flex;position:sticky;top:0}.search{flex:1;max-width:520px;position:relative}.search input{background:var(--bg);border-color:#0000;padding-left:34px}.search input:focus{background:#fff}.search svg.i{color:var(--mu);position:absolute;top:9px;left:10px}.dropdown{border:1px solid var(--bd);z-index:30;background:#fff;border-radius:10px;max-height:420px;padding:6px;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow:auto;box-shadow:0 10px 30px #0000001f}.dropdown .grp{color:var(--mu);text-transform:uppercase;letter-spacing:.04em;padding:8px 10px 4px;font-size:11px;font-weight:600}.dropdown .it{cursor:pointer;border-radius:6px;align-items:center;gap:8px;padding:8px 10px;display:flex}.dropdown .it:hover{background:var(--acc-l)}.menu{border:1px solid var(--bd);z-index:30;background:#fff;border-radius:10px;min-width:200px;padding:6px;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 10px 30px #0000001f}.menu button{text-align:left;background:0 0;border:0;border-radius:6px;align-items:center;gap:10px;width:100%;padding:8px 10px;display:flex}.menu button:hover{background:var(--acc-l)}.avatar{background:var(--acc);color:#fff;border:0;border-radius:50%;place-items:center;width:32px;height:32px;font-weight:600;display:grid}.content{flex:1;padding:20px;overflow:auto}.ph{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;display:flex}.ph h1{margin:0;font-size:20px;font-weight:600}.ph .sp{flex:1}.btn{background:var(--acc);color:#fff;border:1px solid var(--acc);white-space:nowrap;border-radius:6px;align-items:center;gap:6px;padding:7px 14px;font-weight:500;display:inline-flex}.btn:hover{background:var(--acc-d)}.btn:disabled{opacity:.5;cursor:default}.btn.ghost{color:var(--tx);border-color:var(--bd);background:#fff}.btn.ghost:hover{background:#f8f9fb}.btn.danger{color:var(--red);background:#fff;border-color:#f3c7c3}.btn.sm{padding:4px 10px;font-size:12.5px}.card{border:1px solid var(--bd);box-shadow:var(--sh);background:#fff;border-radius:10px}.pad{padding:16px}input,select,textarea{font:inherit;width:100%;color:var(--tx);background:#fff;border:1px solid #d5dae3;border-radius:6px;outline:none;padding:8px 10px}textarea{resize:vertical;min-height:80px}input[type=checkbox]{width:15px;height:15px;accent-color:var(--acc);padding:0}.toolbar{border-bottom:1px solid var(--bd);flex-wrap:wrap;align-items:center;gap:8px;padding:12px 14px;display:flex}.toolbar input,.toolbar select{width:auto;min-width:160px}.chips{border-bottom:1px solid var(--bd);flex-wrap:wrap;align-items:center;gap:6px;padding:8px 14px;display:flex}.chip{background:var(--acc-l);color:var(--acc-d);border-radius:14px;align-items:center;gap:6px;padding:3px 6px 3px 10px;font-size:12px;font-weight:500;display:inline-flex}.chip button{color:inherit;background:0 0;border:0;padding:0;display:flex}.tbl{overflow:auto}table{border-collapse:collapse;width:100%}th{text-align:left;color:#4b5563;border-bottom:1px solid var(--bd);white-space:nowrap;-webkit-user-select:none;user-select:none;background:#f8f9fb;padding:10px 12px;font-size:12px;font-weight:600;position:sticky;top:0}th.s{cursor:pointer}th.s:hover{color:var(--acc)}td{vertical-align:top;border-bottom:1px solid #eef1f5;padding:9px 12px}tr.click{cursor:pointer}td.clip{text-overflow:ellipsis;white-space:nowrap;max-width:280px;overflow:hidden}.foot{color:var(--mu);align-items:center;gap:8px;padding:10px 14px;font-size:12.5px;display:flex}.foot .sp{flex:1}.badge{color:#374151;background:#eef1f5;border-radius:10px;padding:2px 8px;font-size:11.5px;font-weight:500;display:inline-block}.badge.blue{background:var(--acc-l);color:var(--acc-d)}.badge.green{color:var(--green);background:#e6f4ea}.badge.red{color:var(--red);background:#fce8e6}.badge.amber{color:#b06000;background:#fef7e0}.muted{color:var(--mu)}.small{font-size:12px}.kpis{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin-bottom:16px;display:grid}.kpi{align-items:center;gap:14px;padding:16px;display:flex}.kpi .ic{background:var(--acc-l);width:42px;height:42px;color:var(--acc);border-radius:10px;place-items:center;display:grid}.kpi .v{font-size:22px;font-weight:700}.kpi .l{color:var(--mu);font-size:12px}.charts{grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:14px;display:grid}.charts .card h3,.sect h3{border-bottom:1px solid var(--bd);margin:0;padding:14px 16px;font-size:14px;font-weight:600}.kanban{align-items:flex-start;gap:12px;padding-bottom:10px;display:flex;overflow-x:auto}.col{background:#eef1f6;border-radius:10px;flex-shrink:0;width:250px;min-width:250px}.col .ch{border-top:3px solid var(--acc);background:#fff;border-radius:10px 10px 0 0;padding:10px 12px}.col .ch b{font-size:13px}.col .ch .t{color:var(--mu);margin-top:2px;font-size:12px}.col .cb{min-height:120px;padding:8px}.col.over{outline:2px dashed var(--acc)}.dcard{box-shadow:var(--sh);cursor:grab;border:1px solid var(--bd);background:#fff;border-radius:8px;margin-bottom:8px;padding:10px}.dcard:hover{border-color:var(--acc)}.rec-h{flex-wrap:wrap;align-items:center;gap:16px;padding:18px 20px;display:flex}.rec-h .big{background:var(--acc);color:#fff;border-radius:12px;place-items:center;width:52px;height:52px;font-size:22px;font-weight:700;display:grid}.rec-h h1{margin:0;font-size:20px}.keys{flex-wrap:wrap;gap:28px;padding:0 20px 16px;display:flex}.keys div span{color:var(--mu);font-size:11.5px;display:block}.tabs{border-bottom:1px solid var(--bd);gap:4px;padding:0 14px;display:flex;overflow-x:auto}.tabs button{color:var(--mu);white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;padding:12px 14px;font-weight:500}.tabs button.on{color:var(--acc);border-color:var(--acc)}.fields{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:0 32px;padding:8px 20px 16px;display:grid}.f{border-bottom:1px dashed #edf0f4;align-items:flex-start;gap:12px;min-height:40px;padding:9px 0;display:flex}.f .k{width:130px;color:var(--mu);flex-shrink:0;padding-top:2px;font-size:12.5px}.f .vv{word-break:break-word;white-space:pre-wrap;cursor:text;border-radius:4px;flex:1;min-height:20px;margin:-2px -4px;padding:2px 4px}.f .vv:hover{outline:1px solid var(--bd);background:#f3f6fb}.modal{z-index:50;background:#0f172a73;justify-content:center;align-items:flex-start;padding:6vh 12px;display:flex;position:fixed;inset:0;overflow:auto}.modal .card{width:100%;max-width:560px}.modal .mh{border-bottom:1px solid var(--bd);justify-content:space-between;padding:14px 18px;font-size:15px;font-weight:600;display:flex}.modal .mb{padding:14px 18px}.modal .mf{border-top:1px solid var(--bd);background:#f8f9fb;border-radius:0 0 10px 10px;justify-content:flex-end;gap:8px;padding:12px 18px;display:flex}label{color:#4b5563;margin:10px 0 4px;font-size:12px;font-weight:500;display:block}.toasts{z-index:100;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:20px;right:20px}.toast{color:#fff;background:#202124;border-radius:8px;align-items:center;gap:8px;padding:10px 16px;animation:.2s in;display:flex;box-shadow:0 6px 20px #0003}.toast.err{background:var(--red)}@keyframes in{0%{opacity:0;transform:translateY(10px)}}.sk{background:linear-gradient(90deg,#eef1f5 25%,#e2e6ec 37%,#eef1f5 63%) 0 0/400% 100%;border-radius:4px;height:14px;animation:1.4s infinite sk}@keyframes sk{0%{background-position:100%}to{background-position:0}}.empty{text-align:center;color:var(--mu);padding:48px 20px}.empty .eic{background:var(--acc-l);width:56px;height:56px;color:var(--acc);border-radius:50%;place-items:center;margin:0 auto 12px;display:grid}.empty b{color:var(--tx);margin-bottom:4px;font-size:15px;display:block}.login{background:linear-gradient(135deg,#1f2633,#1a73e8);place-items:center;min-height:100%;display:grid}.login .card{width:380px;max-width:92vw;padding:28px}.err{color:var(--red)}.act{border-bottom:1px solid #eef1f5;align-items:flex-start;gap:12px;padding:12px 16px;display:flex}.act .aic{background:var(--acc-l);width:32px;height:32px;color:var(--acc);border-radius:50%;flex-shrink:0;place-items:center;display:grid}.act.done .note{color:var(--mu);text-decoration:line-through}.seg{border:1px solid var(--bd);border-radius:6px;display:inline-flex;overflow:hidden}.seg button{border:0;border-right:1px solid var(--bd);background:#fff;padding:6px 12px}.seg button:last-child{border:0}.seg button.on{background:var(--acc-l);color:var(--acc-d);font-weight:600}.hamb{background:0 0;border:0;padding:4px;display:none}@media (width<=900px){.side{z-index:40;transition:transform .2s;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%)}.side.open{transform:none}.hamb{display:block}.content{padding:12px}.hm{display:none}.charts{grid-template-columns:1fr}.top{padding:0 10px}.top .ctxt{display:none}}h1,h2,h3,.brand,.kpi .v,.modal .mh,.lbrand{font-family:var(--hf);letter-spacing:-.02em}.side{background:linear-gradient(180deg,var(--navy) 0%,var(--navy2) 100%);color:#c7c5e6}.brand{border-bottom:1px solid #ffffff14;font-size:15px}.brand span{flex-direction:column;line-height:1.15;display:flex}.brand small{color:#c4b5fd;letter-spacing:.12em;font-family:Plus Jakarta Sans;font-size:11px;font-weight:600}.side nav button{border-radius:10px}.side nav button:hover{background:#ffffff0f}.side nav button.on{background:var(--grad);font-weight:600;box-shadow:0 6px 22px -8px #7c3aeda6}.top{-webkit-backdrop-filter:blur(14px);color:#fff;background:#0b0b1fd1;border-bottom:1px solid #ffffff14}.top .hamb{color:#fff}.search input{color:#fff;background:#ffffff14;border-color:#ffffff1f}.search input::placeholder{color:#a9a7cc}.search input:focus{color:var(--tx);background:#fff}.avatar{background:var(--grad)}.btn{background:var(--grad);border:0;border-radius:12px;padding:8px 16px;font-weight:600;transition:transform .15s,box-shadow .15s;box-shadow:0 6px 22px -8px #7c3aeda6}.btn:hover{background:var(--grad);transform:translateY(-1px);box-shadow:0 10px 26px -8px #7c3aedbf}.btn:disabled{transform:none}.btn.ghost{color:var(--tx);border:1px solid var(--bd);box-shadow:none;background:#fff}.btn.ghost:hover{border-color:var(--acc);color:var(--acc);background:#fff}.btn.danger{box-shadow:none;background:#fff;border:1px solid #f3c7c3}.btn.sm{border-radius:10px;padding:5px 10px}.card{border-color:var(--bd);border-radius:14px;transition:box-shadow .2s;box-shadow:0 1px 2px #1413270a}.card:hover{box-shadow:0 14px 34px -18px #4c1d9559}input,select,textarea{border-color:var(--bd);border-radius:8px}input:focus,select:focus,textarea:focus{border-color:var(--ring);box-shadow:0 0 0 3px #22d3ee40}th{color:var(--mu);background:#f8f7ff}tbody tr:hover{background:#f5f3ff}td{border-bottom-color:#eeedf8}.kpi{position:relative;overflow:hidden}.kpi:before{content:"";background:var(--grad);height:3px;position:absolute;top:0;left:0;right:0}.kpi .ic{border-radius:12px}.col{background:#eceafb;border-radius:14px}.col .ch{border-radius:14px 14px 0 0}.dcard{border-radius:10px}.dcard:hover{border-color:var(--acc);box-shadow:0 8px 20px -12px #7c3aed80}.rec-h .big{background:var(--grad);border-radius:14px}.tabs button.on{color:var(--acc)}.toast{background:var(--navy2)}.modal{background:#0b0b1f8c}.login{color:#fff;background:radial-gradient(800px 400px at 15% 10%,#7c3aed59,#0000 60%),radial-gradient(700px 400px at 90% 90%,#0891b247,#0000 60%),linear-gradient(#0b0b1f,#16153a);grid-template-columns:1.1fr 1fr;align-items:center;gap:40px;padding:40px 6vw;display:grid}.login .hero{max-width:560px}.lbrand{align-items:center;gap:12px;margin-bottom:40px;font-size:20px;font-weight:700;display:flex}.eyebrow{color:#c4b5fd;letter-spacing:.16em;margin-bottom:12px;font-size:12px;font-weight:700}.login h1{font-family:var(--hf);letter-spacing:-.02em;margin:0 0 16px;font-size:44px;line-height:1.08}.gt{background:var(--grad);color:#0000;-webkit-background-clip:text;background-clip:text}.login .hero p{color:#c7c5e6;font-size:16px}.login .card{color:var(--tx);justify-self:center;box-shadow:0 30px 80px -30px #7c3aed99}@media (width<=900px){.login{grid-template-columns:1fr;padding:24px}.login h1{font-size:30px}.lbrand{margin-bottom:20px}}.navbadge{color:#fff;text-align:center;background:#a855f7;border-radius:10px;min-width:20px;margin-left:auto;padding:1px 7px;font-size:11px;font-weight:600}.side nav button.on .navbadge{color:var(--acc);background:#fff}
