/* ───────────────────────────────────────────────────────────── NEUROVIE – GLOBAL ───────────────────────────────────────────────────────────── */ :root { --nv-bg: #f7f2ec; --nv-card: #fffdf8; --nv-border: #e5d8c7; --nv-accent: #f38a6b; --nv-accent-soft: #ffe4d4; --nv-text-main: #262626; --nv-text-muted: #6c6459; --nv-radius-lg: 32px; --nv-radius-md: 24px; --nv-radius-sm: 18px; } /* Page layout */ .gradio-container { font-family: system-ui, -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", sans-serif; background: radial-gradient(circle at top left, #fff6ee 0, #f7f2ec 50%, #f2ece6 100%); max-width: 960px !important; margin: 0 auto !important; padding: 32px 0 40px 0; position: relative; } /* Ambient blobs */ @keyframes nvBlobFloat { 0% { transform: translate3d(0, 0, 0) scale(1); opacity: 0.6; } 50% { transform: translate3d(10px, -8px, 0) scale(1.04); opacity: 0.9; } 100% { transform: translate3d(0, 0, 0) scale(1); opacity: 0.6; } } .gradio-container::before, .gradio-container::after { content: ""; position: fixed; width: 260px; height: 260px; border-radius: 999px; z-index: -1; filter: blur(3px); animation: nvBlobFloat 14s ease-in-out infinite alternate; } .gradio-container::before { top: -80px; left: -60px; background: radial-gradient(circle at 30% 30%, #ffd5c5, transparent 60%); } .gradio-container::after { bottom: -120px; right: -40px; background: radial-gradient(circle at 70% 70%, #c3e4ff, transparent 60%); animation-delay: 4s; } /* ───────────────────────────────────────────────────────────── SHELL & TEXT ───────────────────────────────────────────────────────────── */ .nv-shell { background: var(--nv-card); border-radius: var(--nv-radius-lg); border: 1px solid var(--nv-border); box-shadow: 0 20px 40px rgba(15, 23, 42, 0.12), 0 1px 0 rgba(255, 255, 255, 0.8) inset; padding: 26px 24px 22px; animation: nvCardIn 500ms ease-out; } @keyframes nvCardIn { 0% { opacity: 0; transform: translateY(8px) scale(0.98); } 100% { opacity: 1; transform: translateY(0) scale(1); } } .nv-badge { font-size: 0.78rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--nv-text-muted); } .nv-title { font-size: 1.9rem; font-weight: 650; margin-top: 4px; } .nv-subtitle { font-size: 0.95rem; color: var(--nv-text-muted); margin-top: 6px; margin-bottom: 18px; } /* ───────────────────────────────────────────────────────────── SECTIONS + LABELS ───────────────────────────────────────────────────────────── */ .nv-section { background: #fbf6ee; border-radius: var(--nv-radius-md); border: 1px solid #e6dac7; padding: 16px 16px 14px; margin-bottom: 14px; } .nv-label { font-size: 0.78rem; letter-spacing: 0.12em; text-transform: uppercase; color: #a29078; margin-bottom: 8px; } /* ───────────────────────────────────────────────────────────── PILLS (radios) ───────────────────────────────────────────────────────────── */ .nv-pills label { border-radius: 999px !important; border: 1px solid #decfbb !important; padding: 6px 11px !important; font-size: 0.84rem !important; background: #fdf8f1; transition: background 150ms ease, transform 120ms ease, box-shadow 120ms ease; } .nv-pills input:checked + label { background: linear-gradient(135deg, #ffe4d4, #ffd6c6) !important; border-color: var(--nv-accent) !important; color: var(--nv-text-main) !important; box-shadow: 0 4px 10px rgba(243, 138, 107, 0.18); transform: translateY(-1px); } /* ───────────────────────────────────────────────────────────── BUTTON – card-game “breathing” + press animation ───────────────────────────────────────────────────────────── */ @keyframes nvPulse { 0% { transform: translateY(0) scale(1); box-shadow: 0 10px 22px rgba(243, 138, 107, 0.3); } 50% { transform: translateY(-1px) scale(1.02); box-shadow: 0 14px 26px rgba(243, 138, 107, 0.4); } 100% { transform: translateY(0) scale(1); box-shadow: 0 10px 22px rgba(243, 138, 107, 0.3); } } /* Style the main Gradio button */ [data-testid="button"] > button { border-radius: 999px !important; padding: 10px 20px !important; font-weight: 600 !important; font-size: 0.96rem !important; border: none !important; background: radial-gradient(circle at 0 0, #ffe4d4, transparent 55%), linear-gradient(135deg, #f6a37d, #f38a6b) !important; color: #fff !important; animation: nvPulse 4s ease-in-out infinite; transform-origin: center; } [data-testid="button"] > button:hover { animation-duration: 1.4s; } [data-testid="button"] > button:active { transform: translateY(1px) scale(0.99); box-shadow: 0 6px 16px rgba(243, 138, 107, 0.35) !important; } /* ───────────────────────────────────────────────────────────── CARD GRID + CARD ANIMATIONS ───────────────────────────────────────────────────────────── */ .nv-card-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 10px; } /* Deal-in animation (cards appearing) */ @keyframes nvCardDeal { 0% { opacity: 0; transform: translate3d(0, 16px, 0) rotate(-2deg) scale(0.7); } 60% { opacity: 1; transform: translate3d(0, -4px, 0) rotate(1deg) scale(1.02); } 100% { opacity: 1; transform: translate3d(0, 0, 0) rotate(0deg) scale(1); } } /* Hover "lift" + subtle wiggle */ @keyframes nvCardHoverWiggle { 0% { transform: translateY(0) rotate(0deg) scale(1); } 50% { transform: translateY(-3px) rotate(0.4deg) scale(1.02); } 100% { transform: translateY(-2px) rotate(0deg) scale(1.01); } } .nv-card { border-radius: var(--nv-radius-sm); padding: 10px 11px; font-size: 0.9rem; border: 1px solid rgba(0, 0, 0, 0.03); box-shadow: 0 6px 14px rgba(15, 23, 42, 0.06); opacity: 0; transform: scale(0.7); animation: nvCardDeal 420ms ease-out forwards; cursor: default; transition: box-shadow 160ms ease, transform 160ms ease; } .nv-card:hover { box-shadow: 0 12px 24px rgba(15, 23, 42, 0.15); animation: nvCardHoverWiggle 400ms ease-out forwards; } /* Category color themes */ .nv-card--cat-alimentation { background: radial-gradient(circle at 0 0, #e3f7df 0, #ffffff 60%); border-color: #c3e5bc; } .nv-card--cat-mouvement { background: radial-gradient(circle at 0 0, #dbeeff 0, #ffffff 60%); border-color: #b9d8ff; } .nv-card--cat-cerveau { background: radial-gradient(circle at 0 0, #ffd6d6 0, #ffffff 60%); border-color: #f7b6b6; } .nv-card--cat-liens { background: radial-gradient(circle at 0 0, #ffead1 0, #ffffff 60%); border-color: #f6d2a3; } .nv-card--cat-bien-etre { background: radial-gradient(circle at 0 0, #ffe1f2 0, #ffffff 60%); border-color: #f3c3e4; } .nv-card-title { font-size: 0.72rem; letter-spacing: 0.14em; text-transform: uppercase; color: #7c6a9a; margin-bottom: 4px; } /* ───────────────────────────────────────────────────────────── HIDE GRADIO LOADING / QUEUE STATUS ───────────────────────────────────────────────────────────── */ [data-testid="queue-status"], [data-testid="progress-bar"], [data-testid="block-info"] { display: none !important; } /* also hide HF footer for a cleaner "game" feel */ footer { display: none !important; } /* ───────────────────────────────────────────────────────────── MOBILE ───────────────────────────────────────────────────────────── */ @media (max-width: 640px) { .nv-shell { border-radius: 24px; padding: 20px 16px 18px; } .nv-title { font-size: 1.6rem; } .nv-section { padding: 13px 12px 10px; } }