/** * From Uiverse.io by akshat-patel28 * * @format */@import url("fonts.css");#flash-container {    position: fixed;    top: 20px;    right: 20px;    z-index: 9999;}.flash-message {    position: relative;    background: white;    padding: 15px 25px;    margin-bottom: 10px;    border-radius: 8px;    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);    display: flex;    align-items: center;    min-width: 250px;    /* Animation : Apparition (0.5s) puis Disparition après 4.5s */    animation:        slideIn 0.5s ease-out forwards,        fadeOut 0.5s ease-in 4.5s forwards;}.flash-message.success {    border-left: 5px solid #1ba94c;}.flash-message.error {    border-left: 5px solid #e74c3c;}.flash-icon {    margin-right: 12px;    font-size: 1.2rem;}.flash-text {    color: #333;    font-weight: 500;    flex-grow: 1;}.flash-close {    background: none;    border: none;    cursor: pointer;    font-size: 1.2rem;    color: #999;}/* Barre de progression */.progress-bar {    position: absolute;    bottom: 0;    left: 0;    height: 4px;    width: 100%;}.flash-message.success .progress-bar {    background: #1ba94c;}.flash-message.error .progress-bar {    background: #e74c3c;}.progress-bar {    animation: shrink 5s linear forwards;}@keyframes slideIn {    from {        transform: translateX(100%);        opacity: 0;    }    to {        transform: translateX(0);        opacity: 1;    }}@keyframes fadeOut {    from {        opacity: 1;        transform: translateX(0);    }    to {        opacity: 0;        transform: translateX(20px);    }}@keyframes shrink {    from {        width: 100%;    }    to {        width: 0%;    }}.hidden {    display: none;    opacity: 0;}/* Classe pour l'animation d'apparition */.fade-in {    animation: fadeIn 0.5s ease forwards;}@keyframes fadeIn {    from {        opacity: 0;        transform: translateY(-10px); /* Petit effet de mouvement vers le haut */    }    to {        opacity: 1;        transform: translateY(0);    }}/* Optionnel : Assurez-vous que les sections ont une transition douce */.sections {    transition:        opacity 0.3s ease,        transform 0.3s ease;}* {    box-sizing: border-box;}body {    min-height: 100vh;    display: flex;    flex-direction: column;    justify-content: center;    align-items: center;    padding: 20px 0;    background: #f5f5f5;}.sections {    width: 90%;    max-width: 400px;    min-width: 300px;    /* min-height: 500px; */    background-color: #fff;    box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px;    border-radius: 10px;    box-sizing: border-box;    padding: 20px 25px;    transition: all 0.3s ease;}@media (min-width: 600px) {    section {        max-width: 500px;        width: 95%;    }}@media (min-width: 768px) {    section {        max-width: 500px;    }}@media (min-width: 1200px) {    section {        max-width: 800px;    }}.sections form {    justify-content: center;    align-content: center;}.title {    text-align: center;    margin: 10px 0 30px 0;    font-size: 28px;    font-weight: 800;    color: #444;}.form {    width: 100%;    display: flex;    flex-direction: column;    gap: 18px;    margin-bottom: 15px;}.form input,select {    border-radius: 20px;    border: 1px solid #b9b8b8;    outline: 0 !important;    box-sizing: border-box;    padding: 12px 15px;    font-size: 14px;}input:focus {    border: 1px solid skyblue;}#age_and_grade,.name_container_inscription {    display: grid;    grid-template-columns: 1fr 1fr;    padding: 0;    margin: 0;    gap: 10px;    justify-content: space-around;}#age_inscription_input {    display: block;    width: 100%;}.age_input:invalid:not(:placeholder-shown) {    border-color: #e74c3c; /* Bordure rouge */}.erreur-msg {    background: #fff5f5;    color: #d32f2f;    padding: 12px 18px;    border-left: 4px solid #d32f2f;    border-radius: 6px;    margin-bottom: 15px;    font-weight: 600;}.checkbox-container {    display: flex;    flex-direction: row;    gap: 10px;    align-items: flex-start;}/* From Uiverse.io by WhiteNervosa *//* Variation of work by @mrhyddenn for Radios */.check {    cursor: pointer;    position: relative;    margin: auto;    width: 18px;    height: 18px;    -webkit-tap-highlight-color: transparent;    transform: translate3d(0, 0, 0);}.check:before {    content: "";    position: absolute;    top: -15px;    left: -15px;    width: 48px;    height: 48px;    border-radius: 50%;    background: rgba(34, 50, 84, 0.03);    opacity: 0;    transition: opacity 0.2s ease;}.check svg {    position: relative;    z-index: 1;    fill: none;    stroke-linecap: round;    stroke-linejoin: round;    stroke: #a0a4ad;    stroke-width: 1.5;    transform: translate3d(0, 0, 0);    transition: all 0.2s ease;}.check svg path {    stroke-dasharray: 60;    stroke-dashoffset: 0;}.check svg polyline {    stroke-dasharray: 22;    stroke-dashoffset: 66;}.check:hover:before {    opacity: 1;}.check:hover svg {    stroke: var(--accent-color, #a3e583);}.check_input:checked + .check svg {    stroke: var(--accent-color, teal);}.check_input:checked + .check svg path {    stroke-dashoffset: 60;    transition: all 0.3s linear;}.check_input:checked + .check svg polyline {    stroke-dashoffset: 42;    transition: all 0.2s linear;    transition-delay: 0.15s;}.shake {    animation: shake 0.3s ease-in-out;}@keyframes shake {    0% {        transform: translateX(0);    }    25% {        transform: translateX(-4px);    }    50% {        transform: translateX(4px);    }    75% {        transform: translateX(-4px);    }    100% {        transform: translateX(0);    }}input#conditions_input,input#remember_input,input#staff_conditions_input {    transition: all 3s ease;}.page-link {    text-decoration: none;    margin: 0;    text-align: right;    color: #747474;    text-decoration-color: #747474;}.page-link-label {    text-decoration: underline;    cursor: pointer;    font-size: 11px;    font-weight: 700;}.page-link.center {    text-align: center;}.page-link-label:hover {    color: #000;}.form-btn {    padding: 10px 15px;    border-radius: 20px;    border: 0 !important;    outline: 0 !important;    background: teal;    color: white;    cursor: pointer;    box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;}.form-btn:active {    box-shadow: none;}.sign-up-label {    margin: 0;    font-size: 10px;    color: #747474;}.sign-up-link {    margin-left: 1px;    font-size: 11px;    text-decoration: underline;    text-decoration-color: teal;    color: teal;    cursor: pointer;    font-weight: 800;}.buttons-container {    width: 100%;    display: flex;    flex-direction: column;    justify-content: flex-start;    margin-top: 20px;    gap: 15px;}.apple-login-button,.google-login-button {    border-radius: 20px;    box-sizing: border-box;    padding: 10px 15px;    box-shadow:        rgba(0, 0, 0, 0.16) 0px 10px 36px 0px,        rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;    cursor: pointer;    display: flex;    justify-content: center;    align-items: center;    font-size: 11px;    gap: 5px;}.apple-login-button {    background-color: #000;    color: #fff;    border: 2px solid #000;}.google-login-button {    border: 2px solid #747474;}.apple-icon,.google-icon {    font-size: 18px;    margin-bottom: 1px;}@media (max-width: 600px) {    #age_and_grade,    .name_container_inscription {        grid-template-columns: 1fr; /* Empile les champs l'un sur l'autre */        gap: 15px; /* Augmente l'espace pour la lisibilité */    }    .title {        font-size: 22px; /* Titre légèrement plus petit sur mobile */    }    .form {        gap: 12px; /* Réduit légèrement l'espace entre les groupes */    }}/* --- NOUVEAU STYLE POUR L'INPUT MOT DE PASSE --- */.password-wrapper {    position: relative;    width: 100%;    display: flex;    align-items: center;}.password-wrapper input {    width: 100%;    padding-right: 45px; /* Espace pour l'icône */}.toggle-password-icon {    position: absolute;    right: 15px;    cursor: pointer;    color: #a0a4ad;    display: flex;    align-items: center;    justify-content: center;    transition: color 0.3s ease;    user-select: none;    /* --- SUPPRESSION DU BACKGROUND AU CLIC (MOBILE/PC) --- */    -webkit-tap-highlight-color: transparent;    outline: none;    user-select: none; /* Empêche de sélectionner l'icône comme du texte */}/* Animation sur le SVG pour un changement fluide */.toggle-password-icon svg {    transition:        transform 0.3s ease,        opacity 0.3s ease;    animation: iconPop 0.3s ease; /* Petit effet d'apparition au changement */}.toggle-password-icon:hover {    color: teal;}.toggle-password-icon:hover svg {    transform: scale(1.1);}.toggle-password-icon:active svg {    transform: scale(0.9);}@keyframes iconPop {    from {        opacity: 0;        transform: scale(0.5);    }    to {        opacity: 1;        transform: scale(1);    }}/* Cache l'ancien système de checkbox */.checkbox-container.password-toggle-old {    display: none !important;}