/* LPM v4 Pro — Styles */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{--bg:#0c0f14;--bs:#12161e;--be:#1a1f2b;--bh:#1e2433;--ba:#252b3a;--bi:#151a24;--bd:#2a3040;--bd2:#222838;--bdf:#4c7fff;--t1:#e8ecf4;--t2:#8892a6;--t3:#5a6478;--ac:#4c7fff;--ac2:#6b94ff;--am:rgba(76,127,255,.1);--ab:rgba(76,127,255,.22);--gn:#34d399;--gm:rgba(52,211,153,.09);--gb:rgba(52,211,153,.22);--rd:#f87171;--rm:rgba(248,113,113,.09);--rb:rgba(248,113,113,.22);--yl:#fbbf24;--ym:rgba(251,191,36,.09);--yb:rgba(251,191,36,.22);--pr:#a78bfa;--pm:rgba(167,139,250,.09);--pb:rgba(167,139,250,.22);--or:#fb923c;--om:rgba(251,146,60,.09);--ob:rgba(251,146,60,.22);--sh:0 4px 20px rgba(0,0,0,.35);--si:#0f1219;--pn:#12161e}
.light{--bg:#f4f6f9;--bs:#fff;--be:#fff;--bh:#f0f2f5;--ba:#e8ebf0;--bi:#f4f6f9;--bd:#e0e3e9;--bd2:#edf0f4;--t1:#1a1f2b;--t2:#64748b;--t3:#94a3b8;--am:rgba(76,127,255,.06);--ab:rgba(76,127,255,.16);--gm:rgba(16,185,129,.06);--gb:rgba(16,185,129,.16);--gn:#10b981;--rm:rgba(239,68,68,.05);--rb:rgba(239,68,68,.16);--rd:#ef4444;--ym:rgba(245,158,11,.06);--yb:rgba(245,158,11,.16);--yl:#f59e0b;--pm:rgba(139,92,246,.05);--pb:rgba(139,92,246,.16);--pr:#8b5cf6;--om:rgba(251,146,60,.06);--ob:rgba(251,146,60,.16);--or:#f97316;--sh:0 4px 20px rgba(0,0,0,.06);--si:#fff;--pn:#fff}
html{font-size:13.5px}body{font-family:'DM Sans','Noto Color Emoji',system-ui,sans-serif;background:var(--bg);color:var(--t1);min-height:100vh;-webkit-font-smoothing:antialiased;transition:background .22s,color .22s}
::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--bd);border-radius:3px}::selection{background:var(--ac);color:#fff}.mono{font-family:'JetBrains Mono',monospace}
.app{display:flex;min-height:100vh}.sidebar{width:230px;position:fixed;left:0;top:0;bottom:0;z-index:100;background:var(--si);border-right:1px solid var(--bd);display:flex;flex-direction:column;padding:16px 10px;transition:background .22s}.main{margin-left:230px;flex:1;min-width:0;padding:0 24px 60px}
.s-logo{display:flex;align-items:center;gap:8px;padding:0 7px;margin-bottom:22px}.s-logo-ic{width:28px;height:28px;border-radius:7px;background:var(--ac);display:flex;align-items:center;justify-content:center;flex-shrink:0}.s-logo-t{font-size:1.05rem;font-weight:800;letter-spacing:-.03em}
.s-nav{flex:1;display:flex;flex-direction:column;gap:2px}.s-it{display:flex;align-items:center;gap:8px;padding:9px 11px;border-radius:9px;font-size:.84rem;font-weight:500;color:var(--t2);cursor:pointer;border:none;background:none;width:100%;text-align:left;font-family:inherit;transition:all .12s;flex-wrap:wrap}.s-it:hover{background:var(--bh);color:var(--t1)}.s-it.on{background:var(--am);color:var(--ac);font-weight:600;border:1px solid var(--ab)}.s-badge{padding:2px 8px;border-radius:6px;font-size:.66rem;font-weight:700;background:var(--ac);color:#fff;line-height:1.4}.s-badge-wrap{margin-left:auto;display:flex;gap:4px;align-items:center;flex-shrink:0}
.s-foot{padding-top:12px;border-top:1px solid var(--bd);display:flex;flex-direction:column;gap:8px}.s-theme{width:32px;height:32px;border-radius:8px;cursor:pointer;background:var(--be);border:1px solid var(--bd);color:var(--t2);display:flex;align-items:center;justify-content:center;transition:all .12s;font-size:.9rem}.s-theme:hover{background:var(--bh);color:var(--t1)}.s-user{display:flex;align-items:center;justify-content:space-between;font-size:.78rem;color:var(--t3);padding:0 4px}
.topbar{display:flex;align-items:center;gap:10px;padding:13px 0;border-bottom:1px solid var(--bd2);margin-bottom:16px;position:sticky;top:0;z-index:50;background:var(--bg);transition:background .22s;flex-wrap:wrap}.topbar h2{font-size:1.2rem;font-weight:700;letter-spacing:-.02em}.topbar .sub{color:var(--t3);font-size:.82rem}
.stats{display:grid;grid-template-columns:repeat(5,1fr);gap:9px;margin-bottom:20px}.st{background:var(--bs);border:1px solid var(--bd);border-radius:11px;padding:13px 15px;transition:all .13s}.st:hover{border-color:var(--ab);transform:translateY(-1px);box-shadow:var(--sh)}.st-v{font-size:1.45rem;font-weight:800;letter-spacing:-.03em}.st-l{font-size:.7rem;color:var(--t3);font-weight:500;margin-top:1px}
.btn{display:inline-flex;align-items:center;gap:5px;padding:7px 14px;border-radius:8px;font-size:.8rem;font-weight:600;font-family:inherit;cursor:pointer;border:1px solid var(--bd);background:var(--be);color:var(--t2);transition:all .12s;white-space:nowrap}.btn:hover{background:var(--bh);color:var(--t1)}.btn-p{background:var(--ac);border-color:var(--ac);color:#fff}.btn-p:hover{background:var(--ac2)}.btn-d{background:var(--rm);border-color:var(--rb);color:var(--rd)}.btn-d:hover{background:var(--rd);color:#fff}.btn-g{background:var(--gm);border-color:var(--gb);color:var(--gn)}.btn-g:hover{background:var(--gn);color:#fff}.btn-gh{background:transparent;border-color:transparent;color:var(--t2)}.btn-gh:hover{background:var(--bh)}.btn-s{padding:5px 10px;font-size:.76rem;border-radius:7px}.btn-f{width:100%;justify-content:center}
.cp{display:inline-flex;align-items:center;padding:3px 8px;background:var(--bs);border:1px solid var(--bd);border-radius:5px;font-size:.7rem;color:var(--t3);cursor:pointer;font-family:inherit;font-weight:600;transition:all .12s;white-space:nowrap}.cp:hover{border-color:var(--ac);color:var(--ac)}.cp.ok{background:var(--gm);border-color:var(--gb);color:var(--gn)}
.fbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:16px}.f-srch{flex:1 1 200px;max-width:320px;position:relative}.f-srch input{width:100%;padding:8px 11px 8px 32px;background:var(--bs);border:1px solid var(--bd);border-radius:8px;color:var(--t1);font-size:.84rem;font-family:inherit;outline:none;transition:border .13s}.f-srch input:focus{border-color:var(--bdf);box-shadow:0 0 0 3px var(--am)}.f-srch svg{position:absolute;left:9px;top:50%;transform:translateY(-50%);color:var(--t3);pointer-events:none}.f-sel{padding:8px 11px;background:var(--bs);border:1px solid var(--bd);border-radius:8px;color:var(--t2);font-size:.8rem;font-family:inherit;cursor:pointer;outline:none;min-width:85px}.f-sel.on{border-color:var(--ac);color:var(--ac)}.f-sel option{background:var(--bs);color:var(--t1)}
.tw{background:var(--bs);border:1px solid var(--bd);border-radius:11px;overflow:hidden}.th{display:grid;gap:6px;padding:9px 16px;font-size:.66rem;font-weight:700;color:var(--t3);text-transform:uppercase;letter-spacing:.06em;background:var(--be);border-bottom:1px solid var(--bd);user-select:none}.th span{cursor:pointer;display:flex;align-items:center;gap:3px}.th span:hover{color:var(--t2)}.th .so{color:var(--ac)}
.dr{display:grid;gap:6px;padding:10px 16px;align-items:center;cursor:pointer;border-bottom:1px solid var(--bd2);transition:background .08s}.dr:hover{background:var(--bh)}.dr.exp{background:var(--ba)}.dr.arch{opacity:.4}.dom{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9rem}.dom.arch{text-decoration:line-through;color:var(--t3)}.met{font-size:.78rem;color:var(--t2)}.drv{font-weight:800;color:var(--ac);font-size:.84rem}.geov{font-weight:700;font-size:.78rem}.nm{font-size:.74rem;font-weight:700;color:var(--t3);text-align:center}.cnt{font-size:.72rem;font-weight:700;text-align:center;padding:2px 0;border-radius:6px}.chv{transition:transform .16s;flex-shrink:0;color:var(--t3)}.chv.op{transform:rotate(90deg);color:var(--ac)}
.tg{display:inline-flex;font-size:.7rem;padding:2px 8px;border-radius:5px;font-weight:600;white-space:nowrap;border:1px solid transparent}.tg-mc{color:var(--yl);background:var(--ym);border-color:var(--yb)}.tg-mo{color:var(--ac);background:var(--am);border-color:var(--ab)}.tg-pc{color:var(--pr);background:var(--pm);border-color:var(--pb)}.tg-po{color:var(--gn);background:var(--gm);border-color:var(--gb)}.tg-sw{color:var(--rd);background:var(--rm);border-color:var(--rb)}.tg-tc{color:var(--or);background:var(--om);border-color:var(--ob)}.tg-ud{color:var(--yl);background:var(--ym);border-color:var(--yb);animation:pulse 2s infinite}@keyframes pulse{0%,100%{opacity:1}50%{opacity:.6}}.tg-w{color:var(--pr);background:var(--pm);font-size:.68rem}.tg-pt{color:var(--ac);background:var(--am);border-color:var(--ab);font-size:.68rem}
.det{background:var(--be);border-bottom:1px solid var(--bd)}.det-bar{display:flex;gap:6px;padding:9px 16px 9px 42px;border-bottom:1px solid var(--bd2);flex-wrap:wrap}.creds{display:none;gap:8px;padding:8px 16px 9px 42px;flex-wrap:wrap}.creds.show{display:flex}.cred{display:flex;align-items:center;gap:6px;padding:6px 11px;background:var(--bg);border-radius:8px;border:1px solid var(--bd);flex:1 1 170px;min-width:0}.cred-l{font-size:.62rem;color:var(--t3);min-width:44px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.cred-v{flex:1;font-size:.78rem;color:var(--t1);font-family:'JetBrains Mono',monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pg-r{display:grid;gap:6px;padding:8px 16px 8px 30px;cursor:pointer;align-items:center;transition:background .08s;border-bottom:1px solid var(--bd2)}.pg-r:hover{background:var(--bh)}
.lk-wrap{padding:4px 16px 10px 52px;display:flex;flex-direction:column;gap:4px}.lk-toolbar{display:flex;gap:6px;margin-bottom:6px;flex-wrap:wrap}.lk-r{display:flex;align-items:center;gap:7px;padding:7px 11px;background:var(--bg);border-radius:8px;border:1px solid var(--bd);transition:border-color .1s;flex-wrap:wrap}.lk-r:hover{border-color:var(--ab)}.lk-proj{font-size:.84rem;font-weight:600;min-width:0}.lk-anchor{font-size:.78rem;color:var(--t2)}.lk-part{margin-left:auto;display:flex;align-items:center;gap:5px;flex-shrink:0}.lk-date{font-size:.68rem;color:var(--t3);font-family:'JetBrains Mono',monospace}
.p-ov{position:fixed;inset:0;z-index:200;background:rgba(0,0,0,.28);backdrop-filter:blur(2px)}.panel{position:fixed;right:0;top:0;bottom:0;z-index:201;width:480px;max-width:100vw;background:var(--pn);border-left:1px solid var(--bd);box-shadow:var(--sh);display:flex;flex-direction:column;animation:slIn .18s ease;transition:background .22s}@keyframes slIn{from{transform:translateX(14px);opacity:0}to{transform:translateX(0);opacity:1}}.p-hd{display:flex;justify-content:space-between;align-items:center;padding:14px 20px;border-bottom:1px solid var(--bd);flex-shrink:0}.p-hd h3{font-size:1rem;font-weight:700}.p-cl{width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:8px;cursor:pointer;background:var(--be);border:1px solid var(--bd);color:var(--t3);font-size:.9rem}.p-cl:hover{color:var(--t1)}.p-bd{flex:1;overflow-y:auto;padding:16px 20px 20px}.ig{margin-bottom:12px}.ig label{display:block;font-size:.68rem;font-weight:600;color:var(--t2);margin-bottom:4px;text-transform:uppercase;letter-spacing:.04em}.ig input,.ig select,.ig textarea{width:100%;padding:8px 11px;background:var(--bi);border:1px solid var(--bd);border-radius:8px;color:var(--t1);font-size:.84rem;font-family:inherit;outline:none;transition:border .13s}.ig input:focus,.ig select:focus,.ig textarea:focus{border-color:var(--bdf);box-shadow:0 0 0 3px var(--am)}.ig textarea{resize:vertical;font-family:'JetBrains Mono',monospace;font-size:.78rem;line-height:1.5}.p-acts{display:flex;gap:8px;margin-top:16px;padding-top:12px;border-top:1px solid var(--bd)}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}.divider{height:1px;background:var(--bd);margin:12px 0}
.toast{position:fixed;bottom:18px;right:18px;padding:10px 20px;background:var(--bs);border:1px solid var(--gb);border-radius:10px;color:var(--gn);font-size:.84rem;font-weight:600;box-shadow:var(--sh);z-index:9999;animation:toIn .18s ease;pointer-events:none}@keyframes toIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
.empty{text-align:center;padding:44px 20px;color:var(--t3);font-size:.86rem}.view{display:none}.view.on{display:block;animation:fadeV .15s ease}@keyframes fadeV{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}
.ctx-bar{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--bs);border:1px solid var(--bd);border-radius:12px;padding:8px 16px;display:flex;align-items:center;gap:10px;box-shadow:var(--sh);z-index:150;animation:toIn .18s ease}.ctx-bar .ctx-count{font-size:.82rem;font-weight:700;color:var(--ac)}
.tabs{display:flex;gap:2px;margin-bottom:16px;background:var(--be);border-radius:10px;padding:3px;border:1px solid var(--bd);width:fit-content;flex-wrap:wrap}.tab{padding:7px 14px;border-radius:8px;font-size:.78rem;font-weight:600;color:var(--t3);cursor:pointer;border:none;background:none;font-family:inherit;transition:all .12s;white-space:nowrap}.tab:hover{color:var(--t1);background:var(--bh)}.tab.on{background:var(--ac);color:#fff;box-shadow:0 2px 8px rgba(76,127,255,.25)}.tab-view{display:none}.tab-view.on{display:block;animation:fadeV .15s ease}
.part-card{background:var(--bs);border:1px solid var(--bd);border-radius:12px;overflow:hidden;margin-bottom:12px;transition:border-color .12s}.part-card:hover{border-color:var(--ab)}.part-hd{padding:13px 16px;background:var(--be);border-bottom:1px solid var(--bd);display:flex;align-items:center;gap:10px;cursor:pointer;transition:background .1s;flex-wrap:wrap}.part-hd:hover{background:var(--bh)}.part-hd .part-name{font-weight:700;color:var(--ac);font-family:'JetBrains Mono',monospace;font-size:.86rem}.part-hd .part-date{font-size:.74rem;color:var(--t3);font-family:'JetBrains Mono',monospace;background:var(--bg);padding:2px 8px;border-radius:5px}.part-hd .part-cnt{font-size:.72rem;font-weight:600;color:var(--t2);background:var(--ba);padding:3px 10px;border-radius:6px}
.tk{padding:14px 16px;transition:background .08s;margin:6px 0;border-radius:10px;border:1px solid var(--bd);background:var(--bs)}.tk:hover{background:var(--bh);border-color:var(--ab)}.tk-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}.tk-donor{font-weight:700;font-size:.88rem}.tk-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px;padding:6px 0;border-top:1px solid var(--bd2)}.tk-bar a{color:var(--ac);font-size:.8rem;font-family:'JetBrains Mono',monospace;text-decoration:none;border-bottom:1px dashed var(--ab)}.tk-bar a:hover{color:var(--ac2)}.tk-cred{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;background:var(--bg);border:1px solid var(--bd);border-radius:5px;font-size:.7rem;color:var(--t2);cursor:pointer;font-family:'JetBrains Mono',monospace;transition:all .12s;white-space:nowrap;user-select:none}.tk-cred:hover{border-color:var(--ac);color:var(--ac)}.tk-cred.ok{background:var(--gm);border-color:var(--gb);color:var(--gn)}.tk-cred .tk-cred-label{font-size:.6rem;font-weight:700;color:var(--t3);text-transform:uppercase;font-family:'DM Sans',sans-serif;margin-right:2px}
.tk-links{display:flex;flex-direction:column;gap:3px;margin-bottom:6px}.tk-lk{display:flex;align-items:center;gap:6px;padding:4px 8px;background:var(--bg);border-radius:6px;border:1px solid var(--bd);font-size:.78rem}.tk-lk-proj{font-size:.84rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}.tk-lk-anch{color:var(--t2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px}
.dist-zone{background:var(--bs);border:1px solid var(--bd);border-radius:12px;padding:20px;margin-bottom:16px}.dist-ok{background:var(--gm);border:1px solid var(--gb);border-radius:10px;padding:12px 16px;margin-bottom:8px}.dist-fail{background:var(--rm);border:1px solid var(--rb);border-radius:10px;padding:12px 16px;margin-bottom:8px}
.assign-badge{font-size:.64rem;padding:1px 7px;border-radius:4px;font-weight:700}
@media(max-width:860px){.sidebar{display:none}.main{margin-left:0}.stats{grid-template-columns:repeat(2,1fr)}}

/* Multi-select filter dropdowns */
.filter-dropdown{position:absolute;top:100%;left:0;z-index:200;background:var(--bs);border:1px solid var(--bd);border-radius:10px;padding:8px;min-width:160px;max-height:280px;overflow-y:auto;box-shadow:var(--sh);margin-top:4px}
.f-check{display:flex;align-items:center;gap:6px;padding:3px 6px;font-size:.76rem;cursor:pointer;border-radius:4px;white-space:nowrap}
.f-check:hover{background:var(--bh)}
.f-check input{accent-color:var(--ac)}
.f-dd-actions{padding-top:6px;margin-top:6px;border-top:1px solid var(--bd);display:flex;gap:4px}

/* Range filter chip */
.filter-range-chip{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;background:var(--bs);border:1px solid var(--bd);border-radius:7px}
.filter-range-chip input:focus{border-color:var(--ac)}
