Files
downloader_video/public/assets/css/frontend.css
T
2026-06-06 13:55:42 +02:00

371 lines
6.9 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Segoe UI', Roboto, system-ui, sans-serif;
}
body {
background: linear-gradient(145deg, #f5f7fa 0%, #e9edf5 100%);
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: stretch;
/* ← CORRECTION ICI */
margin: 0;
}
/* ---------- BARRE HORIZONTALE TOUT EN HAUT ---------- */
.top-header-bar {
width: 100%;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
border-bottom: 1px solid #eef2ff;
position: sticky;
top: 0;
z-index: 100;
backdrop-filter: blur(8px);
background: rgba(255, 255, 255, 0.96);
/* ← une seule déclaration */
}
.top-bar-container {
max-width: 1280px;
margin: 0 auto;
padding: 0.9rem 2rem;
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 1rem;
}
/* Section langue statique (sans JS) */
.static-lang {
background: #f1f4f9;
padding: 0.5rem 1.3rem;
border-radius: 3rem;
font-weight: 600;
font-size: 0.9rem;
color: #1e293b;
display: inline-flex;
align-items: center;
gap: 0.6rem;
letter-spacing: 0.2px;
}
.static-lang a {
text-decoration: none;
font-size: 23px;
margin-right: 20px;
}
.main-alert {
max-width: 1200px;
width: 100%;
padding: 2rem 0rem 0rem;
align-self: center;
/* Hauteur fixe pour réserver lespace, même vide */
min-height: 90px;
/* Ajustez selon la hauteur réelle de votre alerte */
}
/* Quand lalerte est absente ou vide, on cache son contenu mais on garde lespace */
.main-alert:empty {
visibility: hidden;
/* optionnel : pour masquer complètement tout contenu fantôme */
}
/* Conteneur principal (centré, avec marge supérieure) */
.main-container {
max-width: 1200px;
width: 100%;
background: #ffffff;
box-shadow: 0 25px 50px -10px rgba(0, 0, 0, 0.15);
border-radius: 2.5rem;
padding: 2rem 2rem 2.5rem;
margin: 1rem 1rem;
border: 1px solid rgba(255, 255, 255, 0.5);
transition: all 0.2s ease;
align-self: center;
}
.logo-area {
display: flex;
align-items: center;
justify-content: center;
gap: 0.5rem;
margin-bottom: 1.5rem;
}
.logo-icon {
font-size: 2.8rem;
color: #ef4444;
filter: drop-shadow(0 4px 6px rgba(239, 68, 68, 0.3));
}
.logo-text {
font-size: 2rem;
font-weight: 700;
background: linear-gradient(135deg, #1e293b, #4f46e5);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.url-section {
background: #f8fafc;
border-radius: 2rem;
padding: 1.5rem;
margin: 1.8rem 0 1.5rem;
}
.url-input-area {
display: flex;
flex-direction: column;
gap: 0.8rem;
}
textarea {
width: 100%;
border: 1px solid #e2e8f0;
border-radius: 1.2rem;
padding: 1rem;
font-size: 0.95rem;
resize: vertical;
min-height: 90px;
background: white;
outline: none;
transition: 0.2s;
}
textarea:focus {
border-color: #4f46e5;
box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.2);
}
.format-row {
display: flex;
align-items: center;
gap: 1rem;
flex-wrap: wrap;
margin-top: 0.5rem;
}
select {
padding: 0.7rem 1.2rem;
border-radius: 2rem;
border: 1px solid #d1d5db;
background: white;
font-weight: 500;
cursor: pointer;
outline: none;
min-width: 180px;
}
.process-btn {
background: #0f172a;
border: none;
color: white;
font-weight: 700;
padding: 0.8rem 2.2rem;
border-radius: 3rem;
font-size: 1rem;
letter-spacing: 0.3px;
display: flex;
align-items: center;
gap: 0.5rem;
cursor: pointer;
transition: 0.25s;
box-shadow: 0 10px 20px -8px rgba(15, 23, 42, 0.4);
margin-left: auto;
}
.process-btn:hover {
background: #1e293b;
transform: scale(1.02);
}
.process-btn:disabled {
opacity: 0.7;
cursor: not-allowed;
}
.user-avatar {
width: 42px;
height: 42px;
border-radius: 50%;
object-fit: cover;
border: 2px solid #dee2e6;
}
.username {
font-weight: 600;
color: #333;
}
.video-list {
margin-top: 2rem;
display: flex;
flex-direction: column;
gap: 1rem;
max-height: 400px;
overflow-y: auto;
padding-right: 0.3rem;
}
.video-item {
background: white;
border-radius: 1.2rem;
padding: 1rem 1.2rem;
box-shadow: 0 6px 18px rgba(0, 0, 0, 0.04);
border: 1px solid #edf2f7;
display: flex;
flex-direction: column;
gap: 0.6rem;
}
.video-header {
display: flex;
justify-content: space-between;
align-items: center;
}
.video-name {
font-weight: 600;
color: #1e293b;
word-break: break-word;
}
.progress-container {
width: 100%;
height: 8px;
background: #e9eef3;
border-radius: 20px;
overflow: hidden;
margin: 0.2rem 0;
}
.progress-fill {
height: 100%;
width: 0%;
background: linear-gradient(90deg, #4f46e5, #818cf8);
border-radius: 20px;
transition: width 0.2s ease;
}
.progress-fill.error {
background: #ef4444;
}
/* Styles pour la barre de progression en mode indéterminé */
.progress-container .progress-fill.indeterminate {
width: 100%;
background-image: linear-gradient(90deg,
#4f46e5 0%,
#818cf8 25%,
#4f46e5 50%,
#818cf8 75%,
#4f46e5 100%);
background-size: 200% 100%;
animation: shimmer 1.5s infinite linear;
}
@keyframes shimmer {
0% {
background-position: 200% 0;
}
100% {
background-position: -200% 0;
}
}
.status-area {
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
}
.status-text {
font-size: 0.9rem;
font-weight: 500;
}
.pending-text {
color: #64748b;
}
.error-text {
color: #dc2626;
font-weight: 600;
}
.download-btn {
background: #0f172a;
color: white;
border: none;
padding: 0.4rem 1.2rem;
border-radius: 2rem;
font-weight: 600;
font-size: 0.8rem;
cursor: pointer;
display: flex;
align-items: center;
gap: 0.3rem;
transition: 0.2s;
}
.download-btn:hover {
background: #334155;
}
/* RESPONSIVE : barre horizontale adaptative */
@media (max-width: 768px) {
.top-bar-container {
padding: 0.8rem 1rem;
flex-direction: column;
align-items: stretch;
gap: 0.7rem;
}
.static-lang,
.demo-status {
justify-content: center;
width: 100%;
}
.format-row {
flex-direction: column;
align-items: stretch;
}
.process-btn {
margin-left: 0;
justify-content: center;
}
.main-container {
padding: 1.5rem;
margin: 1rem;
}
.logo-text {
font-size: 1.6rem;
}
}
@media (max-width: 480px) {
.top-bar-container {
padding: 0.7rem 0.9rem;
}
.static-lang,
.demo-status {
font-size: 0.8rem;
padding: 0.4rem 1rem;
}
}