@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700;900&family=Inter:wght@300;400;500;600&display=swap'); *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } :root { --blue: #00f2ff; --blue-dim: rgba(0,242,255,0.15); --blue-glow: 0 0 20px rgba(0,242,255,0.35); --bg: #020b12; --bg2: #041520; --card: rgba(4,21,32,0.85); --border: rgba(0,242,255,0.18); --text: #e8f4f8; --dim: rgba(232,244,248,0.45); --purple: #7c3aed; --green: #10b981; } html, body, #root { height: 100%; background: var(--bg); color: var(--text); font-family: 'Inter', sans-serif; font-size: 14px; overflow-x: hidden; } /* ── Animated grid background ── */ body { background-image: radial-gradient(ellipse 80% 60% at 50% -20%, rgba(0,242,255,0.08) 0%, transparent 70%), linear-gradient(rgba(0,242,255,0.035) 1px, transparent 1px), linear-gradient(90deg, rgba(0,242,255,0.035) 1px, transparent 1px); background-size: 100% 100%, 48px 48px, 48px 48px; } /* ── Floating particles ── */ .particles { position: fixed; inset: 0; pointer-events: none; z-index: 0; } .particle { position: absolute; border-radius: 50%; background: var(--blue); box-shadow: 0 0 6px var(--blue); } /* ── Layout ── */ .layout { position: relative; z-index: 1; max-width: 900px; margin: 0 auto; padding: 2.5rem 1.5rem 4rem; display: flex; flex-direction: column; gap: 1.2rem; min-height: 100vh; } /* ── Hero ── */ .hero { display: flex; align-items: center; gap: 1rem; padding-bottom: 0.5rem; } .hero-icon { width: 56px; height: 56px; border: 1px solid var(--border); border-radius: 12px; display: flex; align-items: center; justify-content: center; background: var(--blue-dim); box-shadow: var(--blue-glow); flex-shrink: 0; } h1 { font-family: 'Orbitron', sans-serif; font-size: clamp(1.4rem, 4vw, 2rem); font-weight: 900; letter-spacing: 3px; color: var(--blue); text-shadow: 0 0 20px rgba(0,242,255,0.5); line-height: 1; } h1 .dim { opacity: 0.25; } .subtitle { font-size: 0.65rem; letter-spacing: 2px; color: var(--dim); margin-top: 4px; font-weight: 500; } /* ── Status bar ── */ .status-bar { display: flex; align-items: center; gap: 10px; padding: 0.7rem 1rem; background: var(--card); border: 1px solid var(--border); border-radius: 8px; font-size: 0.75rem; letter-spacing: 1px; } .status-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; animation: pulse 1.5s ease-in-out infinite; } @keyframes pulse { 0%,100% { box-shadow: 0 0 4px currentColor; } 50% { box-shadow: 0 0 12px currentColor; } } .status-msg { flex: 1; text-transform: uppercase; } .status-pct { font-family: 'Orbitron', sans-serif; font-weight: 700; color: var(--blue); } .progress-track { height: 3px; background: rgba(255,255,255,0.07); border-radius: 2px; overflow: hidden; } .progress-fill { height: 100%; border-radius: 2px; transition: width 0.4s ease; box-shadow: 0 0 8px currentColor; } /* ── Tabs ── */ .tabs { display: flex; gap: 0.5rem; } .tab { padding: 0.55rem 1.2rem; border-radius: 8px; border: 1px solid var(--border); background: transparent; color: var(--dim); font-size: 0.75rem; font-weight: 600; letter-spacing: 1px; cursor: pointer; transition: all 0.2s; display: flex; align-items: center; gap: 6px; } .tab:hover { background: var(--blue-dim); color: var(--text); } .tab.active { background: var(--blue-dim); border-color: var(--blue); color: var(--blue); box-shadow: var(--blue-glow); } .badge { background: var(--blue); color: #000; border-radius: 999px; padding: 0 6px; font-size: 0.65rem; font-weight: 700; } /* ── Main Panel ── */ .panel { background: var(--card); backdrop-filter: blur(16px); border: 1px solid var(--border); border-radius: 16px; padding: 2rem; position: relative; overflow: hidden; } /* Scan line effect */ .panel::before { content: ''; position: absolute; top: 0; left: -100%; width: 60%; height: 2px; background: linear-gradient(90deg, transparent, var(--blue), transparent); animation: scan 4s linear infinite; } @keyframes scan { 0% { left: -60%; } 100% { left: 160%; } } /* ── Search form ── */ .search-form { display: flex; flex-direction: column; gap: 1.2rem; } .field-group { display: flex; flex-direction: column; gap: 6px; } .field-label { font-size: 0.65rem; letter-spacing: 2px; color: var(--blue); font-weight: 600; } .input-wrap { position: relative; display: flex; align-items: center; } .input-icon { position: absolute; left: 12px; font-size: 0.9rem; pointer-events: none; opacity: 0.5; } .input { width: 100%; background: rgba(255,255,255,0.04); border: 1px solid var(--border); border-radius: 8px; padding: 0.8rem 0.8rem 0.8rem 2.5rem; color: var(--text); font-size: 0.9rem; font-family: inherit; transition: all 0.25s; } .input:focus { outline: none; border-color: var(--blue); background: rgba(0,242,255,0.04); box-shadow: var(--blue-glow); } .input::placeholder { color: var(--dim); } .input:disabled { opacity: 0.5; cursor: not-allowed; } .btn-execute { margin-top: 0.5rem; padding: 0.9rem 1.5rem; background: var(--blue); color: #000; border: none; border-radius: 10px; font-family: 'Orbitron', sans-serif; font-size: 0.8rem; font-weight: 700; letter-spacing: 2px; cursor: pointer; transition: all 0.25s; display: flex; align-items: center; justify-content: center; gap: 8px; } .btn-execute:hover:not(:disabled) { transform: translateY(-2px); box-shadow: 0 0 30px var(--blue); } .btn-execute:disabled { opacity: 0.5; cursor: not-allowed; } .spinner { display: inline-block; animation: spin 1s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } /* ── Info Cards ── */ .info-cards { display: flex; gap: 1rem; margin-top: 2rem; } .info-card { flex: 1; text-align: center; padding: 1rem; border: 1px solid var(--border); border-radius: 10px; background: rgba(0,242,255,0.03); } .info-num { font-family: 'Orbitron', sans-serif; font-size: 1.5rem; color: var(--blue); } .info-label { font-size: 0.65rem; letter-spacing: 2px; color: var(--dim); margin-top: 4px; } /* ── Results ── */ .results-panel { padding: 1.5rem; } .results-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.2rem; } .results-count { font-family: 'Orbitron', sans-serif; font-size: 0.75rem; color: var(--blue); letter-spacing: 1px; } .btn-export { padding: 0.45rem 1rem; background: rgba(16,185,129,0.15); border: 1px solid var(--green); border-radius: 6px; color: var(--green); font-size: 0.7rem; font-weight: 600; letter-spacing: 1px; cursor: pointer; transition: all 0.2s; } .btn-export:hover { background: rgba(16,185,129,0.3); box-shadow: 0 0 12px var(--green); } .table-wrap { overflow-x: auto; } .results-table { width: 100%; border-collapse: collapse; } .results-table th { text-align: left; padding: 0.7rem 0.8rem; font-size: 0.6rem; letter-spacing: 2px; color: var(--blue); border-bottom: 1px solid var(--border); font-weight: 600; } .results-table td { padding: 0.9rem 0.8rem; border-bottom: 1px solid rgba(255,255,255,0.04); vertical-align: top; } .results-table tr:hover td { background: rgba(0,242,255,0.025); } .biz-name { font-weight: 600; font-size: 0.85rem; margin-bottom: 3px; } .biz-url { color: var(--blue); font-size: 0.7rem; text-decoration: none; opacity: 0.8; display: block; } .biz-url:hover { opacity: 1; } .biz-phone { font-size: 0.7rem; color: var(--dim); margin-top: 2px; } .email-cell { font-size: 0.75rem; word-break: break-all; } .dim-text { color: var(--dim); } .rating-badge { font-family: 'Orbitron', sans-serif; font-size: 0.7rem; color: var(--blue); background: var(--blue-dim); padding: 2px 8px; border-radius: 4px; } .channels { display: flex; gap: 6px; flex-wrap: wrap; } .ch-btn { padding: 2px 8px; border-radius: 4px; font-size: 0.65rem; font-weight: 700; text-decoration: none; letter-spacing: 1px; background: rgba(0,242,255,0.1); color: var(--blue); border: 1px solid var(--border); transition: all 0.15s; text-transform: uppercase; } .ch-btn:hover { background: var(--blue-dim); } .status-chip { font-size: 0.65rem; font-weight: 700; letter-spacing: 1px; padding: 2px 8px; border-radius: 999px; } .chip-ok { background: rgba(16,185,129,0.15); color: var(--green); } .chip-warn { background: rgba(239,68,68,0.15); color: #f87171; } .empty-state { text-align: center; padding: 3rem; color: var(--dim); font-size: 0.9rem; } /* ── Footer ── */ .footer { margin-top: auto; text-align: center; font-size: 0.65rem; letter-spacing: 2px; color: rgba(255,255,255,0.15); padding-top: 2rem; }