"""UI theme assets — CSS and decorative HTML."""
LAMP_HTML = """
"""
APP_CSS = """
body {
margin: 0;
background: #4B352A;
font-family: 'Segoe UI', sans-serif;
color: #222;
display: flex;
justify-content: center;
padding: 2rem;
transition: background 0.3s, color 0.3s;
}
.gradio-container {
max-width: 1200px;
width: 100%;
margin: 0 auto;
h1 {
font-size: 24px !important;
font-weight: 700 !important;
margin-bottom: 1rem !important;
color: #4B352A !important;
text-align: center !important;
}
body.night .gradio-container h1,
body.night h1 {
color: #f5f0e8 !important;
}
.panel {
background: white;
padding: 1rem;
border-radius: 6px;
border: 1px solid #ddd;
box-shadow: 0 1px 2px rgba(0,0,0,0.05);
}
#clear-btn, #stop-btn {
margin-top: 1rem;
font-size: 0.85rem !important;
font-weight: 600 !important;
padding: 0.5rem 1rem !important;
border-radius: 8px !important;
border: none !important;
box-shadow: 0 2px 4px rgba(0,0,0,0.1) !important;
transition: background-color 0.2s ease !important;
width: 100% !important;
}
.btn-row {
display: flex;
justify-content: space-between;
gap: 0.5rem;
}
#clear-btn {
background-color: #e74c3c !important;
color: white !important;
width: 50% !important;
}
#clear-btn:hover {
background-color: #c0392b !important;
cursor: pointer !important;
}
#stop-btn {
background-color: #CA7842 !important;
color: white !important;
width: 50% !important;
}
#stop-btn:hover {
background-color: #FFA55D !important;
cursor: pointer !important;
}
.gradio-container .gr-row > div {
padding: 4px !important;
}
#process-btn-url {
background-color: #A4B465 !important;
color: #333 !important;
}
#fetch-btn {
background-color: #cfbed7 !important;
color: #333 !important;
}
.workbook-section {
width: 100% !important;
gap: 0 !important;
}
.workbook-header-row {
display: flex !important;
flex-direction: row !important;
align-items: center !important;
justify-content: flex-start !important;
gap: 1rem !important;
flex-wrap: wrap !important;
width: 100% !important;
margin-bottom: 0.35rem !important;
}
.workbook-header-row > div {
flex: 0 0 auto !important;
width: auto !important;
min-width: unset !important;
max-width: none !important;
height: auto !important;
}
.workbook-header-row > #template-download-btn,
.workbook-header-row button {
flex: 0 0 auto !important;
width: auto !important;
align-self: center !important;
}
.workbook-upload-label {
font-size: 12px !important;
font-weight: 400 !important;
color: rgb(113, 113, 122) !important;
line-height: 1.4 !important;
}
#template-download-btn {
background: transparent !important;
border: none !important;
box-shadow: none !important;
color: #6b8e3d !important;
font-size: 0.875rem !important;
font-weight: 500 !important;
padding: 0 !important;
margin: 0 !important;
height: auto !important;
min-height: unset !important;
width: auto !important;
min-width: unset !important;
white-space: nowrap !important;
text-decoration: underline !important;
text-underline-offset: 2px !important;
}
#template-download-btn:hover {
color: #4a6a28 !important;
background: transparent !important;
cursor: pointer !important;
}
.app-footer {
width: 100% !important;
margin-top: 1rem !important;
padding-bottom: 1rem !important;
}
.app-footer .app-footer-text,
.app-footer div {
width: 100% !important;
text-align: center !important;
color: #4B352A !important;
font-size: 0.9rem !important;
}
body.night .app-footer .app-footer-text,
body.night .app-footer div {
color: #f5f0e8 !important;
}
#status-box {
background-color: #ffffff;
border: 2px solid #cfbed7;
border-radius: 6px;
padding: 1rem;
font-size: 0.95rem;
color: #333;
}
#zip-download-btn {
transition: box-shadow 0.25s ease, transform 0.25s ease, background 0.25s ease;
}
#zip-download-btn.zip-ready,
#zip-download-btn.primary,
button#zip-download-btn.zip-ready {
background: linear-gradient(135deg, #A4B465 0%, #6b8e3d 100%) !important;
color: #fff !important;
border: 2px solid #889E46 !important;
box-shadow: 0 0 0 3px rgba(164, 180, 101, 0.45), 0 4px 14px rgba(107, 142, 61, 0.35) !important;
animation: zip-ready-pulse 1.4s ease-in-out 3;
font-weight: 700 !important;
}
@keyframes zip-ready-pulse {
0%, 100% { transform: scale(1); }
50% { transform: scale(1.03); }
}
#duplicates-box {
background-color: #ffffff;
border: 2px solid #cfbed7;
border-radius: 6px;
padding: 1rem;
font-size: 0.9rem;
color: #333;
font-family: monospace;
}
/* Styling the toggle radio buttons */
.gradio-container label.svelte-1ipelgc {
font-weight: 600 !important;
border: 2px solid #A4B465 !important;
padding: 0.4rem 1rem !important;
border-radius: 12px !important;
margin: 0.25rem !important;
background-color: #f5fbe8 !important;
transition: all 0.3s ease-in-out;
cursor: pointer;
}
/* Selected option */
input[type="radio"]:checked + label.svelte-1ipelgc {
background-color: #A4B465 !important;
color: white !important;
border-color: #889E46 !important;
}
/* Unselected hover */
.gradio-container input[type="radio"] + label.svelte-1ipelgc:hover {
background-color: #e0f1c4 !important;
}
}
"""