|
|
|
|
|
|
|
|
|
|
|
: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; |
|
|
} |
|
|
|
|
|
|
|
|
.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; |
|
|
} |
|
|
|
|
|
|
|
|
.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); |
|
|
} |
|
|
|
|
|
|
|
|
.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-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; |
|
|
} |
|
|
|
|
|
|
|
|
.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); |
|
|
} |
|
|
|
|
|
|
|
|
.gradio-image img, .gradio-image canvas { |
|
|
border-radius: 16px !important; |
|
|
box-shadow: 0 10px 32px -14px rgba(70,80,120,0.55); |
|
|
} |
|
|
|
|
|
|
|
|
@keyframes fadeIn { |
|
|
from { opacity: 0; transform: translateY(8px); } |
|
|
to { opacity: 1; transform: translateY(0); } |
|
|
} |
|
|
|
|
|
|
|
|
#alpha-slider input[disabled] { |
|
|
filter: grayscale(75%); |
|
|
cursor: not-allowed; |
|
|
opacity: 0.6; |
|
|
} |
|
|
|
|
|
|
|
|
.markdown-body h4, .markdown-body h3, .markdown-body h2 { |
|
|
color: #2d3f55; |
|
|
} |
|
|
|
|
|
|
|
|
a { color: var(--accent); } |
|
|
a:hover { color: var(--accent-hover); text-decoration: underline; } |
|
|
|
|
|
|
|
|
@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); |
|
|
} |
|
|
|
|
|
|
|
|
#bg-opacity-slider input[disabled] { |
|
|
filter: grayscale(75%); |
|
|
cursor: not-allowed; |
|
|
opacity: 0.55; |
|
|
} |