Teste / static /app.css
GuXSs's picture
Nuclear fix: pin input every 100ms via embedded HTML script + crush wrap min-height 100%
0903d9b verified
Raw
History Blame Contribute Delete
12.5 kB
/* =========================================================
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;
}
}