/* ═══════════════════════════════════════════════════════════ TWOQUARKS LAB - HUGGINGFACE INTERFACE SYSTEM Ultra-blue quantum aesthetic with particle field ═══════════════════════════════════════════════════════════ */ /* ─────────────────────────────────────────────────────────── */ /* 1. RESET & BASE */ /* ─────────────────────────────────────────────────────────── */ * { margin: 0; padding: 0; box-sizing: border-box; } /* ─────────────────────────────────────────────────────────── */ /* 2. DESIGN TOKENS */ /* ─────────────────────────────────────────────────────────── */ :root { /* Colors - Ultra Blue System */ --ultra-blue: #3B82F6; --ultra-blue-bright: #60A5FA; --ultra-blue-deep: #1E40AF; --ultra-blue-glow: rgba(39, 100, 180, 0.35); /* Neutrals */ --bg-base: #000000; --fg-primary: #FFFFFF; --fg-secondary: rgba(255, 255, 255, 0.65); --fg-tertiary: rgba(255, 255, 255, 0.40); /* Surfaces */ --surface-glass: rgba(0, 0, 0, 0.30); --surface-card: rgba(255, 255, 255, 0.04); --surface-card-hover: rgba(255, 255, 255, 0.08); --surface-input: rgba(255, 255, 255, 0.03); /* Borders */ --border-subtle: rgba(255, 255, 255, 0.08); --border-medium: rgba(255, 255, 255, 0.14); --border-accent: rgba(59, 130, 246, 0.35); /* Spacing System (8px base) */ --space-xs: 0.5rem; /* 8px */ --space-sm: 0.75rem; /* 12px */ --space-md: 1rem; /* 16px */ --space-lg: 1.5rem; /* 24px */ --space-xl: 2rem; /* 32px */ --space-2xl: 3rem; /* 48px */ /* Radius */ --radius-sm: 8px; --radius-md: 12px; --radius-lg: 16px; --radius-full: 999px; /* Typography */ --font-body: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; --font-mono: 'JetBrains Mono', 'Fira Code', monospace; /* Transitions */ --trans-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1); --trans-base: 200ms cubic-bezier(0.4, 0, 0.2, 1); --trans-slow: 300ms cubic-bezier(0.4, 0, 0.2, 1); /* Z-index layers */ --z-base: 1; --z-dropdown: 10; --z-sticky: 20; --z-overlay: 30; --z-modal: 40; --z-canvas: 0; } /* ─────────────────────────────────────────────────────────── */ /* 3. GLOBAL LAYOUT */ /* ─────────────────────────────────────────────────────────── */ html, body { height: 100%; overflow-x: hidden; } body { font-family: var(--font-body); background: var(--bg-base); color: var(--fg-primary); line-height: 1.6; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .gradio-container { background: var(--bg-base) !important; color: var(--fg-primary) !important; max-width: 1400px; margin: 0 auto; padding: var(--space-lg); } /* ─────────────────────────────────────────────────────────── */ /* 4. QUANTUM PARTICLE FIELD (Ultra Blue) */ /* ─────────────────────────────────────────────────────────── */ #quantumField { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; z-index: var(--z-canvas); background: var(--bg-base); pointer-events: none; } /* ─────────────────────────────────────────────────────────── */ /* 5. MAIN APP CONTAINER */ /* ─────────────────────────────────────────────────────────── */ #tqApp { position: relative; z-index: var(--z-base); padding-top: var(--space-md); } /* ─────────────────────────────────────────────────────────── */ /* 6. HERO SECTION */ /* ─────────────────────────────────────────────────────────── */ .tq-hero { margin: var(--space-md) 0 var(--space-lg) 0; padding: var(--space-lg) var(--space-xl); background: var(--surface-glass); backdrop-filter: blur(16px) saturate(180%); -webkit-backdrop-filter: blur(12px) saturate(180%); border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); box-shadow: 0 8px 32px rgba(0, 0, 0, 0.09); } .tq-hero__brand { font-weight: 700; font-size: 1.5rem; letter-spacing: -0.02em; background: linear-gradient(135deg, var(--fg-primary) 0%, var(--ultra-blue-bright) 100%); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; } .tq-hero__desc { margin-top: var(--space-sm); color: var(--fg-secondary); font-size: 0.95rem; line-height: 1.65; max-width: 65ch; } /* ─────────────────────────────────────────────────────────── */ /* 7. NAVIGATION PILLS */ /* ─────────────────────────────────────────────────────────── */ .tq-pills { display: flex; gap: var(--space-sm); flex-wrap: wrap; margin-top: var(--space-md); } .tq-pill { display: inline-flex; align-items: center; gap: 0.5rem; padding: var(--space-sm) var(--space-md); font-size: 0.875rem; font-weight: 500; color: var(--fg-primary); text-decoration: none; background: rgba(255, 255, 255, 0.02); border: 1px solid var(--border-medium); border-radius: var(--radius-full); opacity: 0.85; transition: all var(--trans-base); white-space: nowrap; } .tq-pill:hover { opacity: 1; background: rgba(255, 255, 255, 0.06); border-color: var(--border-accent); box-shadow: 0 0 16px var(--ultra-blue-glow); } .tq-pill--active { opacity: 1; background: var(--ultra-blue-glow); border-color: var(--ultra-blue); box-shadow: 0 0 0 1px var(--ultra-blue) inset, 0 0 10px var(--ultra-blue-glow); } /* ─────────────────────────────────────────────────────────── */ /* 8. GRADIO COMPONENTS - PANELS & BLOCKS */ /* ─────────────────────────────────────────────────────────── */ .gradio-container .gr-panel, .gradio-container [class*="gr-box"], .gradio-container .gr-form { background: var(--surface-card) !important; backdrop-filter: blur(10px) !important; -webkit-backdrop-filter: blur(10px) !important; border: 1px solid var(--border-subtle) !important; border-radius: var(--radius-md) !important; padding: var(--space-lg) !important; transition: all var(--trans-base) !important; } .gradio-container .gr-panel:hover { background: var(--surface-card-hover) !important; border-color: var(--border-medium) !important; } /* ─────────────────────────────────────────────────────────── */ /* 9. TABS SYSTEM */ /* ─────────────────────────────────────────────────────────── */ .gradio-container .gr-tab-nav { background: transparent !important; border: none !important; gap: var(--space-sm) !important; padding: 0 !important; margin-bottom: var(--space-lg) !important; } .gradio-container .gr-tab-nav button { padding: var(--space-sm) var(--space-md) !important; font-size: 0.875rem !important; font-weight: 500 !important; color: var(--fg-primary) !important; background: rgba(255, 255, 255, 0.02) !important; border: 1px solid var(--border-medium) !important; border-radius: var(--radius-full) !important; opacity: 0.75 !important; transition: all var(--trans-base) !important; } .gradio-container .gr-tab-nav button:hover { opacity: 1 !important; background: rgba(255, 255, 255, 0.06) !important; border-color: var(--border-accent) !important; } .gradio-container .gr-tab-nav button.selected, .gradio-container .gr-tab-nav button[aria-selected="true"] { opacity: 1 !important; background: var(--ultra-blue-glow) !important; border-color: var(--ultra-blue) !important; box-shadow: 0 0 0 1px var(--ultra-blue) inset, 0 0 10px var(--ultra-blue-glow) !important; } /* ─────────────────────────────────────────────────────────── */ /* 10. FORM INPUTS */ /* ─────────────────────────────────────────────────────────── */ .gradio-container input[type="text"], .gradio-container input[type="number"], .gradio-container textarea, .gradio-container select { background: var(--surface-input) !important; border: 1px solid var(--border-medium) !important; border-radius: var(--radius-md) !important; color: var(--fg-primary) !important; padding: var(--space-sm) var(--space-md) !important; font-size: 0.9375rem !important; transition: all var(--trans-base) !important; } .gradio-container input:focus, .gradio-container textarea:focus, .gradio-container select:focus { outline: none !important; border-color: var(--ultra-blue) !important; box-shadow: 0 0 0 3px var(--ultra-blue-glow) !important; } .gradio-container input[type="range"] { accent-color: var(--ultra-blue) !important; } /* ─────────────────────────────────────────────────────────── */ /* 11. BUTTONS */ /* ─────────────────────────────────────────────────────────── */ .gradio-container button:not(.gr-tab-nav button), .gradio-container .gr-button { padding: var(--space-sm) var(--space-lg) !important; font-size: 0.9375rem !important; font-weight: 500 !important; color: var(--fg-primary) !important; background: rgba(255, 255, 255, 0.02) !important; border: 1px solid var(--border-medium) !important; border-radius: var(--radius-full) !important; opacity: 0.40 !important; cursor: pointer !important; transition: all var(--trans-base) !important; } .gradio-container button:hover:not(.gr-tab-nav button), .gradio-container .gr-button:hover { opacity: 1 !important; background: rgba(255, 255, 255, 0.08) !important; border-color: var(--border-accent) !important; box-shadow: 0 0 16px var(--ultra-blue-glow) !important; } .gradio-container button:active:not(.gr-tab-nav button) { transform: scale(0.98) !important; } /* Primary action button variant */ .gradio-container button.primary, .gradio-container .gr-button-primary { background: var(--ultra-blue) !important; border-color: var(--ultra-blue-bright) !important; box-shadow: 0 4px 12px var(--ultra-blue-glow) !important; } .gradio-container button.primary:hover { background: var(--ultra-blue-bright) !important; box-shadow: 0 8px 24px var(--ultra-blue-glow) !important; } /* ─────────────────────────────────────────────────────────── */ /* 12. IMAGE GALLERY & GRID */ /* ─────────────────────────────────────────────────────────── */ .gradio-container .gr-gallery { gap: var(--space-md) !important; } .gradio-container .gr-gallery .gr-image, .gradio-container .gr-image-preview { border-radius: var(--radius-md) !important; overflow: hidden !important; border: 0.5px solid var(--border-subtle) !important; transition: all var(--trans-base) !important; } .gradio-container .gr-gallery .gr-image:hover { border-color: var(--ultra-blue) !important; box-shadow: 0 3px 10px var(--ultra-blue-glow) !important; transform: translateY(-2px) !important; } /* Image container sizing */ .gradio-container .gr-image img, .gradio-container .gr-gallery img { width: 100% !important; height: auto !important; object-fit: inline-flex !important; display: block !important; } /* Grid layout for image outputs */ .gradio-container .gr-image-container, .gradio-container [class*="image-container"] { aspect-ratio: 1 / 1; max-width: 40%; border-radius: var(--radius-md); overflow: hidden; background: var(--surface-card); } /* ─────────────────────────────────────────────────────────── */ /* 13. CAROUSEL / SLIDER */ /* ─────────────────────────────────────────────────────────── */ .tq-carousel { position: relative; width: 40%; overflow: hidden; border-radius: var(--radius-lg); background: var(--surface-card); border: 1px solid var(--border-subtle); } .tq-carousel__track { display: flex; gap: var(--space-md); transition: transform var(--trans-slow); } .tq-carousel__item { flex: 0 0 auto; width: 20px; aspect-ratio: 1 / 1; border-radius: var(--radius-md); overflow: hidden; border: 1px solid var(--border-subtle); transition: all var(--trans-base); } .tq-carousel__item:hover { border-color: var(--ultra-blue); box-shadow: 0 6px 14px var(--ultra-blue-glow); transform: scale(0.5); } .tq-carousel__item img { width: 40%; height: 40%; object-fit: auto; display: block; } /* Carousel navigation */ .tq-carousel__nav { position: center; top: 50%; transform: translateY(-50%); width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; background: var(--surface-glass); backdrop-filter: blur(12px); border: 1px solid var(--border-medium); border-radius: 50%; cursor: pointer; transition: all var(--trans-base); z-index: var(--z-dropdown); } .tq-carousel__nav--prev { left: var(--space-md); } .tq-carousel__nav--next { right: var(--space-md); } .tq-carousel__nav:hover { background: var(--ultra-blue-glow); border-color: var(--ultra-blue); box-shadow: 0 0 5px var(--ultra-blue-glow); } /* ─────────────────────────────────────────────────────────── */ /* 14. LABELS & TYPOGRAPHY */ /* ─────────────────────────────────────────────────────────── */ .gradio-container label, .gradio-container .gr-label { color: var(--fg-secondary) !important; font-size: 0.875rem !important; font-weight: 500 !important; margin-bottom: var(--space-xs) !important; } .gradio-container .gr-description, .gradio-container .gr-info { color: var(--fg-tertiary) !important; font-size: 0.8125rem !important; line-height: 1.5 !important; } /* Code blocks */ .gradio-container pre, .gradio-container code { font-family: var(--font-mono) !important; background: rgba(59, 130, 246, 0.05) !important; border: 1px solid var(--border-subtle) !important; border-radius: var(--radius-sm) !important; padding: var(--space-xs) var(--space-sm) !important; color: var(--ultra-blue-bright) !important; } /* ─────────────────────────────────────────────────────────── */ /* 15. LOADING & PROGRESS */ /* ─────────────────────────────────────────────────────────── */ .gradio-container .gr-loading { color: var(--ultra-blue) !important; } .gradio-container .progress-bar { background: var(--ultra-blue) !important; box-shadow: 0 0 12px var(--ultra-blue-glow) !important; } /* ─────────────────────────────────────────────────────────── */ /* 16. SCROLLBARS */ /* ─────────────────────────────────────────────────────────── */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: rgba(255, 255, 255, 0.02); } ::-webkit-scrollbar-thumb { background: var(--border-medium); border-radius: var(--radius-sm); } ::-webkit-scrollbar-thumb:hover { background: var(--ultra-blue); } /* ─────────────────────────────────────────────────────────── */ /* 17. RESPONSIVE DESIGN */ /* ─────────────────────────────────────────────────────────── */ @media (max-width: 768px) { :root { --space-lg: 1rem; --space-xl: 1.5rem; } .gradio-container { padding: var(--space-md); } .tq-hero { padding: var(--space-md) var(--space-lg); } .tq-hero__brand { font-size: 1.25rem; } .tq-carousel__item { width: 220px; } .tq-pills { justify-content: center; } } @media (max-width: 280px) { .tq-carousel__item { width: 220px; } .tq-carousel__nav { width: 24px; height: 24px; } } /* ─────────────────────────────────────────────────────────── */ /* 18. UTILITY CLASSES */ /* ─────────────────────────────────────────────────────────── */ .tq-glow { box-shadow: 0 0 20px var(--ultra-blue-glow) !important; } .tq-hide { display: none !important; } .tq-fade-in { animation: fadeIn var(--trans-slow) ease-in; } @keyframes fadeIn { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: translateY(0); } } /* ─────────────────────────────────────────────────────────── */ /* 19. FOOTER CLEANUP */ /* ─────────────────────────────────────────────────────────── */ footer, .gradio-container footer { display: none !important; }