FeedHireUI / styles.py
Rafii's picture
structured
f40d9d3
"""
CSS styles for FeedHire Gradio interface
"""
CUSTOM_CSS = """
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap');
* {
font-family: 'Inter', sans-serif !important;
}
.gradio-container {
max-width: 1400px !important;
margin: auto !important;
}
.transparent-box {
background: transparent !important;
border: none !important;
box-shadow: none !important;
padding: 0 !important;
}
.transparent-box,
.transparent-box > div,
.transparent-box * {
background: transparent !important;
border: none !important;
box-shadow: none !important;
padding: 0 !important;
}
/* Animations */
@keyframes fadeInDown {
from {
opacity: 0;
transform: translateY(-30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes scaleIn {
from {
opacity: 0;
transform: scale(0.8);
}
to {
opacity: 1;
transform: scale(1);
}
}
@keyframes pulse {
0%, 100% {
transform: scale(1);
}
50% {
transform: scale(1.05);
}
}
@keyframes glow {
0%, 100% {
box-shadow: 0 0 20px rgba(255, 126, 0, 0.5);
}
50% {
box-shadow: 0 0 40px rgba(255, 126, 0, 0.8);
}
}
@keyframes slideInLeft {
from {
opacity: 0;
transform: translateX(-50px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
@keyframes slideInRight {
from {
opacity: 0;
transform: translateX(50px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
/* Hero Section */
#hero-section,
#hero-section > div,
#hero-section > div > div {
background: transparent !important;
box-shadow: none !important;
padding: 0 !important;
margin: 0 !important;
}
.hero-column > div {
background: transparent !important;
padding: 0 !important;
margin: 0 !important;
}
.logo-container {
animation: scaleIn 1s ease-out 0.3s both;
display: flex;
justify-content: center;
align-items: center;
background: rgba(255,255,255,0.15);
border-radius: 20px;
padding: 15px;
backdrop-filter: blur(10px);
border: 2px solid rgba(255,255,255,0.3);
transition: all 0.4s ease;
}
.logo-container:hover {
transform: scale(1.05) rotate(2deg);
box-shadow: 0 10px 30px rgba(0,0,0,0.3);
}
.hero-title {
animation: fadeInUp 1s ease-out 0.5s both;
}
.hero-subtitle {
animation: fadeInUp 1s ease-out 0.7s both;
}
/* Status Container */
.status-container {
display: flex;
gap: 15px;
justify-content: flex-end;
align-items: center;
padding: 12px 20px;
background: rgba(15,23,42,0.7);
border-radius: 12px;
backdrop-filter: blur(10px);
border: 1px solid rgba(255,255,255,0.15);
animation: fadeInRight 1s ease-out 0.9s both;
transition: all 0.3s ease;
}
.status-container:hover {
background: rgba(15,23,42,0.85);
transform: translateY(-2px);
box-shadow: 0 8px 20px rgba(0,0,0,0.3);
}
.status-item {
display: flex;
align-items: center;
gap: 8px;
}
.status-icon {
font-size: 20px;
animation: pulse 2s ease-in-out infinite;
}
.status-label {
font-size: 10px;
color: #94a3b8;
text-transform: uppercase;
letter-spacing: 1px;
font-weight: 600;
}
.status-value {
font-size: 13px;
font-weight: 700;
}
.status-divider {
width: 1px;
height: 30px;
background: rgba(255,255,255,0.2);
}
/* Banner Animation */
.info-banner {
animation: fadeInUp 1s ease-out 1.1s both;
}
/* Form Section */
.form-section {
animation: slideInLeft 0.8s ease-out 0.3s both;
border: 2px solid #FF7E00;
border-radius: 16px;
padding: 25px;
background: rgba(255,255,255,0.05);
box-shadow: 0 10px 30px rgba(255, 126, 0, 0.2);
}
#job-form {
border: 2px solid #FF7E00;
border-radius: 16px;
padding: 25px;
background: rgba(255,255,255,0.05);
box-shadow: 0 10px 30px rgba(255,126,0,0.2);
}
.benefits-section {
animation: slideInRight 0.8s ease-out 0.3s both;
}
/* Input Focus Effects */
textarea:focus, input:focus {
outline: none !important;
border: 2px solid #FF7E00 !important;
box-shadow: 0 0 0 3px rgba(255, 126, 0, 0.1), 0 0 20px rgba(255, 126, 0, 0.2) !important;
transition: all 0.3s ease !important;
}
/* Button Styles */
button[variant="primary"] {
background: linear-gradient(135deg, #FF7E00 0%, #FF9A3C 100%) !important;
border: none !important;
font-weight: 700 !important;
transition: all 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55) !important;
position: relative !important;
overflow: hidden !important;
}
button[variant="primary"]::before {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: 0;
height: 0;
border-radius: 50%;
background: rgba(255,255,255,0.3);
transform: translate(-50%, -50%);
transition: width 0.6s, height 0.6s;
}
button[variant="primary"]:hover::before {
width: 300px;
height: 300px;
}
button[variant="primary"]:hover {
transform: translateY(-4px) scale(1.02) !important;
box-shadow: 0 15px 40px rgba(255, 126, 0, 0.5) !important;
}
button[variant="primary"]:active {
transform: translateY(-2px) scale(0.98) !important;
}
.refresh-btn {
font-size: 12px !important;
padding: 6px 14px !important;
background: transparent !important;
border: 1px solid #FF7E00 !important;
color: white !important;
border-radius: 8px !important;
transition: all 0.3s ease !important;
font-weight: 600 !important;
}
.refresh-btn:hover {
background: linear-gradient(135deg, rgba(255, 126, 0, 0.3), rgba(255, 154, 60, 0.4)) !important;
box-shadow: 0 0 15px rgba(255, 126, 0, 0.8), 0 0 25px rgba(255, 154, 60, 0.6);
transition: all 0.5s ease;
color: #FF7E00 !important;
}
/* Benefit Cards */
.benefit-card {
display: flex;
align-items: center;
padding: 12px 15px;
border-radius: 14px;
background: rgba(255, 126, 0, 0.2);
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
border: 1px solid rgba(255, 126, 0, 0.4);
margin: 8px auto;
max-width: 90%;
box-shadow: 0 4px 20px rgba(0,0,0,0.1);
transition: transform 0.3s ease, box-shadow 0.3s ease;
font-size: 14px;
opacity: 0;
transform: translateY(20px);
}
.benefit-card.animate {
animation: fadeInUp 0.6s ease-out forwards;
}
.benefit-card:nth-child(1) { animation-delay: 0.1s; }
.benefit-card:nth-child(2) { animation-delay: 0.2s; }
.benefit-card:nth-child(3) { animation-delay: 0.3s; }
.benefit-card:nth-child(4) { animation-delay: 0.4s; }
.benefit-card:hover {
transform: scale(1.03);
box-shadow: 0 8px 30px rgba(0,0,0,0.15);
}
.benefit-card .icon {
font-size: 24px;
margin-right: 12px;
}
.benefit-card .text {
color: #fff;
}
.benefit-card .text .title {
font-weight: 700;
margin-right: 6px;
}
.benefit-card .text .desc {
color: rgba(255,255,255,0.85);
}
/* How It Works Cards */
.how-it-works-card {
background: rgba(255,255,255,0.15);
backdrop-filter: blur(10px);
border-radius: 16px;
padding: 30px;
border: 2px solid rgba(255,255,255,0.2);
transition: all 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55);
opacity: 0;
transform: scale(0.8);
}
.how-it-works-card.animate {
animation: scaleIn 0.6s ease-out forwards;
}
.how-it-works-card:nth-child(1) { animation-delay: 0.2s; }
.how-it-works-card:nth-child(2) { animation-delay: 0.4s; }
.how-it-works-card:nth-child(3) { animation-delay: 0.6s; }
.how-it-works-card:hover {
transform: translateY(-10px) scale(1.05);
box-shadow: 0 20px 50px rgba(0,0,0,0.3);
border-color: rgba(255,255,255,0.4);
}
.how-it-works-card .emoji {
display: inline-block;
transition: transform 0.3s ease;
}
.how-it-works-card:hover .emoji {
transform: scale(1.2) rotate(10deg);
}
/* Success Link */
#success-link-box {
text-align: center;
padding: 1.5rem;
background: linear-gradient(135deg, #FF7E00 0%, #FF9A3C 100%);
border-radius: 12px;
box-shadow: 0 10px 30px rgba(255, 126, 0, 0.3);
animation: slideInUp 0.5s ease-out, glow 2s ease-in-out infinite;
}
@keyframes slideInUp {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
#success-link-box a {
font-size: 1.2rem;
font-weight: 700;
color: white !important;
text-decoration: none;
transition: all 0.3s ease;
}
#success-link-box a:hover {
text-decoration: underline;
transform: scale(1.05);
display: inline-block;
}
/* Benefits Box */
#benefits-box {
background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);
padding: 35px;
border-radius: 20px;
height: 100%;
display: flex;
flex-direction: column;
gap: 25px;
box-shadow: 0 25px 70px rgba(0,0,0,0.4);
border: 1px solid rgba(255,255,255,0.1);
position: relative;
overflow: hidden;
}
#benefits-box::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: radial-gradient(circle at top right, rgba(255, 126, 0, 0.1) 0%, transparent 70%);
pointer-events: none;
}
/* Responsive */
@media (max-width: 768px) {
#hero-section {
padding: 2rem 1.5rem;
}
.status-container {
flex-direction: column;
gap: 10px;
}
.status-divider {
width: 100%;
height: 1px;
}
}
"""