@tailwind base; @tailwind components; @tailwind utilities; html, body, #root { height: 100%; background-color: #050505; color: #ffffff; font-family: 'Manrope', 'IBM Plex Sans', system-ui, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } body { margin: 0; min-height: 100vh; background: radial-gradient(1200px 700px at 12% -10%, rgba(138, 43, 226, 0.12), transparent 55%), radial-gradient(1000px 600px at 100% 0%, rgba(0, 87, 255, 0.10), transparent 55%), radial-gradient(900px 900px at 50% 120%, rgba(0, 240, 255, 0.08), transparent 55%), #050505; } /* Subtle grain */ body::before { content: ""; position: fixed; inset: 0; pointer-events: none; z-index: 1; opacity: 0.035; background-image: url("data:image/svg+xml;utf8,"); animation: grainShift 8s steps(6) infinite; } ::selection { background: rgba(0, 240, 255, 0.35); color: #fff; } /* Scrollbar */ ::-webkit-scrollbar { width: 10px; height: 10px; } ::-webkit-scrollbar-track { background: #0a0a0a; } ::-webkit-scrollbar-thumb { background: #27272a; border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: #3f3f46; } .tag-eyebrow { font-family: 'JetBrains Mono', monospace; text-transform: uppercase; letter-spacing: 0.2em; font-size: 11px; color: #A1A1AA; } .chip { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 999px; border: 1px solid #27272A; background: rgba(255,255,255,0.02); font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: #A1A1AA; } .chip.on { color: #00F0FF; border-color: rgba(0,240,255,0.4); box-shadow: 0 0 24px rgba(0,240,255,0.15); } .chip.ok { color: #39FF14; border-color: rgba(57,255,20,0.4); } .chip.err { color: #FF3B30; border-color: rgba(255,59,48,0.4); } .mesh-text-gradient { background: linear-gradient(45deg, #8A2BE2 0%, #0057FF 35%, #00F0FF 65%, #39FF14 100%); -webkit-background-clip: text; background-clip: text; color: transparent; } .glass { background: rgba(10,10,10,0.65); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); border: 1px solid rgba(255,255,255,0.06); } .btn-cyan { background: linear-gradient(45deg, #0057FF 0%, #00F0FF 100%); color: #050505; font-weight: 700; padding: 12px 22px; border-radius: 6px; transition: transform .15s ease, box-shadow .2s ease, filter .15s ease; letter-spacing: 0.02em; box-shadow: 0 8px 22px -8px rgba(0,240,255,0.5); border: none; cursor: pointer; } .btn-cyan:hover { transform: translateY(-1px); box-shadow: 0 12px 30px -6px rgba(0,240,255,0.6); filter: brightness(1.05); } .btn-cyan:disabled { opacity: 0.4; cursor: not-allowed; transform: none; } .btn-ghost { background: transparent; color: #fff; border: 1px solid #27272A; padding: 12px 22px; border-radius: 6px; cursor: pointer; transition: border-color .2s, color .2s, background .2s; font-weight: 600; } .btn-ghost:hover { border-color: #00F0FF; color: #00F0FF; background: rgba(0,240,255,0.05); } .btn-danger { background: rgba(255, 59, 48, 0.12); color: #FF3B30; border: 1px solid rgba(255, 59, 48, 0.4); padding: 8px 14px; border-radius: 6px; cursor: pointer; transition: background .2s; font-size: 12px; font-weight: 600; } .btn-danger:hover { background: rgba(255, 59, 48, 0.2); } .corner-brackets::before, .corner-brackets::after, .corner-brackets > .cb1, .corner-brackets > .cb2 { content: ""; position: absolute; width: 32px; height: 32px; border-color: #00F0FF; border-style: solid; filter: drop-shadow(0 0 6px rgba(0,240,255,0.6)); pointer-events: none; } .corner-brackets::before { top: 10px; left: 10px; border-width: 2px 0 0 2px; } .corner-brackets::after { top: 10px; right: 10px; border-width: 2px 2px 0 0; } .corner-brackets > .cb1 { bottom: 10px; left: 10px; border-width: 0 0 2px 2px; } .corner-brackets > .cb2 { bottom: 10px; right: 10px; border-width: 0 2px 2px 0; } .laser-line { position: absolute; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, transparent 0%, #8A2BE2 20%, #0057FF 40%, #00F0FF 60%, #39FF14 80%, transparent 100%); box-shadow: 0 0 24px rgba(0, 240, 255, 0.9), 0 0 60px rgba(138, 43, 226, 0.5); animation: scanY 3.2s ease-in-out infinite; z-index: 10; } .data-cell { font-family: 'JetBrains Mono', monospace; font-size: 12px; letter-spacing: 0.02em; } .table-tech th { font-family: 'JetBrains Mono', monospace; text-transform: uppercase; font-size: 10px; letter-spacing: 0.2em; color: #A1A1AA; border-bottom: 1px solid #27272A; padding: 12px 14px; text-align: left; font-weight: 500; } .table-tech td { padding: 14px; border-bottom: 1px solid rgba(39,39,42,0.6); font-size: 13.5px; } input[type="text"], input[type="email"], input[type="date"], select, textarea { background: #0a0a0a; border: 1px solid #27272A; color: #fff; padding: 12px 14px; border-radius: 6px; font-size: 14px; width: 100%; transition: border-color .2s, box-shadow .2s; font-family: inherit; } input:focus, select:focus, textarea:focus { outline: none; border-color: #00F0FF; box-shadow: 0 0 0 3px rgba(0, 240, 255, 0.15); } label { display: block; font-family: 'JetBrains Mono', monospace; font-size: 11px; text-transform: uppercase; letter-spacing: 0.2em; color: #A1A1AA; margin-bottom: 6px; } .grid-lines { background-image: linear-gradient(rgba(255,255,255,0.03) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,0.03) 1px, transparent 1px); background-size: 40px 40px; } .status-dot { width: 8px; height: 8px; border-radius: 50%; background: #39FF14; box-shadow: 0 0 8px #39FF14; animation: pulseSoft 2s ease-in-out infinite; } .status-dot.off { background: #52525B; box-shadow: none; animation: none; } .status-dot.warn { background: #FFCC00; box-shadow: 0 0 8px #FFCC00; } .status-dot.err { background: #FF3B30; box-shadow: 0 0 8px #FF3B30; }