/* ========================================================= Nyra Chat — Void Observatory CRITICAL: no 100vh / min-height:100% loops (HF iframe resizer) ========================================================= */ :root { --nyra-void: #07070a; --nyra-graphite: #121218; --nyra-smoke: #1a1a22; --nyra-smoke-soft: rgba(255, 255, 255, 0.04); --nyra-ember-glass: rgba(245, 166, 35, 0.12); --nyra-amber: #f5a623; --nyra-amber-bloom: #ffb84d; --nyra-starlight: #f4f4f5; --nyra-silver: #8b8b96; --nyra-hairline: rgba(255, 255, 255, 0.08); --nyra-crimson: #f07178; --nyra-mint: #7fd99a; --nyra-ink: #0a0a0b; --nyra-radius-bubble: 18px; --nyra-radius-input: 16px; --nyra-max-chat: 820px; --nyra-font-display: "Syne", system-ui, sans-serif; --nyra-font-body: "IBM Plex Sans", system-ui, sans-serif; --nyra-font-mono: "IBM Plex Mono", ui-monospace, monospace; color-scheme: dark; } /* ---- Kill iframe infinite-grow (HF Spaces) ---- */ html, body { background: var(--nyra-void) !important; color: var(--nyra-starlight) !important; font-family: var(--nyra-font-body) !important; height: auto !important; min-height: 0 !important; max-height: none !important; overflow-x: hidden !important; overflow-y: auto !important; } .gradio-container, .gradio-container.gradio-container, .gradio-container[data-iframe-height], main.app, main.fillable, main.svelte-18evea3, .wrap, .wrap.svelte-czcr5b, .contain, .contain.svelte-czcr5b, .fillable { height: auto !important; min-height: 0 !important; max-height: none !important; flex-grow: 0 !important; flex: 0 0 auto !important; background: var(--nyra-void) !important; color: var(--nyra-starlight) !important; font-family: var(--nyra-font-body) !important; } /* Gradio injects min-height:100% inline on .wrap — crush it */ div.wrap[style], div.contain[style] { min-height: 0 !important; height: auto !important; flex-grow: 0 !important; } .gradio-container { max-width: 100% !important; padding: 0 !important; margin: 0 auto !important; } /* Soft ambient glow — NO transform/scale (scale expands iframe bounds) */ body::before { content: ""; position: fixed; inset: 0; pointer-events: none; z-index: 0; background: radial-gradient(ellipse 70% 45% at 12% 8%, rgba(245, 166, 35, 0.08), transparent 55%), radial-gradient(ellipse 50% 40% at 88% 85%, rgba(255, 184, 77, 0.04), transparent 50%), var(--nyra-void); } #nyra-root, .main, .wrap, .contain, .column { position: relative; z-index: 1; } /* Hide Gradio chrome */ footer, .footer, #footer, .gradio-container footer, main > footer, .built-with, button.show-api, button.settings { display: none !important; height: 0 !important; overflow: hidden !important; margin: 0 !important; padding: 0 !important; } /* Header */ #nyra-header { border-bottom: 1px solid var(--nyra-hairline) !important; background: rgba(7, 7, 10, 0.85) !important; backdrop-filter: blur(12px); padding: 0.6rem 1rem !important; flex: 0 0 auto !important; } .nyra-brand-row { display: flex; align-items: center; gap: 0.65rem; flex-wrap: wrap; } .nyra-logo-mark { width: 34px; height: 34px; border-radius: 11px; display: inline-flex; align-items: center; justify-content: center; background: linear-gradient(145deg, rgba(245, 166, 35, 0.22), rgba(255, 255, 255, 0.03)); border: 1px solid rgba(245, 166, 35, 0.35); color: var(--nyra-amber); } .nyra-wordmark { font-family: var(--nyra-font-display); font-weight: 700; font-size: 1.15rem; letter-spacing: 0.03em; color: var(--nyra-starlight); } .nyra-wordmark span { color: var(--nyra-silver); font-weight: 500; font-size: 0.85rem; margin-left: 0.35rem; font-family: var(--nyra-font-body); } .nyra-status { display: inline-flex; align-items: center; gap: 0.4rem; font-size: 0.75rem; color: var(--nyra-silver); padding: 0.25rem 0.65rem; border-radius: 999px; border: 1px solid var(--nyra-hairline); background: var(--nyra-smoke-soft); } .nyra-status-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--nyra-mint); box-shadow: 0 0 8px var(--nyra-mint); } .nyra-status-dot.mock { background: var(--nyra-amber); box-shadow: 0 0 8px var(--nyra-amber); } /* Sidebar — fixed, no 100vh */ #nyra-sidebar { background: var(--nyra-graphite) !important; border-right: 1px solid var(--nyra-hairline) !important; padding: 0.85rem !important; min-height: 0 !important; height: auto !important; flex-grow: 0 !important; } /* Main */ #nyra-main { padding: 0.75rem 1rem 1rem !important; max-width: calc(var(--nyra-max-chat) + 3rem); margin: 0 auto; min-height: 0 !important; height: auto !important; overflow: visible !important; } /* Hero */ #nyra-hero { text-align: center; padding: 1.25rem 0.5rem 0.75rem; } #nyra-hero h1 { font-family: var(--nyra-font-display); font-size: 1.65rem; font-weight: 700; color: var(--nyra-starlight); margin: 0.6rem 0 0.35rem; } #nyra-hero p { color: var(--nyra-silver); font-size: 0.92rem; margin: 0 auto; max-width: 28rem; line-height: 1.5; } .nyra-hero-icon { width: 52px; height: 52px; margin: 0 auto; border-radius: 16px; display: flex; align-items: center; justify-content: center; color: var(--nyra-amber); background: linear-gradient(160deg, rgba(245, 166, 35, 0.2), rgba(255, 255, 255, 0.03)); border: 1px solid rgba(245, 166, 35, 0.3); } /* Chips */ #nyra-chips { display: flex; flex-wrap: wrap; gap: 0.5rem; justify-content: center; max-width: var(--nyra-max-chat); margin: 0.5rem auto 0.75rem; } #nyra-chips button, .nyra-chip { border-radius: 999px !important; border: 1px solid var(--nyra-hairline) !important; background: rgba(255, 255, 255, 0.03) !important; color: var(--nyra-starlight) !important; font-size: 0.82rem !important; padding: 0.45rem 0.85rem !important; box-shadow: none !important; } #nyra-chips button:hover, .nyra-chip:hover { border-color: rgba(245, 166, 35, 0.45) !important; background: var(--nyra-ember-glass) !important; } /* Chatbot — FIXED pixel height only (no vh) */ #nyra-chatbot { height: 380px !important; max-height: 380px !important; min-height: 380px !important; flex: 0 0 380px !important; overflow: hidden !important; background: transparent !important; border: none !important; box-shadow: none !important; } #nyra-chatbot .wrapper, #nyra-chatbot .bubble-wrap { background: transparent !important; border: none !important; box-shadow: none !important; height: 380px !important; max-height: 380px !important; overflow-y: auto !important; } #nyra-chatbot label, #nyra-chatbot [data-testid="block-label"] { display: none !important; } #nyra-chatbot .bot .message, #nyra-chatbot .message.bot, #nyra-chatbot [data-testid="bot"] .message, #nyra-chatbot .bot .message-content { background: var(--nyra-smoke) !important; border: 1px solid var(--nyra-hairline) !important; border-radius: var(--nyra-radius-bubble) !important; color: var(--nyra-starlight) !important; } #nyra-chatbot .user .message, #nyra-chatbot .message.user, #nyra-chatbot [data-testid="user"] .message, #nyra-chatbot .user .message-content { background: var(--nyra-ember-glass) !important; border: 1px solid rgba(245, 166, 35, 0.22) !important; border-radius: var(--nyra-radius-bubble) !important; color: var(--nyra-starlight) !important; } #nyra-chatbot .message, #nyra-chatbot .prose, #nyra-chatbot p { font-size: 0.95rem; line-height: 1.5; } #nyra-chatbot code, #nyra-chatbot pre { font-family: var(--nyra-font-mono) !important; background: rgba(0, 0, 0, 0.35) !important; border-radius: 8px; } /* ========== INPUT — locked, cannot grow ========== */ #nyra-input-row { max-width: var(--nyra-max-chat) !important; width: 100% !important; margin: 0.65rem auto 0.5rem !important; padding: 6px 8px !important; border-radius: var(--nyra-radius-input) !important; background: rgba(18, 18, 24, 0.85) !important; border: 1px solid var(--nyra-hairline) !important; box-shadow: 0 8px 28px rgba(0, 0, 0, 0.4) !important; display: flex !important; flex-direction: row !important; flex-wrap: nowrap !important; align-items: center !important; gap: 8px !important; height: 56px !important; min-height: 56px !important; max-height: 56px !important; flex: 0 0 56px !important; overflow: hidden !important; box-sizing: border-box !important; } #nyra-input-row:focus-within { border-color: rgba(245, 166, 35, 0.5) !important; } #nyra-input, #nyra-input.block { flex: 1 1 auto !important; height: 44px !important; min-height: 44px !important; max-height: 44px !important; overflow: hidden !important; background: transparent !important; border: none !important; box-shadow: none !important; padding: 0 !important; margin: 0 !important; } #nyra-input label, #nyra-input .input-container, #nyra-input .form { height: 44px !important; min-height: 44px !important; max-height: 44px !important; margin: 0 !important; padding: 0 !important; background: transparent !important; border: none !important; box-shadow: none !important; overflow: hidden !important; display: flex !important; align-items: center !important; } /* Absolute lock on the actual textarea element */ #nyra-input textarea, #nyra-input input[type="text"], #nyra-input textarea.scroll-hide, textarea[data-testid="textbox"] { height: 40px !important; min-height: 40px !important; max-height: 40px !important; line-height: 40px !important; padding: 0 12px !important; margin: 0 !important; border: none !important; box-shadow: none !important; background: transparent !important; color: var(--nyra-starlight) !important; font-size: 0.95rem !important; font-family: var(--nyra-font-body) !important; resize: none !important; overflow: hidden !important; white-space: nowrap !important; field-sizing: fixed !important; box-sizing: border-box !important; } #nyra-input textarea::placeholder { color: var(--nyra-silver) !important; line-height: 40px !important; } #nyra-send, #nyra-send.lg { height: 40px !important; min-height: 40px !important; max-height: 40px !important; min-width: 88px !important; flex: 0 0 auto !important; align-self: center !important; background: linear-gradient(145deg, var(--nyra-amber-bloom), var(--nyra-amber)) !important; color: var(--nyra-ink) !important; border: none !important; border-radius: 999px !important; font-weight: 600 !important; box-shadow: 0 0 18px rgba(245, 166, 35, 0.3) !important; padding: 0 1rem !important; } /* Ghost buttons */ .nyra-ghost, #nyra-new-chat, #nyra-clear, #nyra-lang { background: transparent !important; border: 1px solid var(--nyra-hairline) !important; color: var(--nyra-starlight) !important; border-radius: 12px !important; } .nyra-ghost:hover, #nyra-new-chat:hover, #nyra-clear:hover, #nyra-lang:hover { border-color: rgba(245, 166, 35, 0.4) !important; background: var(--nyra-ember-glass) !important; } /* Settings */ #nyra-settings { border: 1px solid var(--nyra-hairline) !important; border-radius: 12px !important; background: rgba(18, 18, 24, 0.55) !important; margin-top: 0.75rem; } #nyra-settings .label-wrap, #nyra-settings span, label, .block > .label-wrap span { color: var(--nyra-silver) !important; } input[type="range"] { accent-color: var(--nyra-amber); } /* Banner */ #nyra-banner, #nyra-banner .prose, #nyra-banner p { max-width: var(--nyra-max-chat); margin: 0.35rem auto !important; color: var(--nyra-silver) !important; font-size: 0.8rem !important; } #nyra-banner { padding: 0.45rem 0.75rem; border-radius: 10px; border: 1px solid var(--nyra-hairline); background: rgba(245, 166, 35, 0.08); } /* Form resets — keep heights under control */ .form, .block { background: transparent !important; box-shadow: none !important; } [data-lucide] { width: 1.1em; height: 1.1em; stroke-width: 1.85; } body.nyra-has-messages #nyra-hero, body.nyra-has-messages #nyra-chips { display: none !important; } @media (max-width: 768px) { #nyra-sidebar { border-right: none !important; border-bottom: 1px solid var(--nyra-hairline) !important; } #nyra-chatbot, #nyra-chatbot .wrapper, #nyra-chatbot .bubble-wrap { height: 300px !important; max-height: 300px !important; min-height: 300px !important; } }