@import "https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;600;800&family=JetBrains+Mono:ital,wght@0,400;0,700;1,400&display=swap";:root{--bg-color:#03040a;--surface-1:#0a0c1466;--surface-2:#191c2d99;--accent-primary:#00d2ff;--accent-secondary:#9d50bb;--accent-glow:#00d2ff4d;--accent-purple-glow:#9d50bb4d;--text-main:#f0f0f5;--text-dim:#9aa0b0;--text-bright:#fff;--border-dim:#ffffff0d;--border-bright:#ffffff26;--error:#ff2d55;--success:#00ffa3;--grid-line:#ffffff12;--grid-line-bold:#ffffff38;--blur:20px}*{box-sizing:border-box;margin:0;padding:0}html,body{-webkit-tap-highlight-color:transparent;height:100%;overflow:hidden}body{background-color:var(--bg-color);color:var(--text-main);background-image:radial-gradient(circle at 20% 20%, var(--accent-glow) 0%, transparent 40%), radial-gradient(circle at 80% 80%, var(--accent-purple-glow) 0%, transparent 40%);touch-action:manipulation;background-attachment:fixed;min-height:100vh;font-family:Outfit,sans-serif}.mono{font-family:JetBrains Mono,monospace}#root{z-index:10;flex-direction:column;height:100vh;display:flex;position:relative;overflow:hidden}.glass{background:var(--surface-1);-webkit-backdrop-filter:blur(var(--blur));border:1px solid var(--border-bright)}.glass-card{background:var(--surface-2);-webkit-backdrop-filter:blur(var(--blur));border:1px solid var(--border-dim);border-radius:12px;box-shadow:0 8px 32px #0000004d}@keyframes float{0%{transform:translateY(0)}50%{transform:translateY(-10px)}to{transform:translateY(0)}}.float{animation:6s ease-in-out infinite float}#particles-canvas{z-index:1;pointer-events:none;width:100%;height:100%;position:fixed;top:0;left:0}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-bright);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--accent-primary)}.btn-label{display:inline}@media (width<=600px){.btn-label{display:none}}.grid-cell.is-error{position:relative;background:#ff2d5526!important;border:1px solid #ff2d5580!important}.grid-cell.is-error .cell-mark{filter:drop-shadow(0 0 5px var(--error));color:var(--error)!important}.error-pulse{border:2px solid var(--error);border-radius:inherit;pointer-events:none;animation:1.5s ease-out infinite pulsate-error;position:absolute;inset:0}@keyframes pulsate-error{0%{opacity:.8;transform:scale(.9)}to{opacity:0;transform:scale(1.4)}}
