:root{--bg:#0f1220;--panel:#171a2b;--panel2:#1e2238;--line:#2a2f4a;--txt:#e8eaf3;--muted:#9aa0bd;--soft:#c3c7de;--accent:#6c8cff;--accent2:#3ad0a4;--warn:#ffb454;--danger:#ff6b6b;--chip:#242a44;--shadow:0 8px 30px rgba(0,0,0,.35)}body[data-theme=light]{--bg:#eef1f7;--panel:#ffffff;--panel2:#f5f7fb;--line:#e1e5ef;--txt:#1b1f2e;--muted:#6a7288;--soft:#39415a;--chip:#eceff6;--shadow:0 8px 26px rgba(30,40,80,.12)}*{box-sizing:border-box}html,body{margin:0;height:100%}body{background:var(--bg);color:var(--txt);font:15px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Inter,Arial,sans-serif}a{color:var(--accent)}button{font-family:inherit}.app{display:flex;min-height:100vh}.side{width:220px;flex:0 0 220px;background:var(--panel);border-right:1px solid var(--line);padding:18px 12px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:6px}.brand{font-weight:800;font-size:16px;letter-spacing:.2px;padding:6px 10px 14px;color:var(--txt)}.brand small{display:block;font-weight:500;color:var(--muted);font-size:11px;margin-top:3px}.nav{display:flex;flex-direction:column;gap:4px}.nav button{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:transparent;border:0;color:var(--soft);padding:10px 12px;border-radius:10px;cursor:pointer;font-size:14px}.nav button:hover{background:var(--panel2)}.nav button.active{background:var(--accent);color:#fff;font-weight:600}.nav .ico{width:18px;text-align:center}.side .spacer{flex:1}.side .tools{display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--line);padding-top:10px}.side .tools button{font-size:12px;color:var(--muted);background:var(--panel2);border:1px solid var(--line);padding:8px;border-radius:8px;cursor:pointer}.side .tools button:hover{color:var(--txt)}.main{flex:1;min-width:0;padding:22px 26px 60px}.head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px;flex-wrap:wrap}.head h1{font-size:22px;margin:0}.head p{margin:2px 0 0;color:var(--muted);font-size:13px}.btn{background:var(--accent);color:#fff;border:0;padding:9px 14px;border-radius:9px;cursor:pointer;font-weight:600;font-size:13px}.btn:hover{filter:brightness(1.08)}.btn.ghost{background:var(--panel2);border:1px solid var(--line);color:var(--soft)}.btn.sm{padding:6px 10px;font-size:12px}.btn.danger{background:var(--danger)}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:22px}.stat{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:14px 16px}.stat .n{font-size:26px;font-weight:800}.stat .l{color:var(--muted);font-size:12px;margin-top:2px}.stat .accent{color:var(--accent)}.stat .g{color:var(--accent2)}.stat .w{color:var(--warn)}.pipe{display:flex;gap:14px;overflow-x:auto;padding-bottom:14px}.col{flex:0 0 250px;background:var(--panel);border:1px solid var(--line);border-radius:14px;display:flex;flex-direction:column;max-height:calc(100vh - 220px)}.col h3{margin:0;padding:12px 14px;font-size:12.5px;letter-spacing:.4px;text-transform:uppercase;color:var(--soft);border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;position:sticky;top:0;background:var(--panel);border-radius:14px 14px 0 0}.col h3 .cnt{background:var(--chip);color:var(--muted);border-radius:20px;padding:1px 9px;font-size:11px}.col .body{padding:10px;display:flex;flex-direction:column;gap:9px;overflow-y:auto}.ccard{background:var(--panel2);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:10px;padding:10px 11px;cursor:pointer;transition:.12s}.ccard:hover{transform:translateY(-1px);border-color:var(--accent)}.ccard .name{font-weight:700;font-size:14px}.ccard .meta{color:var(--muted);font-size:12px;margin-top:3px;display:flex;gap:8px;flex-wrap:wrap}.ccard .bar{height:6px;background:var(--chip);border-radius:6px;margin-top:9px;overflow:hidden}.ccard .bar>i{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent2))}.tag{display:inline-block;background:var(--chip);color:var(--soft);border-radius:20px;padding:1px 8px;font-size:11px}.empty{color:var(--muted);font-size:12px;text-align:center;padding:16px 6px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#060812a8;display:none;align-items:flex-start;justify-content:center;padding:40px 16px;z-index:50;overflow-y:auto}.overlay.open{display:flex}.modal{background:var(--panel);border:1px solid var(--line);border-radius:16px;width:100%;max-width:760px;box-shadow:var(--shadow)}.modal .mhead{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:18px 20px;border-bottom:1px solid var(--line)}.modal .mhead input.title{background:transparent;border:0;color:var(--txt);font-size:19px;font-weight:800;width:100%}.modal .mhead input.title:focus{outline:1px solid var(--line);border-radius:6px}.x{background:var(--panel2);border:1px solid var(--line);color:var(--soft);width:30px;height:30px;border-radius:8px;cursor:pointer;flex:0 0 auto}.mbody{padding:16px 20px;display:flex;flex-direction:column;gap:16px}.row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.field label{display:block;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;margin-bottom:5px}.field input,.field select,.field textarea{width:100%;background:var(--panel2);border:1px solid var(--line);color:var(--txt);border-radius:9px;padding:9px 10px;font:inherit}.field textarea{min-height:70px;resize:vertical}.sec{border:1px solid var(--line);border-radius:12px;overflow:hidden}.sec>.sh{background:var(--panel2);padding:10px 13px;display:flex;justify-content:space-between;align-items:center;cursor:pointer;font-weight:700;font-size:13px}.sec>.sh .prog{font-size:11px;color:var(--muted);font-weight:500}.sec .sc{padding:6px 13px 12px}.chk{display:flex;gap:9px;align-items:flex-start;padding:5px 0;font-size:13px;color:var(--soft)}.chk input{margin-top:3px;flex:0 0 auto;width:15px;height:15px;accent-color:var(--accent2)}.chk.done span{color:var(--muted);text-decoration:line-through}.addchecklist{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.mini{font-size:12px;color:var(--muted);background:var(--panel2);border:1px solid var(--line);border-radius:20px;padding:4px 10px;cursor:pointer}.mini:hover{color:var(--txt);border-color:var(--accent)}.lib{display:flex;flex-direction:column;gap:14px}.libcat h2{font-size:15px;margin:6px 0 8px;color:var(--txt);display:flex;align-items:center;gap:8px}.libgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}.doc{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:13px 15px}.doc h4{margin:0 0 6px;font-size:14px}.doc .cl{margin-top:8px}.doc .cl div{font-size:12.5px;color:var(--soft);padding:2px 0 2px 18px;position:relative}.doc .cl div:before{content:"☐";position:absolute;left:0;color:var(--muted)}.doc .desc{font-size:12.5px;color:var(--muted);white-space:pre-wrap;margin-top:6px}.rgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}.rday{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:0;overflow:hidden}.rday h3{margin:0;padding:11px 14px;font-size:13px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.rday.today h3{background:var(--accent);color:#fff}.rday .ritems{padding:8px 12px 12px}.rtask{display:flex;gap:8px;align-items:flex-start;font-size:13px;color:var(--soft);padding:4px 0}.rtask input{margin-top:3px;accent-color:var(--accent2)}.rtask.done span{color:var(--muted);text-decoration:line-through}.badge{font-size:10px;background:var(--chip);color:var(--muted);padding:1px 7px;border-radius:20px}.hint{color:var(--muted);font-size:12.5px;margin:-6px 0 14px}.toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%);background:var(--accent2);color:#04231b;font-weight:700;padding:10px 18px;border-radius:10px;box-shadow:var(--shadow);opacity:0;transition:.25s;z-index:99}.toast.show{opacity:1}select.stageSel{background:var(--panel2);border:1px solid var(--line);color:var(--txt);border-radius:8px;padding:7px 9px;font:inherit}.cfgtabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px;border-bottom:1px solid var(--line);padding-bottom:12px}.cfgtabs button{background:var(--panel2);border:1px solid var(--line);color:var(--soft);padding:8px 14px;border-radius:20px;cursor:pointer;font-size:13px}.cfgtabs button.active{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}.cfgcard{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px 20px;margin-bottom:16px;max-width:820px}.cfgcard h3{margin:0 0 4px;font-size:15px}.cfgcard .sub{color:var(--muted);font-size:12.5px;margin:0 0 14px}.editrow{display:flex;gap:8px;align-items:center;padding:6px 0}.editrow input.txt{flex:1;background:var(--panel2);border:1px solid var(--line);color:var(--txt);border-radius:8px;padding:8px 10px;font:inherit}.editrow input.color{width:36px;height:34px;padding:0;border:1px solid var(--line);border-radius:8px;background:var(--panel2)}.iconbtn{background:var(--panel2);border:1px solid var(--line);color:var(--muted);width:32px;height:32px;border-radius:8px;cursor:pointer;flex:0 0 auto}.iconbtn:hover{color:var(--txt);border-color:var(--accent)}.iconbtn.del:hover{color:var(--danger);border-color:var(--danger)}.tplbox{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:12px;background:var(--panel2)}.tplbox .tpltitle{display:flex;gap:8px;align-items:center;margin-bottom:8px}.tplbox .tpltitle input{flex:1;background:var(--panel);border:1px solid var(--line);color:var(--txt);font-weight:700;border-radius:8px;padding:8px 10px;font:inherit}.themebtns{display:flex;gap:10px}.themebtns button{flex:1;padding:12px;border-radius:10px;border:1px solid var(--line);cursor:pointer;background:var(--panel2);color:var(--soft);font-weight:600}.themebtns button.active{border-color:var(--accent);color:var(--txt);box-shadow:0 0 0 2px var(--accent) inset}.usertable{width:100%;border-collapse:collapse}.usertable th,.usertable td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);font-size:13px}.usertable th{color:var(--muted);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.4px}.rolebadge{font-size:11px;padding:2px 9px;border-radius:20px;background:var(--chip);color:var(--soft)}.notice{background:color-mix(in srgb,var(--warn) 15%,transparent);border:1px solid var(--warn);color:var(--txt);border-radius:10px;padding:10px 14px;font-size:12.5px;margin-bottom:14px}.pf-controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:16px}.pf-search{flex:1;min-width:200px;position:relative}.pf-search input{width:100%;background:var(--panel);border:1px solid var(--line);color:var(--txt);border-radius:10px;padding:9px 12px 9px 34px;font:inherit}.pf-search:before{content:"🔍";position:absolute;left:11px;top:8px;font-size:13px;opacity:.6}.pf-chips{display:flex;gap:6px;flex-wrap:wrap}.pf-chip{background:var(--panel);border:1px solid var(--line);color:var(--soft);padding:8px 12px;border-radius:20px;cursor:pointer;font-size:12.5px;display:flex;align-items:center;gap:6px}.pf-chip.active{border-color:var(--accent);color:var(--txt);font-weight:600}.pf-chip .dot{width:9px;height:9px;border-radius:50%}.accordion{display:flex;flex-direction:column;gap:10px}.acc{background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow:hidden}.acc-head{display:flex;align-items:center;gap:12px;padding:12px 15px;cursor:pointer}.acc-head:hover{background:var(--panel2)}.acc-dot{width:11px;height:11px;border-radius:50%;flex:0 0 auto}.acc-name{font-weight:700;font-size:14.5px;min-width:150px}.acc-badge{font-size:11px;padding:2px 9px;border-radius:20px;background:color-mix(in srgb,var(--accent2) 18%,transparent);color:var(--accent2);border:1px solid color-mix(in srgb,var(--accent2) 40%,transparent)}.acc-badge.off{background:var(--chip);color:var(--muted);border-color:var(--line)}.acc-summary{margin-left:auto;display:flex;gap:16px;flex-wrap:nowrap;align-items:center}.acc-sumvals{display:flex;gap:22px;flex-wrap:nowrap;align-items:center}.acc-summary .kv{text-align:right;flex:0 0 auto;white-space:nowrap}.acc-summary .kv b{display:block;font-size:14px}.acc-summary .kv span{font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.3px}.acc-chev{color:var(--muted);transition:.2s;flex:0 0 auto}.acc.open .acc-chev{transform:rotate(90deg)}.acc-body{border-top:1px solid var(--line);padding:14px 15px;display:none}.acc.open .acc-body{display:block}.acc-meta{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:12px}.acc-meta .field{min-width:170px}.acc-meta .field label{font-size:10.5px}.acc-meta .field input,.acc-meta .field select{padding:7px 9px}.perfwrap{overflow-x:auto}table.perf{width:100%;border-collapse:collapse;font-size:12.5px;min-width:720px}table.perf th{color:var(--muted);font-weight:600;font-size:10.5px;text-transform:uppercase;letter-spacing:.3px;text-align:right;padding:6px 8px;border-bottom:1px solid var(--line)}table.perf th:first-child{text-align:left}table.perf td{padding:4px 6px;border-bottom:1px solid var(--line)}table.perf td input{width:100%;background:transparent;border:1px solid transparent;color:var(--txt);border-radius:6px;padding:5px 6px;font:inherit;text-align:right}table.perf td:first-child input{text-align:left}table.perf td input:hover{border-color:var(--line)}table.perf td input:focus{border-color:var(--accent);background:var(--panel2);outline:none}table.perf td.calc{text-align:right;color:var(--soft);padding-right:10px}table.perf .rmrow{color:var(--muted);cursor:pointer;border:0;background:transparent;font-size:14px}table.perf .rmrow:hover{color:var(--danger)}.emptybox{color:var(--muted);font-size:12.5px;padding:16px;text-align:center}.anexlist{display:flex;flex-direction:column;gap:6px;margin:8px 0}.anex{display:flex;align-items:center;gap:10px;background:var(--panel2);border:1px solid var(--line);border-radius:9px;padding:8px 10px}.anex-ic{font-size:18px;flex:0 0 auto}.anex-info{flex:1;min-width:0}.anex-name{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.anex-sub{font-size:11px;color:var(--muted)}.anex a.mini{text-decoration:none;display:inline-block}.acc-gestor{font-size:11px;color:var(--muted);background:var(--chip);padding:2px 9px;border-radius:20px;white-space:nowrap}.perfchart{margin-top:14px;border-top:1px solid var(--line);padding-top:12px}.pc-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;flex-wrap:wrap;gap:8px}.pc-head>span{font-size:12px;color:var(--soft);font-weight:600}.pc-tabs{display:flex;gap:6px}.pc-tab{background:var(--panel2);border:1px solid var(--line);color:var(--muted);padding:4px 10px;border-radius:16px;font-size:11px;cursor:pointer}.pc-tab.active{border-color:var(--accent);color:var(--txt);font-weight:600}.pc-svg{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:8px}@media (max-width:720px){.side{position:fixed;z-index:40;transform:translate(-100%);transition:.2s}.side.open{transform:none}.main{padding:16px}.row{grid-template-columns:1fr}}.menubtn{display:none}@media (max-width:720px){.menubtn{display:inline-block}}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background:var(--bg)}.login-card{width:100%;max-width:380px;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:28px 26px;box-shadow:var(--shadow)}.login-card h1{margin:0 0 4px;font-size:20px}.login-card p.sub{margin:0 0 18px;color:var(--muted);font-size:13px}.login-card .field{margin-bottom:12px}.login-card .btn{width:100%;justify-content:center;padding:11px}.errbox{background:color-mix(in srgb,var(--danger) 15%,transparent);border:1px solid var(--danger);color:var(--txt);border-radius:9px;padding:9px 12px;font-size:13px;margin-bottom:12px}.okbox{background:color-mix(in srgb,var(--accent2) 15%,transparent);border:1px solid var(--accent2);color:var(--txt);border-radius:9px;padding:9px 12px;font-size:13px;margin-bottom:12px}.loading{padding:40px;text-align:center;color:var(--muted)}.userbox{border-top:1px solid var(--line);padding-top:10px;margin-top:6px;font-size:12px;color:var(--muted)}.userbox b{color:var(--txt);display:block;font-size:13px}.spin{display:inline-block;width:16px;height:16px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;vertical-align:middle}@keyframes spin{to{transform:rotate(360deg)}}
