*,:before,:after{box-sizing:border-box;margin:0;padding:0}html[data-theme=dark]{--bg:#0d0d0f;--surface:#111114;--surface-high:#0a0a0c;--border:#ffffff0f;--border-subtle:#ffffff08;--accent:gold;--accent-dim:#ffd7000f;--text:#fff;--text-muted:#ffffff80;--text-dim:#ffffff59;--text-label:#ffd70066;--green:#4caf50;--green-dim:#4caf5014;--red:#f44336;--red-dim:#f4433614;--yellow:gold;--yellow-dim:#ffd70014;--ticker-bg:#08080a;--ticker-border:#ffffff0a;--overlay-bg:#00000080}html[data-theme=light]{--bg:#f8f8fa;--surface:#fff;--surface-high:#fff;--border:#00000014;--border-subtle:#0000000a;--accent:#b8860b;--accent-dim:#b8860b0f;--text:#1a1a1a;--text-muted:#00000080;--text-dim:#00000059;--text-label:#b8860b80;--green:#2e7d32;--green-dim:#2e7d3214;--red:#c62828;--red-dim:#c6282814;--yellow:#d97706;--yellow-dim:#d9770614;--ticker-bg:#fff;--ticker-border:#0000000f;--overlay-bg:#0000004d}body{background:var(--bg);color:var(--text);height:100dvh;font-family:JetBrains Mono,Fira Code,Cascadia Code,ui-monospace,monospace;font-size:13px;overflow:hidden}#root{height:100dvh}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}@media (width<=767px){.desktop-shell,.tablet-shell{display:none!important}.mobile-shell{display:flex!important}.chat-fab{display:none!important}}@media (width>=768px) and (width<=1024px){.desktop-shell,.mobile-shell{display:none!important}.tablet-shell{display:grid!important}}@media (width>=1025px){.mobile-shell,.tablet-shell{display:none!important}}@supports (height:100dvh){body,#root{height:100dvh}}@media (width<=767px){body{overflow:hidden}.mobile-shell{min-height:-webkit-fill-available}}@media (width>=768px) and (width<=1024px){.tablet-shell{padding-top:env(safe-area-inset-top,0px)}}@keyframes ticker-scroll{0%{transform:translate(0)}to{transform:translate(-50%)}}@keyframes fab-pulse{0%,to{box-shadow:0 0 #ffd70066}50%{box-shadow:0 0 0 8px #ffd70000}}@keyframes drawer-slide-in{0%{transform:translate(100%)}to{transform:translate(0)}}.ticker-scroll{animation:30s linear infinite ticker-scroll}.ticker-scroll:hover{animation-play-state:paused}
