/* Light mauve / blue gentle theme */ /* Core variables */ :root { --bg-gradient: linear-gradient(135deg, #e3e9ff 0%, #d4dafc 35%, #c7d3fa 65%, #c0cef5 100%); --panel-bg: rgba(255,255,255,0.55); --panel-border: rgba(160,170,200,0.55); --text-color: #1d2b3a; --accent: #1d6fd4; --accent-hover: #3d8af0; --legend-bg: rgba(255,255,255,0.70); --legend-border: rgba(140,160,190,0.55); --scrollbar-bg: #d0d9f2; --scrollbar-thumb: #9ab4e6; --scrollbar-thumb-hover: #799dd9; --radius: 18px; --transition: 0.28s cubic-bezier(.4,.14,.3,1); --font-stack: 'Inter','Segoe UI',system-ui,sans-serif; } body, .gradio-container { background: var(--bg-gradient) !important; font-family: var(--font-stack); color: var(--text-color); min-height: 100vh; margin: 0; padding-bottom: 40px; transition: background 0.6s ease, color 0.4s ease; -webkit-font-smoothing: antialiased; } /* Floating hero */ .hero-banner { position: relative; width: 100%; border-radius: 24px; margin: 18px 0 30px 0; background: linear-gradient(125deg, #6289ff, #7d9dff 40%, #8bb1ff 75%); box-shadow: 0 14px 40px -10px rgba(60,85,140,0.45), 0 4px 18px -6px rgba(60,85,140,0.35); padding: 34px 30px; overflow: hidden; } .hero-banner:before, .hero-banner:after { content:""; position:absolute; width:240px; height:240px; background: radial-gradient(circle at 30% 30%, rgba(255,255,255,0.55), transparent 70%); top:-60px; left:-60px; filter: blur(10px); opacity: 0.55; pointer-events:none; } .hero-banner:after { top:auto; left:auto; bottom:-70px; right:-40px; background: radial-gradient(circle at 70% 70%, rgba(255,255,255,0.45), transparent 65%); opacity:0.45; } .floating { animation: floatY 6.5s ease-in-out infinite; } @keyframes floatY { 0% { transform: translateY(0px); } 50% { transform: translateY(-10px); } 100% { transform: translateY(0px); } } .hero-title { font-size: 2rem; font-weight: 700; letter-spacing: 1px; color: #ffffff; margin: 0; line-height: 1.15; text-shadow: 0 4px 18px rgba(0,0,0,0.35); position: relative; z-index: 2; } /* Tagline forced white */ .intro-tagline { font-size: 1rem; font-weight: 500; letter-spacing: 0.5px; margin: 0 6px 24px 6px; color: #ffffff !important; text-shadow: 0 2px 8px rgba(0,0,0,0.35); background: rgba(255,255,255,0.10); padding: 10px 16px; border-radius: 14px; display: inline-block; backdrop-filter: blur(6px); box-shadow: 0 6px 24px -10px rgba(60,85,140,0.50); } /* Panels */ .panel.glass { background: var(--panel-bg) !important; border: 1px solid var(--panel-border) !important; backdrop-filter: blur(14px) saturate(160%); border-radius: var(--radius) !important; padding: 20px !important; box-shadow: 0 10px 30px -12px rgba(70,80,120,0.45); position: relative; overflow: hidden; } .panel.glass:before { content:""; position:absolute; inset:0; background: radial-gradient(circle at 80% 10%, rgba(255,255,255,0.35), transparent 55%), radial-gradient(circle at 15% 85%, rgba(255,255,255,0.25), transparent 60%); pointer-events:none; opacity:0.55; } #view-mode-radio label { background: rgba(255,255,255,0.55); border: 1px solid rgba(140,160,190,0.6); border-radius: 12px; padding: 7px 12px; cursor: pointer; transition: var(--transition); font-weight: 500; font-size: 0.85rem; color: #2d3f55; box-shadow: 0 2px 8px -4px rgba(80,100,140,0.35); } #view-mode-radio label:hover { background: rgba(255,255,255,0.75); } #view-mode-radio input:checked + label { background: linear-gradient(135deg, var(--accent), var(--accent-hover)); border-color: rgba(255,255,255,0.8); color: #fff; box-shadow: 0 4px 15px -6px rgba(30,70,130,0.65); } #alpha-slider input[type=range] { accent-color: var(--accent); } #run-btn, #clear-btn { font-weight: 600; border-radius: 16px !important; padding: 12px 20px !important; letter-spacing: 0.6px; transition: var(--transition); border: none !important; font-size: 0.9rem; } #run-btn { background: linear-gradient(135deg, var(--accent), var(--accent-hover)) !important; color: #fff !important; box-shadow: 0 8px 24px -10px rgba(30,70,130,0.65); } #run-btn:hover { transform: translateY(-4px); box-shadow: 0 12px 30px -10px rgba(30,70,130,0.75); } #clear-btn { background: rgba(200,60,60,0.15) !important; color: #9d2e2e !important; border: 1px solid rgba(200,60,60,0.35) !important; box-shadow: 0 4px 16px -10px rgba(200,60,60,0.55); } #clear-btn:hover { background: rgba(200,60,60,0.30) !important; color: #6a1212 !important; transform: translateY(-2px); } .download-anchor { font-size: 0.95rem; font-weight: 600; text-decoration: none; color: var(--accent); display: inline-block; margin-top: 10px; transition: var(--transition); letter-spacing: 0.5px; } .download-anchor:hover { color: var(--accent-hover); text-shadow: 0 0 6px rgba(120,170,255,0.55); } /* Legend */ .legend-wrapper { margin-top: 14px; background: var(--legend-bg); border: 1px solid var(--legend-border); border-radius: 16px; padding: 14px 16px 12px; position: relative; overflow: hidden; backdrop-filter: blur(12px); animation: fadeIn 0.5s ease; box-shadow: 0 10px 28px -14px rgba(70,80,120,0.55); } .legend-header { display: flex; align-items: center; justify-content: space-between; font-weight: 600; letter-spacing: 0.6px; color: var(--text-color); margin-bottom: 6px; } .legend-toggle-btn { background: rgba(255,255,255,0.55); border: 1px solid rgba(130,150,180,0.55); padding: 4px 11px; cursor: pointer; border-radius: 10px; font-size: 0.78rem; color: #2d3f55; transition: var(--transition); box-shadow: 0 3px 12px -6px rgba(60,80,120,0.35); } .legend-toggle-btn:hover { background: rgba(255,255,255,0.8); transform: translateY(-2px); } .legend-body { display: flex; flex-direction: column; gap: 10px; max-height: 240px; overflow-y: auto; padding-right: 4px; transition: max-height 0.5s ease; } .legend-body.collapsed { max-height: 0; overflow: hidden; padding: 0; margin: 0; } .legend-item { display: flex; gap: 14px; align-items: center; background: rgba(255,255,255,0.55); padding: 8px 12px; border-radius: 14px; border: 1px solid rgba(130,150,180,0.45); position: relative; backdrop-filter: blur(6px); transition: var(--transition); box-shadow: 0 4px 16px -10px rgba(60,80,120,0.4); } .legend-item:hover { background: rgba(255,255,255,0.75); transform: translateY(-3px); } .legend-color { width: 42px; height: 42px; border-radius: 11px; background: var(--c); box-shadow: 0 4px 18px -8px var(--c); border: 2px solid rgba(255,255,255,0.7); position: relative; } .legend-color:after { content:""; position:absolute; inset:0; border-radius: 9px; background: linear-gradient(140deg, rgba(255,255,255,0.40), transparent 70%); mix-blend-mode: overlay; } .legend-meta { display: flex; flex-direction: column; font-size: 0.78rem; line-height: 1.1rem; letter-spacing: 0.4px; } .legend-name { font-weight: 600; font-size: 0.9rem; text-transform: uppercase; color:#2e3f58; } .legend-stats { display: flex; gap: 12px; font-size: 0.68rem; opacity: 0.85; color:#415671; } .legend-count { color: #9b6c10; } .legend-pct { color: #115f9d; } .legend-empty { opacity: 0.65; font-style: italic; font-size: 0.9rem; padding: 4px; color:#2d3f55; } /* Scrollbars */ .legend-body::-webkit-scrollbar { width: 9px; } .legend-body::-webkit-scrollbar-track { background: var(--scrollbar-bg); border-radius: 10px; } .legend-body::-webkit-scrollbar-thumb { background: var(--scrollbar-thumb); border-radius: 10px; border: 1px solid rgba(255,255,255,0.4); } .legend-body::-webkit-scrollbar-thumb:hover { background: var(--scrollbar-thumb-hover); } /* Images */ .gradio-image img, .gradio-image canvas { border-radius: 16px !important; box-shadow: 0 10px 32px -14px rgba(70,80,120,0.55); } /* Animations */ @keyframes fadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } /* Disabled slider style */ #alpha-slider input[disabled] { filter: grayscale(75%); cursor: not-allowed; opacity: 0.6; } /* Markdown headings */ .markdown-body h4, .markdown-body h3, .markdown-body h2 { color: #2d3f55; } /* Links */ a { color: var(--accent); } a:hover { color: var(--accent-hover); text-decoration: underline; } /* Responsive */ @media (max-width: 980px) { .hero-banner { padding: 28px 22px; } .hero-title { font-size: 1.55rem; } #run-btn, #clear-btn { width: 100%; } .legend-body { max-height: 200px; } } #bg-opacity-slider input[type=range] { accent-color: var(--accent); } /* Disabled range (already present for alpha; ensure both look consistent) */ #bg-opacity-slider input[disabled] { filter: grayscale(75%); cursor: not-allowed; opacity: 0.55; }