Spaces:
Sleeping
Sleeping
Download Interface/static/css/style.css from RaxoM21/MIR_Group07: direct link, hf CLI and curl.
- Browser
- Download file 32.1 kB
-
https://huggingface.co/spaces/RaxoM21/MIR_Group07/resolve/main/Interface/static/css/style.css
- Command line
-
hf download hf://spaces/RaxoM21/MIR_Group07/Interface/static/css/style.css
-
curl -L -o style.css https://huggingface.co/spaces/RaxoM21/MIR_Group07/resolve/main/Interface/static/css/style.css
32.1 kB
| /* ===================================================================== | |
| MIR ENGINE — CYBERPUNK INTERFACE | |
| Design system: terminal HUD · neon cyan/magenta · animated grid · | |
| Orbitron display + JetBrains Mono body | |
| ===================================================================== */ | |
| :root { | |
| /* === COLORS === */ | |
| --void: #04050a; | |
| --void-2: #070912; | |
| --surface: #0b0e18; | |
| --surface-2: #11151f; | |
| --surface-3: #161b29; | |
| --border: rgba(0, 255, 209, 0.10); | |
| --border-hot: rgba(0, 255, 209, 0.28); | |
| --border-mag: rgba(255, 32, 121, 0.30); | |
| --cyan: #00ffd1; | |
| --cyan-dim: #00b894; | |
| --cyan-glow: rgba(0, 255, 209, 0.45); | |
| --magenta: #ff2079; | |
| --magenta-glow: rgba(255, 32, 121, 0.40); | |
| --amber: #ffb800; | |
| --red: #ff3a4c; | |
| --green: #00e676; | |
| --text: #e7ecf3; | |
| --text-soft: #b4bcca; | |
| --text-mute: #6a7484; | |
| --text-dim: #404a5e; | |
| /* === TYPOGRAPHY === */ | |
| --font-display: 'Orbitron', 'Arial Black', sans-serif; | |
| --font-mono: 'JetBrains Mono', 'Courier New', monospace; | |
| /* === SHADOWS / GLOWS === */ | |
| --glow-cyan-sm: 0 0 8px rgba(0, 255, 209, 0.4); | |
| --glow-cyan-md: 0 0 18px rgba(0, 255, 209, 0.5), 0 0 36px rgba(0, 255, 209, 0.2); | |
| --glow-cyan-lg: 0 0 28px rgba(0, 255, 209, 0.6), 0 0 60px rgba(0, 255, 209, 0.3); | |
| --glow-mag-md: 0 0 18px rgba(255, 32, 121, 0.5), 0 0 36px rgba(255, 32, 121, 0.2); | |
| /* === LAYOUT === */ | |
| --nav-h: 56px; | |
| --hud-h: 28px; | |
| --sidebar-w: 340px; | |
| --radius: 4px; | |
| --radius-lg: 8px; | |
| } | |
| /* ===================================================================== | |
| RESET & BASE | |
| ===================================================================== */ | |
| *, *::before, *::after { | |
| box-sizing: border-box; | |
| margin: 0; | |
| padding: 0; | |
| } | |
| html, body { | |
| height: 100%; | |
| font-family: var(--font-mono); | |
| font-size: 14px; | |
| color: var(--text); | |
| background: var(--void); | |
| overflow: hidden; | |
| line-height: 1.5; | |
| -webkit-font-smoothing: antialiased; | |
| } | |
| button, input, select, textarea { | |
| font-family: inherit; | |
| font-size: inherit; | |
| color: inherit; | |
| } | |
| button { | |
| cursor: pointer; | |
| border: none; | |
| background: none; | |
| } | |
| /* ===================================================================== | |
| ANIMATED BACKGROUND — grid + scan + noise | |
| ===================================================================== */ | |
| body::before { | |
| /* grid */ | |
| content: ''; | |
| position: fixed; | |
| inset: 0; | |
| background-image: | |
| linear-gradient(rgba(0, 255, 209, 0.035) 1px, transparent 1px), | |
| linear-gradient(90deg, rgba(0, 255, 209, 0.035) 1px, transparent 1px); | |
| background-size: 44px 44px; | |
| pointer-events: none; | |
| z-index: 0; | |
| mask-image: radial-gradient(ellipse at center, black 0%, transparent 90%); | |
| animation: gridDrift 60s linear infinite; | |
| } | |
| body::after { | |
| /* scan-line sweep */ | |
| content: ''; | |
| position: fixed; | |
| left: 0; | |
| right: 0; | |
| top: 0; | |
| height: 100vh; | |
| background: linear-gradient( | |
| 180deg, | |
| transparent 0%, | |
| rgba(0, 255, 209, 0.025) 49.5%, | |
| rgba(0, 255, 209, 0.08) 50%, | |
| rgba(0, 255, 209, 0.025) 50.5%, | |
| transparent 100% | |
| ); | |
| pointer-events: none; | |
| z-index: 1; | |
| animation: scanSweep 8s linear infinite; | |
| mix-blend-mode: screen; | |
| } | |
| @keyframes gridDrift { | |
| 0% { background-position: 0 0, 0 0; } | |
| 100% { background-position: 44px 44px, 44px 44px; } | |
| } | |
| @keyframes scanSweep { | |
| 0% { transform: translateY(-100vh); } | |
| 100% { transform: translateY(100vh); } | |
| } | |
| /* atmospheric glow blobs */ | |
| .bg-orb { | |
| position: fixed; | |
| border-radius: 50%; | |
| filter: blur(120px); | |
| pointer-events: none; | |
| z-index: 0; | |
| opacity: 0.5; | |
| } | |
| .bg-orb-1 { | |
| width: 600px; | |
| height: 600px; | |
| background: var(--cyan); | |
| top: -200px; | |
| right: -200px; | |
| animation: orbDrift1 24s ease-in-out infinite; | |
| } | |
| .bg-orb-2 { | |
| width: 500px; | |
| height: 500px; | |
| background: var(--magenta); | |
| bottom: -150px; | |
| left: -150px; | |
| animation: orbDrift2 30s ease-in-out infinite; | |
| } | |
| @keyframes orbDrift1 { | |
| 0%, 100% { transform: translate(0, 0); } | |
| 50% { transform: translate(-80px, 60px); } | |
| } | |
| @keyframes orbDrift2 { | |
| 0%, 100% { transform: translate(0, 0); } | |
| 50% { transform: translate(60px, -80px); } | |
| } | |
| /* ===================================================================== | |
| TOP HUD STATUS BAR | |
| ===================================================================== */ | |
| .hud-bar { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| height: var(--hud-h); | |
| background: rgba(4, 5, 10, 0.85); | |
| backdrop-filter: blur(12px); | |
| border-bottom: 1px solid var(--border); | |
| display: flex; | |
| align-items: center; | |
| padding: 0 18px; | |
| font-family: var(--font-mono); | |
| font-size: 10.5px; | |
| letter-spacing: 0.08em; | |
| text-transform: uppercase; | |
| color: var(--text-mute); | |
| z-index: 100; | |
| gap: 24px; | |
| } | |
| .hud-bar .hud-item { | |
| display: flex; | |
| align-items: center; | |
| gap: 6px; | |
| } | |
| .hud-bar .hud-dot { | |
| width: 6px; | |
| height: 6px; | |
| border-radius: 50%; | |
| background: var(--cyan); | |
| box-shadow: 0 0 6px var(--cyan); | |
| animation: hudPulse 2s ease-in-out infinite; | |
| } | |
| .hud-bar .hud-dot.amber { background: var(--amber); box-shadow: 0 0 6px var(--amber); } | |
| .hud-bar .hud-val { | |
| color: var(--cyan); | |
| } | |
| .hud-bar .hud-spacer { flex: 1; } | |
| @keyframes hudPulse { | |
| 0%, 100% { opacity: 1; } | |
| 50% { opacity: 0.4; } | |
| } | |
| /* ===================================================================== | |
| NAVBAR | |
| ===================================================================== */ | |
| .top-navbar { | |
| position: fixed; | |
| top: var(--hud-h); | |
| left: 0; | |
| right: 0; | |
| height: var(--nav-h); | |
| background: rgba(7, 9, 18, 0.78); | |
| backdrop-filter: blur(16px); | |
| border-bottom: 1px solid var(--border); | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 0 24px; | |
| z-index: 50; | |
| } | |
| .top-navbar::after { | |
| content: ''; | |
| position: absolute; | |
| left: 0; | |
| right: 0; | |
| bottom: -1px; | |
| height: 1px; | |
| background: linear-gradient(90deg, | |
| transparent 0%, | |
| var(--cyan) 30%, | |
| var(--magenta) 70%, | |
| transparent 100%); | |
| opacity: 0.45; | |
| } | |
| .nav-brand { | |
| font-family: var(--font-display); | |
| font-weight: 900; | |
| font-size: 18px; | |
| letter-spacing: 0.18em; | |
| text-transform: uppercase; | |
| color: var(--text); | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| } | |
| .nav-brand::before { | |
| content: '◆'; | |
| color: var(--cyan); | |
| font-size: 14px; | |
| animation: brandPulse 3s ease-in-out infinite; | |
| text-shadow: var(--glow-cyan-sm); | |
| } | |
| @keyframes brandPulse { | |
| 0%, 100% { opacity: 1; transform: scale(1); } | |
| 50% { opacity: 0.6; transform: scale(0.9); } | |
| } | |
| .nav-tabs { | |
| display: flex; | |
| gap: 6px; | |
| background: rgba(11, 14, 24, 0.6); | |
| border: 1px solid var(--border); | |
| border-radius: var(--radius); | |
| padding: 4px; | |
| } | |
| .nav-tab { | |
| padding: 8px 16px; | |
| font-family: var(--font-mono); | |
| font-size: 11px; | |
| font-weight: 600; | |
| letter-spacing: 0.12em; | |
| text-transform: uppercase; | |
| color: var(--text-mute); | |
| background: transparent; | |
| border-radius: 3px; | |
| transition: all 0.2s ease; | |
| display: flex; | |
| align-items: center; | |
| gap: 6px; | |
| position: relative; | |
| } | |
| .nav-tab:hover { | |
| color: var(--text); | |
| background: rgba(0, 255, 209, 0.05); | |
| } | |
| .nav-tab.active { | |
| color: var(--cyan); | |
| background: rgba(0, 255, 209, 0.10); | |
| box-shadow: inset 0 0 0 1px var(--border-hot); | |
| text-shadow: 0 0 12px var(--cyan-glow); | |
| } | |
| .nav-tab-icon { font-size: 13px; } | |
| /* ===================================================================== | |
| APP BODY LAYOUT | |
| ===================================================================== */ | |
| .app-body { | |
| position: fixed; | |
| top: calc(var(--hud-h) + var(--nav-h)); | |
| left: 0; | |
| right: 0; | |
| bottom: 0; | |
| display: flex; | |
| z-index: 2; | |
| } | |
| /* ===================================================================== | |
| SIDEBAR | |
| ===================================================================== */ | |
| .sidebar { | |
| width: var(--sidebar-w); | |
| height: 100%; | |
| background: rgba(7, 9, 18, 0.68); | |
| backdrop-filter: blur(16px); | |
| border-right: 1px solid var(--border); | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .sidebar::before { | |
| /* glow rim on right edge */ | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| bottom: 0; | |
| right: 0; | |
| width: 1px; | |
| background: linear-gradient(180deg, | |
| transparent 0%, | |
| var(--cyan) 40%, | |
| var(--magenta) 60%, | |
| transparent 100%); | |
| opacity: 0.35; | |
| pointer-events: none; | |
| } | |
| .sidebar-scroll { | |
| height: 100%; | |
| overflow-y: auto; | |
| padding: 22px 20px 40px 20px; | |
| } | |
| .sidebar-scroll::-webkit-scrollbar { width: 4px; } | |
| .sidebar-scroll::-webkit-scrollbar-track { background: transparent; } | |
| .sidebar-scroll::-webkit-scrollbar-thumb { | |
| background: var(--border-hot); | |
| border-radius: 2px; | |
| } | |
| /* === BRAND BLOCK === */ | |
| .brand { | |
| margin-bottom: 4px; | |
| position: relative; | |
| } | |
| .brand-title { | |
| font-family: var(--font-display); | |
| font-weight: 800; | |
| font-size: 22px; | |
| letter-spacing: 0.06em; | |
| color: var(--text); | |
| line-height: 1.2; | |
| text-transform: uppercase; | |
| } | |
| .brand-title::after { | |
| content: '_'; | |
| color: var(--cyan); | |
| animation: caretBlink 1.1s steps(2) infinite; | |
| margin-left: 2px; | |
| } | |
| .brand-sub { | |
| font-family: var(--font-mono); | |
| font-size: 10.5px; | |
| letter-spacing: 0.15em; | |
| text-transform: uppercase; | |
| color: var(--text-mute); | |
| margin-top: 6px; | |
| } | |
| .brand-sub::before { | |
| content: '> '; | |
| color: var(--cyan); | |
| } | |
| @keyframes caretBlink { | |
| 0%, 100% { opacity: 1; } | |
| 50% { opacity: 0; } | |
| } | |
| /* === DIVIDER === */ | |
| .divider { | |
| height: 1px; | |
| background: linear-gradient(90deg, | |
| transparent 0%, | |
| var(--border-hot) 50%, | |
| transparent 100%); | |
| margin: 18px 0; | |
| position: relative; | |
| } | |
| .divider::before, | |
| .divider::after { | |
| content: ''; | |
| position: absolute; | |
| top: 50%; | |
| width: 5px; | |
| height: 5px; | |
| border: 1px solid var(--cyan); | |
| transform: translateY(-50%) rotate(45deg); | |
| background: var(--void); | |
| } | |
| .divider::before { left: 0; } | |
| .divider::after { right: 0; } | |
| /* === SECTIONS === */ | |
| .section { | |
| margin-bottom: 4px; | |
| } | |
| .section-title { | |
| display: block; | |
| font-family: var(--font-mono); | |
| font-size: 10px; | |
| font-weight: 700; | |
| letter-spacing: 0.22em; | |
| text-transform: uppercase; | |
| color: var(--cyan); | |
| margin-bottom: 10px; | |
| position: relative; | |
| padding-left: 14px; | |
| } | |
| .section-title::before { | |
| content: '▸'; | |
| position: absolute; | |
| left: 0; | |
| color: var(--magenta); | |
| font-size: 9px; | |
| } | |
| .group-label { | |
| display: block; | |
| font-family: var(--font-mono); | |
| font-size: 9px; | |
| font-weight: 600; | |
| letter-spacing: 0.18em; | |
| text-transform: uppercase; | |
| color: var(--text-mute); | |
| margin: 10px 0 5px; | |
| padding-left: 8px; | |
| border-left: 2px solid var(--border-hot); | |
| } | |
| /* === QUERY PREVIEW === */ | |
| .query-preview { | |
| width: 100%; | |
| aspect-ratio: 16 / 10; | |
| background: var(--void-2); | |
| border: 1px dashed var(--border-hot); | |
| border-radius: var(--radius); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| overflow: hidden; | |
| margin-bottom: 10px; | |
| position: relative; | |
| } | |
| .query-preview::before { | |
| /* corner brackets */ | |
| content: ''; | |
| position: absolute; | |
| inset: 4px; | |
| background: | |
| linear-gradient(var(--cyan), var(--cyan)) top left / 10px 1px no-repeat, | |
| linear-gradient(var(--cyan), var(--cyan)) top left / 1px 10px no-repeat, | |
| linear-gradient(var(--cyan), var(--cyan)) top right / 10px 1px no-repeat, | |
| linear-gradient(var(--cyan), var(--cyan)) top right / 1px 10px no-repeat, | |
| linear-gradient(var(--cyan), var(--cyan)) bottom left / 10px 1px no-repeat, | |
| linear-gradient(var(--cyan), var(--cyan)) bottom left / 1px 10px no-repeat, | |
| linear-gradient(var(--cyan), var(--cyan)) bottom right / 10px 1px no-repeat, | |
| linear-gradient(var(--cyan), var(--cyan)) bottom right / 1px 10px no-repeat; | |
| pointer-events: none; | |
| opacity: 0.7; | |
| } | |
| .query-preview img { | |
| width: 100%; | |
| height: 100%; | |
| object-fit: cover; | |
| } | |
| .placeholder-text { | |
| color: var(--text-dim); | |
| font-size: 11px; | |
| letter-spacing: 0.12em; | |
| text-transform: uppercase; | |
| } | |
| /* === BROWSE BUTTON === */ | |
| .browse-btn { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 8px; | |
| width: 100%; | |
| padding: 11px 14px; | |
| background: rgba(0, 255, 209, 0.06); | |
| border: 1px solid var(--border-hot); | |
| border-radius: var(--radius); | |
| color: var(--cyan); | |
| font-family: var(--font-mono); | |
| font-size: 11px; | |
| font-weight: 600; | |
| letter-spacing: 0.12em; | |
| text-transform: uppercase; | |
| cursor: pointer; | |
| transition: all 0.2s ease; | |
| } | |
| .browse-btn:hover { | |
| background: rgba(0, 255, 209, 0.12); | |
| box-shadow: var(--glow-cyan-sm); | |
| transform: translateY(-1px); | |
| } | |
| /* === CHECKBOX === */ | |
| .checkbox-item { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| padding: 7px 10px; | |
| margin: 3px 0; | |
| border: 1px solid transparent; | |
| border-radius: 3px; | |
| font-size: 12px; | |
| color: var(--text-soft); | |
| cursor: pointer; | |
| transition: all 0.15s ease; | |
| user-select: none; | |
| } | |
| .checkbox-item:hover { | |
| background: rgba(0, 255, 209, 0.04); | |
| border-color: var(--border); | |
| color: var(--text); | |
| } | |
| .checkbox-item input[type="checkbox"] { | |
| appearance: none; | |
| -webkit-appearance: none; | |
| width: 14px; | |
| height: 14px; | |
| border: 1px solid var(--border-hot); | |
| background: var(--void-2); | |
| border-radius: 2px; | |
| position: relative; | |
| cursor: pointer; | |
| flex-shrink: 0; | |
| transition: all 0.15s ease; | |
| } | |
| .checkbox-item input[type="checkbox"]:checked { | |
| background: var(--cyan); | |
| border-color: var(--cyan); | |
| box-shadow: var(--glow-cyan-sm); | |
| } | |
| .checkbox-item input[type="checkbox"]:checked::after { | |
| content: ''; | |
| position: absolute; | |
| inset: 2px; | |
| background: var(--void); | |
| clip-path: polygon(15% 50%, 35% 75%, 85% 20%, 95% 30%, 35% 95%, 5% 60%); | |
| } | |
| .checkbox-item.disabled { | |
| opacity: 0.35; | |
| cursor: not-allowed; | |
| } | |
| .combo-info { | |
| margin-top: 10px; | |
| padding: 8px 10px; | |
| font-size: 10.5px; | |
| color: var(--magenta); | |
| background: rgba(255, 32, 121, 0.06); | |
| border: 1px solid var(--border-mag); | |
| border-radius: 3px; | |
| letter-spacing: 0.05em; | |
| } | |
| /* === SELECT === */ | |
| .select-input { | |
| appearance: none; | |
| -webkit-appearance: none; | |
| width: 100%; | |
| padding: 10px 14px; | |
| background: var(--void-2); | |
| border: 1px solid var(--border-hot); | |
| border-radius: var(--radius); | |
| color: var(--text); | |
| font-family: var(--font-mono); | |
| font-size: 12px; | |
| letter-spacing: 0.06em; | |
| cursor: pointer; | |
| background-image: linear-gradient(45deg, transparent 50%, var(--cyan) 50%), | |
| linear-gradient(135deg, var(--cyan) 50%, transparent 50%); | |
| background-position: calc(100% - 16px) center, calc(100% - 11px) center; | |
| background-size: 5px 5px; | |
| background-repeat: no-repeat; | |
| transition: all 0.2s ease; | |
| } | |
| .select-input:hover, | |
| .select-input:focus { | |
| border-color: var(--cyan); | |
| box-shadow: var(--glow-cyan-sm); | |
| outline: none; | |
| } | |
| .select-input option { | |
| background: var(--surface); | |
| color: var(--text); | |
| } | |
| /* === SLIDER === */ | |
| .slider { | |
| -webkit-appearance: none; | |
| appearance: none; | |
| width: 100%; | |
| height: 4px; | |
| background: var(--void-2); | |
| border-radius: 2px; | |
| margin: 8px 0; | |
| border: 1px solid var(--border); | |
| cursor: pointer; | |
| outline: none; | |
| } | |
| .slider::-webkit-slider-thumb { | |
| -webkit-appearance: none; | |
| appearance: none; | |
| width: 14px; | |
| height: 14px; | |
| background: var(--cyan); | |
| border: 2px solid var(--void); | |
| border-radius: 50%; | |
| box-shadow: var(--glow-cyan-sm); | |
| cursor: pointer; | |
| transition: all 0.2s ease; | |
| } | |
| .slider::-webkit-slider-thumb:hover { | |
| transform: scale(1.2); | |
| box-shadow: var(--glow-cyan-md); | |
| } | |
| .slider::-moz-range-thumb { | |
| width: 14px; | |
| height: 14px; | |
| background: var(--cyan); | |
| border: 2px solid var(--void); | |
| border-radius: 50%; | |
| cursor: pointer; | |
| } | |
| /* === QUICK K BUTTONS (Top-20 / Top-50 / Top-100) === */ | |
| .k-presets { | |
| display: flex; | |
| gap: 6px; | |
| margin-top: 8px; | |
| } | |
| .k-preset { | |
| flex: 1; | |
| padding: 6px 0; | |
| font-family: var(--font-mono); | |
| font-size: 10px; | |
| font-weight: 700; | |
| letter-spacing: 0.1em; | |
| color: var(--text-mute); | |
| background: var(--void-2); | |
| border: 1px solid var(--border); | |
| border-radius: 3px; | |
| cursor: pointer; | |
| transition: all 0.15s ease; | |
| } | |
| .k-preset:hover { | |
| color: var(--cyan); | |
| border-color: var(--border-hot); | |
| } | |
| .k-preset.active { | |
| color: var(--cyan); | |
| background: rgba(0, 255, 209, 0.08); | |
| border-color: var(--cyan); | |
| box-shadow: var(--glow-cyan-sm); | |
| } | |
| /* === TEXT INPUT === */ | |
| .text-input { | |
| width: 100%; | |
| padding: 12px 14px; | |
| background: var(--void-2); | |
| border: 1px solid var(--border-hot); | |
| border-radius: var(--radius); | |
| color: var(--text); | |
| font-family: var(--font-mono); | |
| font-size: 12px; | |
| resize: vertical; | |
| min-height: 90px; | |
| transition: all 0.2s ease; | |
| } | |
| .text-input::placeholder { | |
| color: var(--text-dim); | |
| } | |
| .text-input:focus { | |
| outline: none; | |
| border-color: var(--cyan); | |
| box-shadow: var(--glow-cyan-sm), inset 0 0 0 1px rgba(0, 255, 209, 0.15); | |
| } | |
| /* === SEARCH BUTTON === */ | |
| .search-btn { | |
| width: 100%; | |
| padding: 14px 18px; | |
| font-family: var(--font-display); | |
| font-size: 13px; | |
| font-weight: 800; | |
| letter-spacing: 0.18em; | |
| text-transform: uppercase; | |
| color: var(--void); | |
| background: linear-gradient(90deg, var(--cyan) 0%, #00e6ff 100%); | |
| border: none; | |
| border-radius: var(--radius); | |
| cursor: pointer; | |
| position: relative; | |
| overflow: hidden; | |
| transition: all 0.2s ease; | |
| box-shadow: var(--glow-cyan-md); | |
| margin-top: 6px; | |
| } | |
| .search-btn::before { | |
| /* sweep */ | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: -100%; | |
| width: 100%; | |
| height: 100%; | |
| background: linear-gradient(90deg, | |
| transparent 0%, | |
| rgba(255, 255, 255, 0.4) 50%, | |
| transparent 100%); | |
| transition: left 0.6s ease; | |
| } | |
| .search-btn:hover { | |
| transform: translateY(-2px); | |
| box-shadow: var(--glow-cyan-lg); | |
| } | |
| .search-btn:hover::before { | |
| left: 100%; | |
| } | |
| .search-btn:active { | |
| transform: translateY(0); | |
| } | |
| .search-btn:disabled { | |
| background: var(--surface-2); | |
| color: var(--text-dim); | |
| box-shadow: none; | |
| cursor: wait; | |
| } | |
| /* === MODE BUTTONS === */ | |
| .mode-btn { | |
| flex: 1; | |
| padding: 9px 10px; | |
| font-family: var(--font-mono); | |
| font-size: 10.5px; | |
| font-weight: 600; | |
| letter-spacing: 0.1em; | |
| text-transform: uppercase; | |
| color: var(--text-mute); | |
| background: var(--void-2); | |
| border: 1px solid var(--border); | |
| border-radius: 3px; | |
| cursor: pointer; | |
| transition: all 0.15s ease; | |
| } | |
| .mode-btn:hover { | |
| color: var(--text); | |
| border-color: var(--border-hot); | |
| } | |
| .mode-btn.active { | |
| color: var(--cyan); | |
| background: rgba(0, 255, 209, 0.10); | |
| border-color: var(--cyan); | |
| box-shadow: var(--glow-cyan-sm); | |
| } | |
| /* === PROGRESS === */ | |
| .progress-wrapper { | |
| margin-top: 14px; | |
| } | |
| .progress-bar { | |
| width: 100%; | |
| height: 3px; | |
| background: var(--void-2); | |
| border-radius: 2px; | |
| overflow: hidden; | |
| position: relative; | |
| } | |
| .progress-fill { | |
| height: 100%; | |
| background: linear-gradient(90deg, var(--cyan), var(--magenta)); | |
| width: 0; | |
| transition: width 0.4s ease; | |
| box-shadow: 0 0 10px var(--cyan); | |
| position: relative; | |
| } | |
| .progress-fill::after { | |
| content: ''; | |
| position: absolute; | |
| inset: 0; | |
| background: linear-gradient(90deg, | |
| transparent 0%, | |
| rgba(255, 255, 255, 0.6) 50%, | |
| transparent 100%); | |
| animation: progSlide 1.2s linear infinite; | |
| } | |
| @keyframes progSlide { | |
| 0% { transform: translateX(-100%); } | |
| 100% { transform: translateX(100%); } | |
| } | |
| /* === STATUS === */ | |
| .status-text { | |
| display: block; | |
| font-family: var(--font-mono); | |
| font-size: 10.5px; | |
| letter-spacing: 0.06em; | |
| color: var(--text-mute); | |
| margin-top: 10px; | |
| padding-left: 12px; | |
| position: relative; | |
| line-height: 1.5; | |
| } | |
| .status-text::before { | |
| content: '>'; | |
| position: absolute; | |
| left: 0; | |
| color: var(--cyan); | |
| } | |
| .status-success { | |
| color: var(--green); | |
| } | |
| .status-success::before { color: var(--green); } | |
| .status-error { | |
| color: var(--red); | |
| } | |
| .status-error::before { color: var(--red); } | |
| .status-active { | |
| color: var(--amber); | |
| } | |
| .status-active::before { color: var(--amber); animation: caretBlink 0.8s infinite; } | |
| .timing-text { | |
| font-family: var(--font-mono); | |
| font-size: 10px; | |
| letter-spacing: 0.08em; | |
| color: var(--cyan-dim); | |
| margin-top: 4px; | |
| padding-left: 12px; | |
| } | |
| /* === METRICS PANEL === */ | |
| .metrics-panel, | |
| .clip-info-panel { | |
| background: rgba(0, 255, 209, 0.03); | |
| border: 1px solid var(--border-hot); | |
| border-radius: var(--radius); | |
| padding: 14px 14px 16px; | |
| position: relative; | |
| } | |
| .metrics-panel::before, | |
| .clip-info-panel::before { | |
| content: ''; | |
| position: absolute; | |
| top: -1px; | |
| left: -1px; | |
| width: 12px; | |
| height: 12px; | |
| border-top: 2px solid var(--magenta); | |
| border-left: 2px solid var(--magenta); | |
| } | |
| .metrics-panel::after, | |
| .clip-info-panel::after { | |
| content: ''; | |
| position: absolute; | |
| bottom: -1px; | |
| right: -1px; | |
| width: 12px; | |
| height: 12px; | |
| border-bottom: 2px solid var(--magenta); | |
| border-right: 2px solid var(--magenta); | |
| } | |
| .metrics-title { | |
| display: block; | |
| font-family: var(--font-display); | |
| font-size: 11px; | |
| font-weight: 800; | |
| letter-spacing: 0.18em; | |
| text-transform: uppercase; | |
| color: var(--magenta); | |
| margin-bottom: 10px; | |
| } | |
| .metrics-subtitle { | |
| display: block; | |
| font-family: var(--font-mono); | |
| font-size: 9.5px; | |
| font-weight: 700; | |
| letter-spacing: 0.18em; | |
| text-transform: uppercase; | |
| color: var(--cyan); | |
| margin: 12px 0 4px; | |
| padding-bottom: 4px; | |
| border-bottom: 1px dashed var(--border); | |
| } | |
| .metric-info { | |
| font-size: 10.5px; | |
| color: var(--text-mute); | |
| line-height: 1.5; | |
| margin: 3px 0; | |
| letter-spacing: 0.03em; | |
| } | |
| .metric-info.italic { font-style: italic; color: var(--text-dim); } | |
| .metric-value { | |
| font-family: var(--font-mono); | |
| font-size: 11.5px; | |
| color: var(--text); | |
| margin: 4px 0; | |
| padding-left: 8px; | |
| border-left: 2px solid var(--cyan); | |
| letter-spacing: 0.02em; | |
| } | |
| .metric-value:hover { | |
| color: var(--cyan); | |
| border-left-color: var(--magenta); | |
| } | |
| /* ===================================================================== | |
| MAIN CONTENT | |
| ===================================================================== */ | |
| .content { | |
| flex: 1; | |
| height: 100%; | |
| overflow-y: auto; | |
| padding: 30px 36px 60px; | |
| position: relative; | |
| } | |
| .content::-webkit-scrollbar { width: 6px; } | |
| .content::-webkit-scrollbar-track { background: transparent; } | |
| .content::-webkit-scrollbar-thumb { | |
| background: var(--border-hot); | |
| border-radius: 3px; | |
| } | |
| .results-header { | |
| font-family: var(--font-display); | |
| font-weight: 800; | |
| font-size: 26px; | |
| letter-spacing: 0.12em; | |
| text-transform: uppercase; | |
| color: var(--text); | |
| margin-bottom: 22px; | |
| position: relative; | |
| padding-bottom: 14px; | |
| display: flex; | |
| align-items: center; | |
| gap: 14px; | |
| } | |
| .results-header::before { | |
| content: '//'; | |
| color: var(--magenta); | |
| font-family: var(--font-display); | |
| text-shadow: var(--glow-mag-md); | |
| } | |
| .results-header::after { | |
| content: ''; | |
| position: absolute; | |
| left: 0; | |
| bottom: 0; | |
| width: 160px; | |
| height: 2px; | |
| background: linear-gradient(90deg, var(--cyan) 0%, transparent 100%); | |
| } | |
| .results-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); | |
| gap: 18px; | |
| } | |
| .no-results { | |
| grid-column: 1 / -1; | |
| text-align: center; | |
| padding: 80px 20px; | |
| font-family: var(--font-mono); | |
| font-size: 12px; | |
| letter-spacing: 0.1em; | |
| color: var(--text-mute); | |
| border: 1px dashed var(--border-hot); | |
| border-radius: var(--radius); | |
| background: rgba(0, 255, 209, 0.02); | |
| position: relative; | |
| } | |
| .no-results::before { | |
| content: '— STANDBY —'; | |
| display: block; | |
| font-family: var(--font-display); | |
| font-size: 11px; | |
| letter-spacing: 0.3em; | |
| color: var(--cyan); | |
| margin-bottom: 12px; | |
| text-shadow: var(--glow-cyan-sm); | |
| } | |
| /* === RESULT CARD === */ | |
| .result-card { | |
| background: var(--surface); | |
| border: 1px solid var(--border); | |
| border-radius: var(--radius); | |
| overflow: hidden; | |
| cursor: pointer; | |
| position: relative; | |
| transition: transform 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease; | |
| } | |
| .result-card::before { | |
| /* scan line overlay */ | |
| content: ''; | |
| position: absolute; | |
| inset: 0; | |
| background: linear-gradient(180deg, | |
| transparent 0%, | |
| rgba(0, 255, 209, 0.10) 50%, | |
| transparent 100%); | |
| transform: translateY(-100%); | |
| pointer-events: none; | |
| transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1); | |
| z-index: 2; | |
| } | |
| .result-card:hover { | |
| transform: translateY(-4px); | |
| border-color: var(--cyan); | |
| box-shadow: var(--glow-cyan-md); | |
| } | |
| .result-card:hover::before { | |
| transform: translateY(100%); | |
| } | |
| .result-card.relevant { | |
| border-color: var(--green); | |
| box-shadow: inset 0 0 0 1px rgba(0, 230, 118, 0.25); | |
| } | |
| .result-card.relevant:hover { | |
| box-shadow: 0 0 20px rgba(0, 230, 118, 0.4), 0 0 40px rgba(0, 230, 118, 0.2); | |
| } | |
| .result-card.multimodal { | |
| border-color: var(--border-mag); | |
| } | |
| .result-card.multimodal:hover { | |
| border-color: var(--magenta); | |
| box-shadow: var(--glow-mag-md); | |
| } | |
| .rank-badge { | |
| position: absolute; | |
| top: 8px; | |
| left: 8px; | |
| z-index: 3; | |
| background: rgba(4, 5, 10, 0.85); | |
| backdrop-filter: blur(8px); | |
| color: var(--cyan); | |
| font-family: var(--font-mono); | |
| font-size: 10px; | |
| font-weight: 700; | |
| letter-spacing: 0.1em; | |
| padding: 3px 8px; | |
| border: 1px solid var(--border-hot); | |
| border-radius: 2px; | |
| text-shadow: var(--glow-cyan-sm); | |
| } | |
| .result-card.relevant .rank-badge { | |
| color: var(--green); | |
| border-color: var(--green); | |
| text-shadow: 0 0 6px rgba(0, 230, 118, 0.5); | |
| } | |
| .result-card.multimodal .rank-badge { | |
| color: var(--magenta); | |
| border-color: var(--border-mag); | |
| } | |
| .thumb-wrapper { | |
| width: 100%; | |
| aspect-ratio: 16 / 11; | |
| background: var(--void-2); | |
| overflow: hidden; | |
| position: relative; | |
| } | |
| .thumb-wrapper img { | |
| width: 100%; | |
| height: 100%; | |
| object-fit: cover; | |
| transition: transform 0.5s ease; | |
| } | |
| .result-card:hover .thumb-wrapper img { | |
| transform: scale(1.08); | |
| } | |
| .card-filename, | |
| .card-caption { | |
| padding: 10px 12px 4px; | |
| font-family: var(--font-mono); | |
| font-size: 11px; | |
| color: var(--text); | |
| line-height: 1.4; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .card-caption { | |
| white-space: normal; | |
| display: -webkit-box; | |
| -webkit-line-clamp: 3; | |
| -webkit-box-orient: vertical; | |
| color: var(--text-soft); | |
| min-height: 56px; | |
| font-style: italic; | |
| } | |
| .card-distance { | |
| padding: 0 12px 10px; | |
| font-family: var(--font-mono); | |
| font-size: 10px; | |
| letter-spacing: 0.08em; | |
| color: var(--cyan); | |
| } | |
| .result-card.relevant .card-distance { color: var(--green); } | |
| .result-card.multimodal .card-distance { color: var(--magenta); } | |
| /* ===================================================================== | |
| MODAL | |
| ===================================================================== */ | |
| .modal-overlay { | |
| position: fixed; | |
| inset: 0; | |
| background: rgba(4, 5, 10, 0.92); | |
| backdrop-filter: blur(14px); | |
| display: none; | |
| align-items: center; | |
| justify-content: center; | |
| z-index: 200; | |
| padding: 40px; | |
| } | |
| .modal-overlay.active { | |
| display: flex; | |
| animation: modalIn 0.3s ease forwards; | |
| } | |
| @keyframes modalIn { | |
| from { opacity: 0; } | |
| to { opacity: 1; } | |
| } | |
| .modal-content { | |
| max-width: 90vw; | |
| max-height: 88vh; | |
| position: relative; | |
| border: 1px solid var(--border-hot); | |
| border-radius: var(--radius); | |
| background: var(--surface); | |
| overflow: hidden; | |
| animation: modalContentIn 0.4s cubic-bezier(0.16, 1, 0.3, 1) forwards; | |
| box-shadow: var(--glow-cyan-lg); | |
| } | |
| @keyframes modalContentIn { | |
| from { transform: scale(0.92); opacity: 0; } | |
| to { transform: scale(1); opacity: 1; } | |
| } | |
| .modal-content::before, | |
| .modal-content::after { | |
| content: ''; | |
| position: absolute; | |
| width: 18px; | |
| height: 18px; | |
| z-index: 3; | |
| } | |
| .modal-content::before { | |
| top: 0; left: 0; | |
| border-top: 2px solid var(--cyan); | |
| border-left: 2px solid var(--cyan); | |
| } | |
| .modal-content::after { | |
| bottom: 0; right: 0; | |
| border-bottom: 2px solid var(--magenta); | |
| border-right: 2px solid var(--magenta); | |
| } | |
| .modal-content img { | |
| display: block; | |
| max-width: 100%; | |
| max-height: 78vh; | |
| object-fit: contain; | |
| } | |
| .modal-filename { | |
| position: absolute; | |
| bottom: 14px; | |
| left: 14px; | |
| right: 14px; | |
| background: rgba(4, 5, 10, 0.85); | |
| backdrop-filter: blur(10px); | |
| padding: 8px 12px; | |
| font-family: var(--font-mono); | |
| font-size: 11px; | |
| color: var(--cyan); | |
| border: 1px solid var(--border-hot); | |
| border-radius: 3px; | |
| letter-spacing: 0.05em; | |
| } | |
| .modal-close { | |
| position: absolute; | |
| top: 12px; | |
| right: 12px; | |
| width: 32px; | |
| height: 32px; | |
| background: var(--void); | |
| border: 1px solid var(--border-hot); | |
| color: var(--cyan); | |
| border-radius: 3px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| cursor: pointer; | |
| transition: all 0.2s ease; | |
| z-index: 4; | |
| } | |
| .modal-close:hover { | |
| background: var(--magenta); | |
| color: var(--void); | |
| border-color: var(--magenta); | |
| transform: rotate(90deg); | |
| } | |
| /* Dataset Browser Browse Button */ | |
| .browse-btn { | |
| width: 100%; | |
| padding: 10px; | |
| border: 1px solid var(--border); | |
| border-radius: var(--radius); | |
| font-family: var(--font-mono); | |
| font-size: 11px; | |
| letter-spacing: 0.08em; | |
| text-transform: uppercase; | |
| color: var(--text-mute); | |
| background: rgba(11, 14, 24, 0.4); | |
| cursor: pointer; | |
| transition: all 0.15s ease; | |
| } | |
| .browse-btn:hover { | |
| background: rgba(0, 255, 209, 0.08); | |
| color: var(--cyan); | |
| border-color: var(--cyan); | |
| text-shadow: var(--glow-cyan-sm); | |
| } | |
| /* Dataset Thumbnail Grid */ | |
| .dataset-thumb { | |
| cursor: pointer; | |
| border: 2px solid transparent; | |
| border-radius: var(--radius); | |
| overflow: hidden; | |
| transition: all 0.15s ease; | |
| position: relative; | |
| } | |
| .dataset-thumb:hover { | |
| border-color: var(--cyan); | |
| box-shadow: var(--glow-cyan-sm); | |
| } | |
| .dataset-thumb.selected { | |
| border-color: var(--cyan); | |
| box-shadow: var(--glow-cyan-md); | |
| } | |
| .dataset-thumb img { | |
| width: 100%; | |
| height: 80px; | |
| object-fit: cover; | |
| display: block; | |
| } | |
| /* Loading State */ | |
| .modal-loading { | |
| text-align: center; | |
| color: var(--text-mute); | |
| font-family: var(--font-mono); | |
| font-size: 12px; | |
| letter-spacing: 0.1em; | |
| padding: 40px; | |
| grid-column: 1 / -1; | |
| } | |
| /* ===================================================================== | |
| RESPONSIVE | |
| ===================================================================== */ | |
| @media (max-width: 900px) { | |
| :root { --sidebar-w: 280px; } | |
| .nav-tab span { display: none; } | |
| .results-grid { grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); } | |
| .hud-bar { font-size: 9.5px; gap: 14px; padding: 0 12px; } | |
| .hud-bar .hud-item:nth-child(n+4) { display: none; } | |
| } | |
| @media (max-width: 640px) { | |
| .app-body { flex-direction: column; } | |
| .sidebar { | |
| width: 100%; | |
| height: auto; | |
| max-height: 50vh; | |
| border-right: none; | |
| border-bottom: 1px solid var(--border); | |
| } | |
| } |