ecaragnano's picture
Upload 10 files
6fa98fc verified
@import url('https://fonts.googleapis.com/css2?family=Nunito:wght@400;500;600;700;800;900&family=Syne:wght@700;800&family=JetBrains+Mono:wght@400;500&display=swap');
/* ══════════════════════════════════════════════════════════════
BubbleBusters β€” Iridescent Soap Bubble Design System
Palette: Pearl White Β· Soft Lavender Β· Bubblegum Β· Mint
══════════════════════════════════════════════════════════════ */
:root {
/* backgrounds */
--bg: #f7f4ff;
--bg-card: rgba(255,255,255,0.72);
--bg-card-2: rgba(255,255,255,0.55);
--bg-input: rgba(255,255,255,0.80);
--bg-dark: #1a0e2e;
/* palette */
--lavender: #c5b4f0;
--lavender-mid: #a48de8;
--violet: #7c5cbf;
--violet-deep: #4b2d8a;
--mint: #6ee7c7;
--mint-mid: #3dcba8;
--blush: #ffb3c8;
--peach: #ffd6a5;
--sky: #a8d8f0;
--periwinkle: #8fa8f8;
/* text */
--text: #2d1f4e;
--text-mid: #6b5b8e;
--text-muted: #9d8fc4;
/* semantic */
--green: #3dcba8;
--red: #ff6b8a;
--amber: #ffb347;
--blue: #7aa6f8;
/* glass */
--glass-border: rgba(255,255,255,0.65);
--glass-shadow: 0 8px 32px rgba(124,92,191,.12), 0 2px 8px rgba(124,92,191,.06);
--font-display: 'Syne', sans-serif;
--font-body: 'Nunito', sans-serif;
--font-mono: 'JetBrains Mono', monospace;
}
/* ── Base β€” aurora gradient background ── */
body, .gradio-container {
background:
radial-gradient(ellipse at 15% 0%, rgba(197,180,240,.45) 0%, transparent 55%),
radial-gradient(ellipse at 85% 10%, rgba(168,216,240,.40) 0%, transparent 50%),
radial-gradient(ellipse at 50% 90%, rgba(110,231,199,.30) 0%, transparent 60%),
radial-gradient(ellipse at 5% 80%, rgba(255,179,200,.25) 0%, transparent 45%),
#f0ecff !important;
color: var(--text) !important;
font-family: var(--font-body) !important;
min-height: 100vh;
}
.gradio-container { max-width: 1520px !important; }
/* ── Keyframes ── */
@keyframes floatBubble {
0% { transform: translateY(0px) rotate(0deg) scale(1); opacity:.7; }
33% { transform: translateY(-14px) rotate(3deg) scale(1.04); opacity:.9; }
66% { transform: translateY(-8px) rotate(-2deg) scale(.97); opacity:.75; }
100% { transform: translateY(0px) rotate(0deg) scale(1); opacity:.7; }
}
@keyframes iridescent {
0% { filter: hue-rotate(0deg) brightness(1.0); }
50% { filter: hue-rotate(30deg) brightness(1.08); }
100% { filter: hue-rotate(0deg) brightness(1.0); }
}
@keyframes shimmerSlide {
0% { background-position: -600px 0; }
100% { background-position: 600px 0; }
}
@keyframes popIn {
0% { opacity:0; transform:scale(.92) translateY(8px); }
60% { opacity:1; transform:scale(1.02) translateY(-2px); }
100% { opacity:1; transform:scale(1) translateY(0); }
}
@keyframes pulseDot {
0%,100% { box-shadow: 0 0 0 0 rgba(61,203,168,.7); }
50% { box-shadow: 0 0 0 7px rgba(61,203,168,.0); }
}
/* ── Header ── */
#bb-header {
position: relative;
overflow: hidden;
background: linear-gradient(135deg,
rgba(255,255,255,.82) 0%,
rgba(245,240,255,.88) 50%,
rgba(240,248,255,.82) 100%);
backdrop-filter: blur(24px);
-webkit-backdrop-filter: blur(24px);
border: 1.5px solid var(--glass-border);
border-radius: 28px;
padding: 28px 36px;
margin-bottom: 20px;
box-shadow: var(--glass-shadow), inset 0 1px 0 rgba(255,255,255,.9);
animation: popIn .55s cubic-bezier(.34,1.56,.64,1) both;
}
/* Top shimmer stripe */
#bb-header::before {
content: '';
position: absolute;
top: 0; left: 0; right: 0; height: 3px;
background: linear-gradient(90deg,
var(--lavender), var(--mint), var(--blush),
var(--sky), var(--lavender));
background-size: 300% 100%;
animation: shimmerSlide 4s linear infinite;
border-radius: 28px 28px 0 0;
}
/* Subtle dot grid */
#bb-header::after {
content: '';
position: absolute; inset: 0;
background-image: radial-gradient(circle, rgba(124,92,191,.08) 1px, transparent 1px);
background-size: 22px 22px;
pointer-events: none;
}
/* ── Tabs ── */
.tab-nav {
background: rgba(255,255,255,.55) !important;
backdrop-filter: blur(12px);
border: 1.5px solid var(--glass-border) !important;
border-radius: 18px !important;
padding: 5px 5px !important;
margin-bottom: 14px !important;
box-shadow: 0 4px 16px rgba(124,92,191,.08);
gap: 4px !important;
display: flex !important;
}
.tab-nav button {
background: transparent !important;
color: var(--text-mid) !important;
border: none !important;
border-radius: 13px !important;
font-family: var(--font-body) !important;
font-size: 13px !important;
font-weight: 700 !important;
padding: 10px 20px !important;
letter-spacing: .2px !important;
transition: all .22s ease !important;
flex: 1;
}
.tab-nav button.selected {
background: linear-gradient(135deg, var(--violet), var(--lavender-mid)) !important;
color: #fff !important;
box-shadow: 0 4px 14px rgba(124,92,191,.35) !important;
}
.tab-nav button:hover:not(.selected) {
background: rgba(197,180,240,.25) !important;
color: var(--violet) !important;
}
/* ── Buttons ── */
.btn-primary {
background: linear-gradient(135deg, var(--violet), var(--lavender-mid)) !important;
color: #fff !important;
border: none !important;
border-radius: 50px !important;
font-family: var(--font-body) !important;
font-weight: 800 !important;
font-size: 13px !important;
padding: 12px 30px !important;
letter-spacing: .3px !important;
box-shadow: 0 6px 20px rgba(124,92,191,.35) !important;
transition: box-shadow .25s, transform .18s !important;
}
.btn-primary:hover {
box-shadow: 0 8px 28px rgba(124,92,191,.55) !important;
transform: translateY(-2px) !important;
}
.btn-primary:active { transform: translateY(0) !important; }
.btn-secondary {
background: rgba(255,255,255,.7) !important;
color: var(--violet) !important;
border: 1.5px solid rgba(197,180,240,.6) !important;
border-radius: 50px !important;
font-family: var(--font-body) !important;
font-weight: 700 !important;
font-size: 12px !important;
padding: 9px 18px !important;
transition: all .2s !important;
backdrop-filter: blur(8px) !important;
}
.btn-secondary:hover {
background: rgba(197,180,240,.3) !important;
border-color: var(--lavender-mid) !important;
box-shadow: 0 4px 14px rgba(124,92,191,.2) !important;
transform: translateY(-1px) !important;
}
/* ── Inputs / textareas ── */
textarea, input[type="text"],
.gr-textbox textarea, .gr-input input {
background: var(--bg-input) !important;
color: var(--text) !important;
border: 1.5px solid rgba(197,180,240,.5) !important;
border-radius: 16px !important;
font-family: var(--font-body) !important;
font-size: 13.5px !important;
font-weight: 500 !important;
transition: border-color .2s, box-shadow .2s !important;
box-shadow: 0 2px 8px rgba(124,92,191,.06) !important;
}
textarea:focus, input[type="text"]:focus {
border-color: var(--lavender-mid) !important;
box-shadow: 0 0 0 4px rgba(197,180,240,.3), 0 2px 8px rgba(124,92,191,.1) !important;
outline: none !important;
}
/* ── Chatbot ── */
.message {
border-radius: 18px !important;
font-family: var(--font-body) !important;
font-size: 13.5px !important;
font-weight: 500 !important;
line-height: 1.65 !important;
}
.message.user {
background: linear-gradient(135deg,
rgba(197,180,240,.25), rgba(168,216,240,.20)) !important;
border: 1.5px solid rgba(197,180,240,.45) !important;
}
.message.assistant {
background: linear-gradient(135deg,
rgba(255,255,255,.85), rgba(245,240,255,.75)) !important;
border: 1.5px solid rgba(255,255,255,.7) !important;
box-shadow: 0 4px 16px rgba(124,92,191,.08) !important;
}
/* ── Pipeline log ── */
#pipeline-log textarea {
font-family: var(--font-mono) !important;
font-size: 11.5px !important;
background: #1a0e2e !important;
color: #c5b4f0 !important;
border: 1.5px solid rgba(197,180,240,.25) !important;
border-radius: 16px !important;
line-height: 1.75 !important;
box-shadow: inset 0 2px 12px rgba(0,0,0,.2) !important;
height: 340px !important;
min-height: 340px !important;
max-height: 340px !important;
overflow-y: scroll !important;
resize: vertical !important;
white-space: pre !important;
word-break: keep-all !important;
user-select: text !important;
-webkit-user-select: text !important;
}
/* ── Section labels ── */
.section-label {
font-family: var(--font-body);
color: var(--violet);
font-weight: 800;
font-size: 10.5px;
text-transform: uppercase;
letter-spacing: 2.5px;
margin-bottom: 12px;
display: flex;
align-items: center;
gap: 10px;
}
.section-label::after {
content: '';
flex: 1;
height: 1.5px;
background: linear-gradient(90deg, rgba(197,180,240,.7), transparent);
border-radius: 2px;
}
/* ── Accordion ── */
.gr-accordion {
background: var(--bg-card) !important;
backdrop-filter: blur(16px) !important;
border: 1.5px solid var(--glass-border) !important;
border-radius: 18px !important;
box-shadow: var(--glass-shadow) !important;
}
.gr-accordion > div:first-child {
border-radius: 18px 18px 0 0 !important;
}
/* ── Radio / checkbox ── */
.gr-radio label, .gr-checkbox label {
color: var(--text-mid) !important;
font-family: var(--font-body) !important;
font-size: 12px !important;
font-weight: 600 !important;
}
/* ── Misc cards / panels ── */
.gr-form { background: transparent !important; }
label, .gr-form label {
color: var(--text-mid) !important;
font-family: var(--font-body) !important;
font-size: 12px !important;
font-weight: 600 !important;
}
.gr-box, .gr-panel {
background: var(--bg-card) !important;
backdrop-filter: blur(16px) !important;
border: 1.5px solid var(--glass-border) !important;
border-radius: 20px !important;
box-shadow: var(--glass-shadow) !important;
}
/* ── Scrollbars ── */
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
background: linear-gradient(var(--lavender), var(--mint));
border-radius: 10px;
}
/* ── Plotly override: white backgrounds look wrong on aurora bg ── */
.js-plotly-plot .plotly .bg { fill: transparent !important; }