|
|
|
:root { |
|
|
|
--primary: #6366f1; |
|
--primary-light: #818cf8; |
|
--secondary: #f43f5e; |
|
--dark: #0f172a; |
|
--light: #f8fafc; |
|
--success: #10b981; |
|
--warning: #f59e0b; |
|
--error: #ef4444; |
|
|
|
|
|
--glass-bg: rgba(255, 255, 255, 0.1); |
|
--glass-border: rgba(255, 255, 255, 0.2); |
|
--glass-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.37); |
|
|
|
|
|
--gradient-primary: linear-gradient(135deg, var(--primary), var(--primary-light)); |
|
--gradient-dark: linear-gradient(135deg, var(--dark), #1e293b); |
|
|
|
|
|
--spacing-xs: 0.5rem; |
|
--spacing-sm: 1rem; |
|
--spacing-md: 1.5rem; |
|
--spacing-lg: 2rem; |
|
|
|
|
|
--radius-sm: 0.5rem; |
|
--radius-md: 1rem; |
|
--radius-lg: 1.5rem; |
|
--radius-full: 9999px; |
|
} |
|
|
|
|
|
body { |
|
background: var(--gradient-dark); |
|
color: var(--light); |
|
font-family: 'Inter', -apple-system, sans-serif; |
|
min-height: 100vh; |
|
line-height: 1.6; |
|
} |
|
|
|
|
|
.glass-container { |
|
background: var(--glass-bg); |
|
backdrop-filter: blur(8px); |
|
-webkit-backdrop-filter: blur(8px); |
|
border: 1px solid var(--glass-border); |
|
box-shadow: var(--glass-shadow); |
|
border-radius: var(--radius-md); |
|
} |
|
|
|
|
|
.card { |
|
background: var(--glass-bg); |
|
backdrop-filter: blur(8px); |
|
border: 1px solid var(--glass-border); |
|
border-radius: var(--radius-md); |
|
overflow: hidden; |
|
transition: transform 0.3s ease, box-shadow 0.3s ease; |
|
} |
|
|
|
.card:hover { |
|
transform: translateY(-5px); |
|
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.2); |
|
} |
|
|
|
|
|
.image-thumbnail { |
|
width: 100%; |
|
aspect-ratio: 1; |
|
object-fit: cover; |
|
border-radius: var(--radius-sm); |
|
transition: transform 0.3s ease; |
|
} |
|
|
|
.image-thumbnail:hover { |
|
transform: scale(1.02); |
|
} |
|
|
|
|
|
.btn { |
|
padding: 0.75rem 1.5rem; |
|
border-radius: var(--radius-full); |
|
border: none; |
|
font-weight: 500; |
|
letter-spacing: 0.5px; |
|
transition: all 0.3s ease; |
|
backdrop-filter: blur(4px); |
|
} |
|
|
|
.btn-primary { |
|
background: var(--gradient-primary); |
|
color: white; |
|
box-shadow: 0 4px 15px rgba(99, 102, 241, 0.3); |
|
} |
|
|
|
.btn-primary:hover { |
|
transform: translateY(-2px); |
|
box-shadow: 0 8px 25px rgba(99, 102, 241, 0.5); |
|
} |
|
|
|
.btn-secondary { |
|
background: rgba(255, 255, 255, 0.1); |
|
color: var(--light); |
|
border: 1px solid var(--glass-border); |
|
} |
|
|
|
.btn-secondary:hover { |
|
background: rgba(255, 255, 255, 0.2); |
|
} |
|
|
|
|
|
.form-control { |
|
background: rgba(255, 255, 255, 0.05); |
|
border: 1px solid var(--glass-border); |
|
border-radius: var(--radius-full); |
|
padding: 1rem 1.5rem; |
|
color: var(--light); |
|
transition: all 0.3s ease; |
|
} |
|
|
|
.form-control:focus { |
|
background: rgba(255, 255, 255, 0.1); |
|
border-color: var(--primary); |
|
box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.2); |
|
} |
|
|
|
|
|
.modal-content { |
|
background: var(--dark); |
|
border: 1px solid var(--glass-border); |
|
border-radius: var(--radius-lg); |
|
box-shadow: var(--glass-shadow); |
|
} |
|
|
|
.modal-header { |
|
border-bottom: 1px solid var(--glass-border); |
|
padding: var(--spacing-md); |
|
} |
|
|
|
.modal-body { |
|
padding: var(--spacing-lg); |
|
} |
|
|
|
|
|
.carousel-control-prev, |
|
.carousel-control-next { |
|
width: 50px; |
|
height: 50px; |
|
background: var(--glass-bg); |
|
border-radius: var(--radius-full); |
|
border: 1px solid var(--glass-border); |
|
opacity: 0; |
|
transition: opacity 0.3s ease; |
|
} |
|
|
|
.carousel:hover .carousel-control-prev, |
|
.carousel:hover .carousel-control-next { |
|
opacity: 1; |
|
} |
|
|
|
|
|
.thumb-container { |
|
position: relative; |
|
border-radius: var(--radius-md); |
|
overflow: hidden; |
|
} |
|
|
|
.download-thumb { |
|
position: absolute; |
|
bottom: var(--spacing-sm); |
|
right: var(--spacing-sm); |
|
background: var(--glass-bg); |
|
border-radius: var(--radius-full); |
|
padding: 0.5rem; |
|
opacity: 0; |
|
transition: opacity 0.3s ease; |
|
} |
|
|
|
.thumb-container:hover .download-thumb { |
|
opacity: 1; |
|
} |
|
|
|
|
|
::-webkit-scrollbar { |
|
width: 8px; |
|
} |
|
|
|
::-webkit-scrollbar-track { |
|
background: rgba(255, 255, 255, 0.05); |
|
} |
|
|
|
::-webkit-scrollbar-thumb { |
|
background: var(--primary); |
|
border-radius: var(--radius-full); |
|
} |
|
|
|
|
|
@keyframes pulse { |
|
0% { transform: scale(1); opacity: 1; } |
|
50% { transform: scale(1.1); opacity: 0.7; } |
|
100% { transform: scale(1); opacity: 1; } |
|
} |
|
|
|
.loading::after { |
|
content: ''; |
|
position: absolute; |
|
top: 50%; |
|
left: 50%; |
|
width: 40px; |
|
height: 40px; |
|
margin: -20px 0 0 -20px; |
|
border: 3px solid var(--primary); |
|
border-top-color: transparent; |
|
border-radius: 50%; |
|
animation: spin 1s linear infinite; |
|
} |
|
|
|
|
|
.image-grid { |
|
display: grid; |
|
gap: var(--spacing-md); |
|
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); |
|
padding: var(--spacing-md); |
|
} |
|
|
|
|
|
.form-check-input { |
|
width: 1.5rem; |
|
height: 1.5rem; |
|
background: var(--glass-bg); |
|
border: 2px solid var(--glass-border); |
|
border-radius: var(--radius-sm); |
|
cursor: pointer; |
|
transition: all 0.3s ease; |
|
} |
|
|
|
.form-check-input:checked { |
|
background-color: var(--primary); |
|
border-color: var(--primary); |
|
animation: pulse 0.3s ease; |
|
} |
|
|
|
|
|
.fab { |
|
position: fixed; |
|
bottom: var(--spacing-lg); |
|
right: var(--spacing-lg); |
|
width: 56px; |
|
height: 56px; |
|
border-radius: var(--radius-full); |
|
background: var(--gradient-primary); |
|
box-shadow: 0 4px 15px rgba(99, 102, 241, 0.3); |
|
display: flex; |
|
align-items: center; |
|
justify-content: center; |
|
cursor: pointer; |
|
transition: all 0.3s ease; |
|
} |
|
|
|
.fab:hover { |
|
transform: translateY(-3px) rotate(90deg); |
|
box-shadow: 0 8px 25px rgba(99, 102, 241, 0.5); |
|
} |
|
|
|
|
|
.hover-lift { |
|
transition: transform 0.3s ease; |
|
} |
|
|
|
.hover-lift:hover { |
|
transform: translateY(-5px); |
|
} |
|
|
|
|
|
.gradient-text { |
|
background: var(--gradient-primary); |
|
-webkit-background-clip: text; |
|
background-clip: text; |
|
color: transparent; |
|
} |
|
|
|
|
|
@media (max-width: 768px) { |
|
:root { |
|
--spacing-lg: 1.5rem; |
|
--radius-lg: 1rem; |
|
} |
|
|
|
.image-grid { |
|
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); |
|
} |
|
|
|
.modal-dialog { |
|
margin: var(--spacing-sm); |
|
} |
|
|
|
.fab { |
|
bottom: var(--spacing-md); |
|
right: var(--spacing-md); |
|
} |
|
} |
|
|
|
|
|
@media (prefers-color-scheme: dark) { |
|
:root { |
|
--glass-bg: rgba(0, 0, 0, 0.2); |
|
--glass-border: rgba(255, 255, 255, 0.1); |
|
} |
|
} |
|
|