NeoPy's picture
Update assets/theme.py
35d8c55 verified
apple_css = """
:root {
--ios-blur: 20px;
--ios-radius: 20px;
--ios-btn-radius: 14px;
--ios-blue: #007AFF;
--ios-blue-hover: #005ecb;
--ios-bg-light: #F2F2F7;
--ios-card-light: #FFFFFF;
--ios-text-primary: #000000;
--ios-text-secondary: #8E8E93;
--ios-border-light: rgba(60, 60, 67, 0.12);
--ios-bg-dark: #000000;
--ios-card-dark: #1C1C1E;
--ios-text-primary-dark: #FFFFFF;
--ios-text-secondary-dark: #98989F;
--ios-border-dark: rgba(84, 84, 88, 0.35);
}
/* --- Global Reset & Typography --- */
body, .gradio-container {
font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, Helvetica, Arial, sans-serif !important;
-webkit-font-smoothing: antialiased !important;
color: var(--ios-text-primary);
}
.gradio-container {
max-width: 900px !important;
background-color: var(--ios-bg-light) !important;
padding: 24px !important;
}
/* --- Scrollbar --- */
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-track {
background: transparent;
}
::-webkit-scrollbar-thumb {
background: #c1c1c1;
border-radius: 4px;
}
/* --- Header --- */
.header-container {
text-align: center;
margin-bottom: 32px;
margin-top: 16px;
}
.main-title {
font-size: 34px !important;
font-weight: 700 !important;
letter-spacing: -0.5px !important;
margin: 0 0 8px 0 !important;
color: var(--ios-text-primary) !important;
}
.subtitle {
font-size: 17px !important;
font-weight: 400 !important;
color: var(--ios-text-secondary) !important;
margin: 0 !important;
}
/* --- iOS Card Design --- */
.input-section, .output-section {
background: var(--ios-card-light);
border-radius: var(--ios-radius) !important;
padding: 24px !important;
margin-bottom: 20px !important;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05) !important;
border: 1px solid rgba(255,255,255,0.4) !important;
}
/* --- Inputs (Text, Dropdowns, Sliders) --- */
textarea, input[type="text"], select, .gr-textbox, .gr-dropdown {
background-color: #EFEFF4 !important; /* iOS Input Background */
border: 1px solid transparent !important;
border-radius: 10px !important;
padding: 12px 14px !important;
font-size: 17px !important;
color: var(--ios-text-primary) !important;
transition: all 0.2s ease !important;
-webkit-appearance: none !important;
}
textarea:focus, input:focus, select:focus {
outline: none !important;
background-color: #FFFFFF !important;
box-shadow: 0 0 0 2px var(--ios-blue) !important;
}
/* Sliders */
input[type=range] {
-webkit-appearance: none;
background: transparent;
}
input[type=range]::-webkit-slider-thumb {
-webkit-appearance: none;
height: 24px;
width: 24px;
border-radius: 50%;
background: #FFFFFF;
box-shadow: 0 2px 6px rgba(0,0,0,0.3);
margin-top: -10px;
cursor: pointer;
}
input[type=range]::-webkit-slider-runnable-track {
width: 100%;
height: 4px;
background: #D1D1D6;
border-radius: 2px;
}
/* --- Tabs --- */
.tabs {
border-bottom: 1px solid transparent !important;
background: transparent !important;
}
.tabitem {
border: none !important;
font-size: 15px !important;
font-weight: 500 !important;
color: var(--ios-text-secondary) !important;
padding: 10px 16px !important;
background: transparent !important;
border-radius: 8px !important;
transition: all 0.2s ease !important;
}
.tabitem.selected {
color: var(--ios-blue) !important;
background: rgba(0, 122, 255, 0.1) !important;
font-weight: 600 !important;
}
/* --- Buttons --- */
button.primary {
background-color: var(--ios-blue) !important;
color: white !important;
border: none !important;
border-radius: var(--ios-btn-radius) !important;
padding: 14px 24px !important;
font-size: 17px !important;
font-weight: 600 !important;
transition: transform 0.1s ease, background-color 0.2s ease !important;
box-shadow: 0 2px 8px rgba(0, 122, 255, 0.25) !important;
cursor: pointer !important;
width: 100%;
}
button.primary:hover {
background-color: var(--ios-blue-hover) !important;
}
button.primary:active {
transform: scale(0.97) !important;
}
button.secondary {
background-color: rgba(118, 118, 128, 0.12) !important;
color: var(--ios-blue) !important;
border: none !important;
border-radius: var(--ios-btn-radius) !important;
padding: 12px 20px !important;
font-size: 17px !important;
font-weight: 600 !important;
transition: background-color 0.2s !important;
}
button.secondary:hover {
background-color: rgba(118, 118, 128, 0.2) !important;
}
/* --- Accordions --- */
.gr-accordion {
border: none !important;
background: transparent !important;
}
.gr-accordion-label {
font-size: 16px !important;
font-weight: 600 !important;
padding: 12px 0 !important;
color: var(--ios-text-primary) !important;
border-bottom: 1px solid var(--ios-border-light) !important;
}
/* --- Footer --- */
.footer-text {
margin-top: 40px;
color: var(--ios-text-secondary) !important;
font-size: 13px !important;
text-align: center;
}
.attribution-link {
color: var(--ios-blue) !important;
text-decoration: none !important;
}
/* --- Dark Mode Overrides --- */
.dark .gradio-container {
background-color: var(--ios-bg-dark) !important;
}
.dark .main-title {
color: var(--ios-text-primary-dark) !important;
}
.dark .subtitle {
color: var(--ios-text-secondary-dark) !important;
}
.dark .input-section,
.dark .output-section {
background: var(--ios-card-dark) !important;
border-color: var(--ios-border-dark) !important;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3) !important;
}
.dark textarea,
.dark input,
.dark select {
background-color: #2C2C2E !important;
color: var(--ios-text-primary-dark) !important;
border-color: var(--ios-border-dark) !important;
}
.dark .gr-accordion-label {
color: var(--ios-text-primary-dark) !important;
border-color: var(--ios-border-dark) !important;
}
.dark .tabitem.selected {
background: rgba(10, 132, 255, 0.2) !important;
}
.dark button.primary {
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.4) !important;
}
/* --- Mobile Responsive --- */
@media (max-width: 768px) {
.gradio-container {
padding: 16px !important;
}
.main-title {
font-size: 28px !important;
}
.input-section, .output-section {
padding: 16px !important;
border-radius: 16px !important;
}
button.primary {
padding: 16px !important; /* Larger touch targets */
}
}
"""