:root{--magic-mint:#bdf7d1;--bright-gray:#e7f4ea;--tea-green:#d2f5d3;--chinese-black:#131915;--bg:#0c100e;--surface:#131915;--surface-2:#1a211d;--border:#bdf7d114;--border-strong:#bdf7d129;--text-primary:#e7f4ea;--text-secondary:#e7f4eaa6;--text-tertiary:#e7f4ea6b;--accent:#bdf7d1;--accent-soft:#d2f5d3;--accent-dark:#0f6e56;--danger:#ff6b6b;--warn-bg:#fac8641f;--warn-text:#fac864;--success-bg:#bdf7d11f;--success-text:#bdf7d1;--info-bg:#96c8ff1a;--info-text:#9cc8ff;--r-sm:8px;--r-md:12px;--r-lg:16px;--r-xl:20px;--font-display:"Kaisei Tokumin", "DM Serif Display", serif;--font-body:"Hanken Grotesk", "DM Sans", system-ui, sans-serif}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;font-family:var(--font-body);background:var(--bg);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"ss01", "cv11";overflow:hidden}#root{width:100%;height:100%}button{cursor:pointer;color:inherit;background:0 0;border:none;font-family:inherit}input,textarea,select{color:inherit;font-family:inherit}a{color:inherit;text-decoration:none}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:99px;transition:background .2s}::-webkit-scrollbar-thumb:hover{background:var(--accent)}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton{background:linear-gradient(90deg, var(--surface) 0%, var(--surface-2) 50%, var(--surface) 100%);border-radius:var(--r-md);background-size:200% 100%;animation:1.5s infinite shimmer}@keyframes fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:.18s ease-out fade-in}.sidebar-item[data-active=false]:hover{color:var(--text-secondary);background:#bdf7d10a}.page-tab:hover{color:var(--text-secondary)}.topbar-icon-btn:hover{color:var(--text-primary);background:#bdf7d10d}.topbar-menu-item:hover{background:#bdf7d10a}input:focus,textarea:focus{border-color:var(--accent)!important}
