*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root,:root[data-theme=dark]{--bg:#080c14;--surface:#0e1420;--surface2:#141c2e;--surface3:#1a2438;--border:#1e2d45;--border2:#243350;--text:#e2e8f5;--text2:#8fa3c0;--text3:#4a6080;--accent:#3b7ff5;--aglow:rgba(59,127,245,.18);--green:#10d48a;--gbg:rgba(16,212,138,.1);--amber:#f5a623;--abg:rgba(245,166,35,.1);--red:#f53b57;--rbg:rgba(245,59,87,.1);--teal:#00d4e8;--tbg:rgba(0,212,232,.1);--shadow:0 4px 24px rgba(0,0,0,.4);--ssm:0 1px 6px rgba(0,0,0,.3);--shine:linear-gradient(135deg,hsla(0,0%,100%,.03),transparent 60%);--radius:10px;--radius-sm:6px;--radius-lg:14px}:root[data-theme=light]{--bg:#f0f4fb;--surface:#fff;--surface2:#f7f9fd;--surface3:#eef2f9;--border:#dde4f0;--border2:#c8d4e8;--text:#0d1626;--text2:#4a6080;--text3:#8fa3c0;--accent:#1a56db;--aglow:rgba(26,86,219,.1);--green:#0a8c5a;--gbg:rgba(10,140,90,.08);--amber:#c47a00;--abg:rgba(196,122,0,.08);--red:#c41230;--rbg:rgba(196,18,48,.08);--teal:#0077a8;--tbg:rgba(0,119,168,.08);--shadow:0 4px 20px rgba(0,0,0,.08);--ssm:0 1px 4px rgba(0,0,0,.06);--shine:none}html{font-size:14px}body{font-family:Inter,system-ui,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background .3s,color .3s}a{text-decoration:none;color:inherit}button{font-family:inherit;cursor:pointer}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:var(--surface)}::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text3)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.font-display{font-family:Syne,sans-serif}.font-stat{font-family:DM Mono,monospace;font-weight:500;letter-spacing:-.02em}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--ssm);background-image:var(--shine)}.btn-primary{background:var(--accent);color:#fff;border:none;border-radius:var(--radius-sm);font-weight:600;padding:7px 14px;font-size:.76rem;transition:opacity .15s}.btn-primary:hover{opacity:.88}.btn-secondary{background:transparent;color:var(--text2);border:1px solid var(--border);border-radius:var(--radius-sm);font-weight:600;padding:7px 12px;font-size:.76rem;transition:border-color .15s,color .15s}.btn-secondary:hover{border-color:var(--accent);color:var(--accent)}.badge{font-size:.64rem;font-weight:700;padding:2px 7px;border-radius:99px;display:inline-block}.badge-green{background:var(--gbg);color:var(--green)}.badge-red{background:var(--rbg);color:var(--red)}.badge-amber{background:var(--abg);color:var(--amber)}.badge-blue{background:var(--aglow);color:var(--accent)}.badge-teal{background:var(--tbg);color:var(--teal)}.input{width:100%;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:.84rem;padding:9px 12px;outline:none;font-family:inherit;transition:border-color .15s}.input:focus{border-color:var(--accent)}.layout-with-sidebar{display:flex;min-height:100vh}.sidebar{width:226px;background:var(--surface);border-right:1px solid var(--border);position:fixed;top:0;left:0;z-index:200;overflow-y:auto;transition:background .3s,border-color .3s}.main-content,.sidebar{min-height:100vh;display:flex;flex-direction:column}.main-content{margin-left:226px;flex:1;min-width:0;overflow-x:hidden;width:calc(100vw - 226px)}.topbar{background:var(--surface);border-bottom:1px solid var(--border);height:54px;padding:0 22px;display:flex;align-items:center;gap:11px;position:sticky;top:0;z-index:100;transition:background .3s}@media (max-width:768px){.sidebar{transform:translateX(-100%);transition:transform .25s ease}.sidebar.open{transform:translateX(0)}.main-content{margin-left:0}.mobile-menu-btn{display:flex!important}.mobile-backdrop{display:block!important}}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.3)}}.react-grid-item.react-grid-placeholder{background:var(--accent)!important;opacity:.1!important;border-radius:10px!important}.react-grid-item.react-draggable-dragging{box-shadow:0 16px 48px rgba(0,0,0,.5)!important;z-index:100!important}