anes / frontend /styles.css
ANESBENYELLES's picture
init
fb63210 verified
/* Réinitialisation de base */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
/* Corps de la page */
body {
background-color: #f7fafc;
font-family: Arial, sans-serif;
min-height: 100vh;
}
/* Conteneur principal */
.container {
max-width: 1024px;
margin: 0 auto;
padding: 2rem 1rem;
}
/* Titre principal */
h1 {
font-size: 2rem;
font-weight: bold;
text-align: center;
color: #2d3748;
margin-bottom: 1rem;
}
/* Sous-titre */
.subtitle {
text-align: center;
color: #718096;
margin-bottom: 2rem;
}
/* Conteneur des onglets */
.tab-container {
background-color: #fff;
border-radius: 0.5rem;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
overflow: hidden;
}
/* Navigation des onglets */
.tab-nav {
display: flex;
border-bottom: 1px solid #e2e8f0;
position: relative;
}
.tab-nav .tab-btn {
flex: 1;
padding: 1rem;
background-color: #f7fafc;
border: none;
cursor: pointer;
transition: background-color 0.3s ease, transform 0.2s ease;
text-align: center;
font-size: 1rem;
}
.tab-nav .tab-btn:hover {
background-color: #edf2f7;
transform: scale(1.05);
}
.tab-nav .tab-btn.active {
background-color: #edf2f7;
font-weight: bold;
}
/* Effet de soulignement dynamique sur les onglets */
.tab-nav .tab-btn {
position: relative;
}
.tab-nav .tab-btn::after {
content: "";
position: absolute;
left: 50%;
bottom: 0;
width: 0;
height: 3px;
background-color: #4299e1;
transition: width 0.3s ease, left 0.3s ease;
}
.tab-nav .tab-btn:hover::after,
.tab-nav .tab-btn.active::after {
width: 100%;
left: 0;
}
/* Contenu des onglets */
.tab-content-wrapper {
padding: 1.5rem;
}
.tab-content {
margin-bottom: 1rem;
}
/* Masquer les éléments */
.hidden {
display: none;
}
/* Styles des formulaires */
.form {
margin-bottom: 1rem;
}
.form input[type="text"],
.form textarea,
.form select {
width: 100%;
padding: 0.5rem;
border: 1px solid #cbd5e0;
border-radius: 0.25rem;
font-size: 1rem;
}
.textarea {
resize: vertical;
min-height: 80px;
}
/* Input type file caché */
.hidden-file {
display: none;
}
/* Label pour le chargement de fichier */
.file-upload {
display: block;
width: 100%;
padding: 1rem;
border: 2px dashed #cbd5e0;
border-radius: 0.5rem;
text-align: center;
cursor: pointer;
transition: background-color 0.3s ease;
margin-bottom: 1rem;
}
.file-upload:hover {
background-color: #f7fafc;
}
/* Affichage du nom du fichier */
.filename-display {
text-align: center;
color: #718096;
font-size: 0.875rem;
margin-bottom: 1rem;
}
/* Boutons */
.btn {
width: 100%;
padding: 0.75rem;
border: none;
border-radius: 0.25rem;
color: #fff;
cursor: pointer;
transition: background-color 0.3s ease;
font-size: 1rem;
display: flex;
align-items: center;
justify-content: center;
gap: 0.5rem;
}
/* Boutons de couleur */
.btn-blue {
background-color: #4299e1;
}
.btn-blue:hover {
background-color: #3182ce;
}
.btn-green {
background-color: #48bb78;
}
.btn-green:hover {
background-color: #38a169;
}
.btn-purple {
background-color: #9f7aea;
}
.btn-purple:hover {
background-color: #805ad5;
}
.btn-indigo {
background-color: #667eea;
}
.btn-indigo:hover {
background-color: #5a67d8;
}
.btn-pink {
background-color: #ed64a6;
}
.btn-pink:hover {
background-color: #d53f8c;
}
/* Boîte de résultat */
.result-box {
margin-top: 1rem;
padding: 1rem;
background-color: #f7fafc;
border-radius: 0.25rem;
min-height: 100px;
}
/* Placeholder dans la boîte de résultat */
.result-box .placeholder {
color: #a0aec0;
font-style: italic;
}
/* Sélecteur de formulaire */
.select {
width: 100%;
padding: 0.5rem;
border: 1px solid #cbd5e0;
border-radius: 0.25rem;
}
/* Styles pour les messages d'erreur et d'information */
.error {
color: #e53e3e;
font-weight: bold;
margin: 0;
}
.info {
color: #3182ce;
font-style: italic;
margin: 0;
}
.small {
font-size: 0.875rem;
color: #718096;
margin-top: 0.5rem;
}
/* Style pour les images dans les visualisations */
.result-box img {
max-width: 100%;
height: auto;
margin-top: 1rem;
border-radius: 0.25rem;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
/* Navbar avec animation d'apparition */
nav {
filter: drop-shadow(0.25rem 0.25rem 0.25rem rgba(0, 0, 0, 0.3));
width: 100%;
max-width: 14rem;
opacity: 0;
transform: translateY(-20px);
animation: fadeInDown 0.5s ease-out forwards;
}
/* Animation keyframes pour la navbar */
@keyframes fadeInDown {
from {
opacity: 0;
transform: translateY(-20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* Préférence de réduction des animations */
@media (prefers-reduced-motion: reduce) {
nav * {
transition: 5s !important;
animation: 10ms !important;
}
}
/* Responsivité pour petits écrans */
@media (max-width: 768px) {
.tab-nav {
flex-direction: column;
}
.tab-nav .tab-btn {
padding: 0.75rem;
font-size: 0.875rem;
}
h1 {
font-size: 1.5rem;
}
.container {
padding: 1rem;
}
}