:root{--bg:#09090D;--bg2:#111116;--card:#111116;--line:#ffffff17;--p:#8B5CF6;--v:#A855F7;--li:#C4B5FD;--mut:#A1A1AA;--txt:#fff;color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:radial-gradient(900px 520px at 90% -10%,#8B5CF633 0,transparent 60%),radial-gradient(700px 480px at -10% 110%,#A855F71f 0,transparent 60%),var(--bg);background-attachment:fixed;color:var(--txt);font:15px/1.5 Inter,sans-serif}h1,h2,.kpi strong,.logo-fb{font-family:Chakra Petch,sans-serif}h1{margin:0 12px 0 0;font-size:1.65rem;letter-spacing:.2px}h2{font-size:1.05rem;margin:0 0 12px;color:#fff}.ico{width:18px;height:18px;flex:none}.app{display:flex;min-height:100vh}nav{width:236px;padding:20px 12px;background:linear-gradient(180deg,#111116,#09090d);border-right:1px solid var(--line);display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh}.logo{display:flex;align-items:center;min-height:56px;padding:4px 8px 16px;margin-bottom:10px;border-bottom:1px solid var(--line)}.logo-img{mix-blend-mode:lighten;max-width:100%;max-height:64px;width:auto;height:auto;object-fit:contain}.logo-fb{font-size:1.45rem;font-weight:700;color:#fff;letter-spacing:1px}.logo-fb b{color:var(--p);margin-left:4px}nav button{display:flex;align-items:center;gap:12px;background:none;border:0;color:var(--mut);text-align:left;padding:11px 12px;border-radius:10px;cursor:pointer;font:inherit;transition:background .2s,color .2s,transform .2s}nav button:hover{color:#fff;background:#8b5cf61f;transform:translate(2px)}nav button.on{color:#fff;background:linear-gradient(90deg,#8b5cf6,#a855f7aa);box-shadow:0 6px 20px #8b5cf640}.sp{flex:1}main{flex:1;padding:26px 28px;min-width:0}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:18px}.card{background:linear-gradient(180deg,#14141b,#111116);border:1px solid var(--line);border-radius:16px;padding:18px;margin-bottom:14px;box-shadow:0 10px 30px #0006}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-bottom:14px}.kpi{--c:#8B5CF6;position:relative;overflow:hidden;background:linear-gradient(160deg,color-mix(in srgb,var(--c) 16%,#111116),#111116 65%);border:1px solid color-mix(in srgb,var(--c) 30%,transparent);border-radius:16px;padding:16px;display:flex;flex-direction:column;gap:2px;box-shadow:0 10px 28px #0006;transition:transform .2s,box-shadow .2s}.kpi:hover{transform:translateY(-2px);box-shadow:0 12px 32px color-mix(in srgb,var(--c) 28%,transparent)}.kpi em{position:absolute;top:14px;right:14px;width:36px;height:36px;border-radius:10px;display:grid;place-items:center;color:var(--c);background:color-mix(in srgb,var(--c) 18%,transparent)}.kpi span{color:var(--mut);font-size:.82rem;padding-right:44px}.kpi strong{font-size:1.55rem;margin-top:4px}.kpi small{color:var(--mut)}.kpi small.up{color:#34d399}.kpi small.dn{color:#f472b6}.charts{display:grid;grid-template-columns:2fr 1fr;gap:14px}input,select,textarea{background:#09090d;color:var(--txt);border:1px solid var(--line);border-radius:10px;padding:10px 12px;font:inherit;width:100%;transition:border-color .2s,box-shadow .2s}input:hover,select:hover,textarea:hover{border-color:#8b5cf66e}.row input,.row select{width:auto}input:focus,select:focus,textarea:focus{outline:0;border-color:var(--p);box-shadow:0 0 0 3px #8b5cf633}button:focus-visible{outline:2px solid var(--li);outline-offset:2px}label{display:block;margin-bottom:12px;font-size:.85rem;color:var(--mut)}label>*{margin-top:5px}.btn{background:linear-gradient(135deg,#8b5cf6,#a855f7);color:#fff;border:0;border-radius:10px;padding:10px 18px;font-weight:600;cursor:pointer;box-shadow:0 6px 18px #8b5cf64d;transition:transform .2s,box-shadow .2s,filter .2s}.btn:hover{transform:translateY(-1px);box-shadow:0 8px 24px #a855f777;filter:brightness(1.08)}.btn.ghost{background:none;border:1px solid #8B5CF68c;color:var(--li);box-shadow:none}.btn.ghost:hover{background:#8b5cf626}.btn:disabled{opacity:.5;transform:none}.scroll{overflow-x:auto;border:1px solid var(--line);border-radius:16px;background:var(--card);box-shadow:0 10px 30px #0006}table{width:100%;border-collapse:collapse}th,td{padding:12px 14px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}thead th{background:#8b5cf614;color:var(--li)}tbody tr{transition:background .15s}tbody tr:hover{background:#8b5cf610}tbody tr:last-child td{border-bottom:0}th button{background:none;border:0;color:var(--li);font:inherit;font-weight:600;cursor:pointer;padding:0}.act button{background:none;border:0;color:var(--li);cursor:pointer;margin-right:10px;font:inherit;transition:color .15s}.act button:hover{color:#fff}.act button:last-child:hover{color:#f472b6}.err{color:#f472b6}.ok{color:#34d399}code{color:var(--li)}.sub{color:var(--mut);margin:4px 0 16px}.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#09090dcc;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:grid;place-items:start center;overflow:auto;padding:24px 16px;z-index:10;animation:fade .18s ease}.modal .card{width:min(580px,100%);border-color:#8b5cf673;box-shadow:0 20px 60px #8b5cf633;animation:pop .2s ease}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:translateY(8px) scale(.98)}}.center{min-height:100vh;display:grid;place-items:center;padding:16px}.center .card{width:min(400px,100%)}.login{padding:28px}.login .logo{justify-content:center;border:0;padding-bottom:6px}.login h1{margin:8px 0 0;text-align:center}.login .sub{text-align:center}.login .btn{width:100%;margin-top:6px}@media (max-width:1000px){.charts{grid-template-columns:1fr}nav{width:200px}}@media (max-width:800px){.app{flex-direction:column;padding-bottom:70px}nav{position:fixed;bottom:0;left:0;right:0;top:auto;width:100%;height:auto;flex-direction:row;gap:2px;overflow-x:auto;border:0;border-top:1px solid #8B5CF66e;background:#09090df2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:5;padding:6px}nav button{flex-direction:column;gap:2px;min-width:68px;padding:8px 6px;font-size:.68rem;text-align:center;justify-content:center;transform:none!important}nav button.on{box-shadow:none}.logo,.sp{display:none}main{padding:16px 14px}h1{font-size:1.4rem}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
