
.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

@media (max-width: 48rem) {
    :root {
        --container-padding: 0.75rem;
    }

    h1 {
        font-size: var(--text-4xl);
    }
}

/* Container */
.container {
    max-width: var(--container-max-width);
    margin: 0 auto;
    padding: 0 var(--container-padding);
}

/* Header */
.site-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding-right: 1.5rem;
    background-color: var(--color-white);
    height: var(--header-height);
    box-shadow: 0 0.125rem 0.25rem var(--color-header-shadow);
    position: relative;
    z-index: 10;
}

.site-header__brand {
    display: flex;
    align-items: center;
    gap: 0;
}

.site-header__logo {
    width: 7.5625rem;
    height: var(--header-height);
    flex-shrink: 0;
    display: block;
}

.site-header__info {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 0.25rem;
    height: var(--header-height);
}

.site-header__service {
    font-size: var(--text-xl);
    font-weight: var(--font-weight-bold);
    line-height: var(--leading-tight);
    color: var(--color-header-title);
}

.site-header__subtitle {
    font-size: var(--text-sm);
    color: var(--color-header-subtitle);
}

/* Footer */
.site-footer {
    background-color: var(--color-footer-bg);
    color: var(--color-white);
    margin-top: auto;
    padding: 3rem var(--container-padding);
}

.site-footer__inner {
    display: flex;
    align-items: flex-start;
    gap: 6rem;
}

.site-footer__logo {
    width: 6.9375rem;
    height: 6.25rem;
    flex-shrink: 0;
    display: block;
}

.site-footer__links-wrap {
    display: flex;
    gap: 3rem;
}

.site-footer__links-col {
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.site-footer__links-col a {
    color: var(--color-white);
    font-size: var(--text-sm);
    text-decoration: none;
}

.site-footer__links-col a:hover {
    text-decoration: underline;
}

.site-footer__link--indisponible {
    color: var(--color-white);
    font-size: var(--text-sm);
    font-style: italic;
    opacity: 0.7;
    cursor: default;
}

/* Main */
.site-main {
    flex: 1;
    max-width: var(--container-max-width);
    width: 100%;
    margin: 0 auto;
    padding: 0 var(--container-padding);
}
.page-content {
    margin-top: 3rem;
    margin-bottom: 3rem;
    h1 {
        color: var(--color-brand-rouge);
    }
    h2 {
    }
    h3,h4,h5 {
        margin-top: 1rem;
        margin-bottom: 0.5rem;
    }
    table, th, td {
        border: 1px solid var(--color-border);
        border-spacing: 0;
    }
    th, td {
        padding: 0.25rem 0.5rem;
    }

    img{
        margin: 1rem 3rem;
    }
}

/* Flash messages */
.flash-messages {
    max-width: var(--container-max-width);
    margin: 0 auto;
    padding: 1rem var(--container-padding) 0;
}

.flash {
    padding: 0.75rem 1rem;
    margin-bottom: 0.5rem;
    border-left: 0.25rem solid var(--color-brand);
    background-color: var(--color-brand-beige);
    color: var(--color-brand-dark);
    font-size: var(--text-lg);
}

.flash--success {
    border-color: var(--color-status-success);
}

.flash--error,
.flash--danger {
    border-color: var(--color-status-error);
}

.flash--warning {
    border-color: var(--color-status-warning);
}

.flash__list {
    margin: 0;
    padding-left: 1.5rem;
}

/* Card */
.card {
    background-color: var(--color-white);
    border-radius: var(--card-radius);
    padding: var(--card-padding);
    display: flex;
    flex-direction: column;
    gap: var(--card-gap);
}

/* Modal */
.modal__overlay {
    position: fixed;
    inset: 0;
    background: var(--color-overlay);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 100;
}

.modal__overlay[hidden] {
    display: none !important;
}

.modal {
    width: var(--modal-width);
    background-color: var(--color-background);
    border-radius: var(--modal-radius);
    box-shadow: var(--modal-shadow);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.modal__header {
    height: 3.8125rem;
    padding: 0 2rem;
    background: var(--modal-header-bg);
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.modal__close {
    color: var(--color-white);
    font-size: var(--text-2xl);
    line-height: 1;
    text-decoration: none;
    opacity: 0.8;
}

.modal__close:hover {
    opacity: 1;
}

.modal__header-title {
    font-size: var(--text-2xl);
    font-weight: var(--font-weight-normal);
    color: var(--color-white);
    line-height: var(--leading-tight);
}

.modal__body {
    padding: 2rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.modal__list {
    margin: 0;
    padding-left: 1.5rem;
}

.modal__text {
    font-size: var(--text-base);
    font-weight: var(--font-weight-normal);
    color: var(--color-text-secondary);
    line-height: var(--leading-normal);
}

.modal__footer {
    height: 4.5rem;
    padding: 0 2rem;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 1.5rem;
}

/* Boutons */
.btn {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 2.5rem;
    border: 0.0625rem solid transparent;
    border-radius: var(--modal-radius);
    padding: 0 1rem;
    font-size: var(--text-xs);
    font-weight: var(--font-weight-bold);
    cursor: pointer;
    text-decoration: none;
}

.btn--primary {
    background-color: var(--color-btn-primary);
    color: var(--color-white);
}

.btn--primary:hover {
    background-color: var(--color-btn-primary-hover);
}

.btn--secondary {
    background-color: transparent;
    border-color: var(--color-teal);
    color: var(--color-teal);
}

.btn--secondary:hover {
    border-color: var(--color-teal-hover);
    color: var(--color-teal-hover);
}

.site-header__actions {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.5rem;
    position: relative;
}

.site-header__user {
    font-size: var(--text-sm);
    font-weight: var(--font-weight-medium);
    color: var(--color-header-title);
}

.site-header__logout-link {
    color: var(--color-teal);
    text-decoration: underline;
}

.site-header__logout-link:hover {
    color: var(--color-teal-hover);
}

.site-header__buttons {
    display: flex;
    flex-direction: row;
    gap: 0.5rem;
}

.site-header__burger {
    display: none;
    background: transparent;
    border: 0;
    padding: 0.25rem;
    color: var(--color-teal);
    cursor: pointer;
}

.site-header__burger .material-symbols-outlined {
    font-size: 2rem;
}

.site-header__menu {
    position: absolute;
    top: calc(100% + 0.5rem);
    right: 0;
    min-width: 12rem;
    background-color: var(--color-white);
    border: 0.0625rem solid var(--color-border-input);
    border-radius: var(--card-radius);
    box-shadow: 0 0.25rem 0.75rem var(--color-header-shadow);
    padding: 0.75rem;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    z-index: 20;
}

.site-header__menu[hidden] {
    display: none;
}

.site-header__menu-user {
    font-size: var(--text-sm);
    font-weight: var(--font-weight-bold);
    color: var(--color-header-title);
    padding: 0.25rem 0.5rem;
    border-bottom: 0.0625rem solid var(--color-border-input);
    margin-bottom: 0.25rem;
}

.site-header__menu-link {
    display: block;
    padding: 0.5rem 0.75rem;
    border-radius: var(--modal-radius);
    color: var(--color-teal);
    text-decoration: none;
    font-weight: var(--font-weight-medium);
}

.site-header__menu-link:hover {
    background-color: var(--color-teal-bg);
}

.site-header__menu-link--logout {
    color: var(--color-white);
    background-color: var(--color-teal);
}

.site-header__menu-link--logout:hover {
    background-color: var(--color-teal-medium);
}

.btn-logout {
    background-color: var(--color-teal);
    border-color: var(--color-teal);
    color: var(--color-white);
}

.btn-logout:hover {
    background-color: var(--color-teal-medium);
    border-color: var(--color-teal-medium);
}

@media (max-width: 48rem) {
    .site-header__user,
    .site-header__buttons {
        display: none;
    }

    .site-header__burger {
        display: inline-flex;
    }
}

/* Tags */
.tag {
    display: inline-block;
    height: 1.5rem;
    padding: 0 0.5rem;
    border-radius: var(--modal-radius);
    font-size: var(--text-xs);
    font-weight: var(--font-weight-bold);
    line-height: 1.5rem;
    color: var(--color-header-subtitle);
    white-space: nowrap;
}

.tag--default {
    background-color: var(--color-tag-default);
}

.tag--teal,
.tag--rouge,
.tag--orange {
    color: var(--color-white);
}

.tag--school {
    align-self: flex-start;
    background-color: #e2eee8;
    color: #4c4c4c;
}

.tag--teal {
    background-color: var(--color-teal);
}

.tag--gris {
    background-color: var(--color-tag-default);
}

.tag--rouge {
    background-color: var(--color-status-incomplete);
}

.tag--orange {
    background-color: var(--color-status-waiting);
}

/* Tags statut dossier */
.tag--statut-a-traiter {
    background: #555;
    color: #FFFBFA;
}

.tag--statut-incomplet {
    background: #F8D7DA;
    color: #7E302E;
}

.tag--statut-pret-a-transmettre {
    background: #6C8B7F;
    color: #FFFBFA;
}

.tag--statut-transmis {
    background: #E1F5FE;
    color: #013B55;
}

.tag--statut-valide {
    background: #D1E7DD;
    color: #12421A;
}

.tag--statut-en-cours {
    background: #E2E3F3;
    color: #33275C;
}

.tag--statut-desinscrit {
    background: #F8F9FA;
    color: #526B7F;
}

.tag--statut-refuse {
    background: #EDEDEE;
    color: #2A4357;
}

.tag--statut-en-attente {
    background: #E6D380;
    color: #623B12;
}

.tag--statut-renouvellement {
    background: #F5EFB4;
    color: #1F1A00;
}

/* Formulaire */
.form-group {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.form-group label,
.form-label {
    display: inline-flex;
    gap: 0.25rem;
    color: var(--color-header-subtitle);
}

.form-label--emphasis {
    color: var(--color-teal);
    font-weight: 700;
}

.form-label--spaced {
    margin-bottom: 0.75rem;
}

.form-label__optional {
    color: var(--color-muted);
}

.form-label__required {
    color: var(--color-error-text);
}

.form-group input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),
.form-group select {
    height: 2.5rem;
    border-radius: var(--modal-radius);
    border: 0.0625rem solid var(--color-border-input);
    padding: 0 0.75rem;
    background: var(--color-white);
    font-size: var(--text-sm);
    width: 100%;
    transition: border-color 0.15s ease;
}

.form-group input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):hover,
.form-group select:hover {
    border-color: var(--color-border-input-hover);
}

.form-group input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):focus,
.form-group select:focus {
    outline: none;
    border-color: var(--color-teal);
    box-shadow: 0 0 0 0.125rem var(--color-teal);
}

.form-group select {
    appearance: none;
    background-image: url("../images/chevron-down.svg");
    background-repeat: no-repeat;
    background-position: right 0.75rem center;
    background-size: 0.875rem 0.5rem;
    padding-right: 2.5rem;
}

.form-group input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):disabled,
.form-group select:disabled {
    background: var(--color-bg-disabled);
    border-color: var(--color-border-disabled);
    cursor: not-allowed;
}

.form-group input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):read-only:not(:disabled) {
    background: var(--color-bg-readonly);
    border-color: var(--color-border-readonly);
}

.password-input-wrapper {
    position: relative;
    display: block;
}

.password-input-wrapper input {
    padding-right: 2.5rem;
    width: 100%;
}

.password-toggle-btn {
    position: absolute;
    top: 50%;
    right: 0.5rem;
    transform: translateY(-50%);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--color-muted);
    cursor: pointer;
    border-radius: var(--modal-radius);
}

.password-toggle-btn:hover,
.password-toggle-btn:focus-visible {
    color: var(--color-brand-dark);
}

.password-toggle-btn .material-symbols-outlined {
    font-size: 1.25rem;
}

.form-group textarea {
    width: 100%;
    padding: 0.5rem 0.75rem;
    border: 0.0625rem solid var(--color-border-input);
    border-radius: var(--modal-radius);
    background: var(--color-white);
    font-family: inherit;
    font-size: var(--text-base);
    line-height: var(--leading-normal);
    resize: vertical;
    transition: border-color 0.15s ease;
}

.form-group textarea:hover {
    border-color: var(--color-border-input-hover);
}

.form-group textarea:focus {
    outline: none;
    border-color: var(--color-teal);
    box-shadow: 0 0 0 0.125rem var(--color-teal);
}

.form-group input[type="date"]::-webkit-calendar-picker-indicator {
    filter: invert(28%) sepia(50%) saturate(600%) hue-rotate(140deg);
    cursor: pointer;
}

/* Checkbox */
.form-group--checkbox {
    flex-direction: row;
    align-items: center;
    gap: 0.5rem;
}

.form-checkbox-label {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    cursor: pointer;
    font-size: var(--text-sm);
    line-height: var(--leading-normal);
}

.form-checkbox-label input[type="checkbox"] {
    appearance: none;
    -webkit-appearance: none;
    width: 0.5rem;
    height: 0.5rem;
    min-width: 0.5rem;
    flex-shrink: 0;
    background-color: var(--color-checkbox-bg);
    border: 1px solid var(--color-border-section);
    border-radius: 1px;
    box-sizing: border-box;
    cursor: pointer;
}

.form-checkbox-label input[type="checkbox"]:checked {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath d='M1.5 4.5 L3 6 L6.5 2.5' stroke='%23136264' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' fill='none'/%3E%3C/svg%3E");
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
}

/* Radio */
.form-group--radio {
    gap: 0.5rem;
}

.form-group__label {
    font-size: var(--text-sm);
    font-weight: var(--font-weight-medium);
    color: var(--color-header-title);
}

.form-radio-options {
    display: flex;
    gap: 1.5rem;
    flex-wrap: wrap;
}

.form-radio-label {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    cursor: pointer;
    font-size: var(--text-sm);
}

.form-radio-label input[type="radio"] {
    width: 1.125rem;
    height: 1.125rem;
    accent-color: var(--color-teal);
    cursor: pointer;
}

.form-radio-options--column {
    flex-direction: column;
    gap: 0.75rem;
}

.form-radio-options--column .form-radio-label {
    align-items: flex-start;
}

.form-radio-options--column .form-radio-label input[type="radio"] {
    margin-top: 0.125rem;
    flex-shrink: 0;
}

/* Stepper */
.stepper {
    position: relative;
    background-color: var(--color-white);
    border-radius: 0.3125rem;
    margin-bottom: 2rem;
}

.stepper__track {
    position: absolute;
    top: 1rem;
    left: 10%;
    width: 80%;
    height: 0.0625rem;
    background-color: var(--color-stepper-track);
}

.stepper__line-active {
    height: 0.0625rem;
    background-color: var(--color-border-input);
}

.stepper__steps {
    list-style: none;
    display: flex;
    justify-content: space-between;
    position: relative;
    z-index: 1;
    padding: 0;
    margin: 0;
}

.stepper__step {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.375rem;
    flex: 1;
}

.stepper__circle {
    width: 2rem;
    height: 2rem;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: var(--text-base);
    font-weight: var(--font-weight-bold);
}

.stepper__circle--current {
    background-color: var(--color-teal-dark);
    box-shadow: inset 0 0 0 0.1875rem var(--color-stepper-ring-current);
    color: var(--color-stepper-text-current);
}

.stepper__circle--active {
    background-color: var(--color-border-input);
    box-shadow: inset 0 0 0 0.1875rem var(--color-stepper-ring-active);
    color: var(--color-teal-dark);
}

.stepper__circle--default {
    background-color: var(--color-stepper-bg-default);
    box-shadow: inset 0 0 0 0.1875rem var(--color-stepper-ring-default);
    color: var(--color-stepper-text-default);
}

.stepper__label {
    font-size: var(--text-sm);
    font-weight: var(--font-weight-normal);
    text-align: center;
    line-height: var(--leading-tight);
}

.stepper__label--current {
    color: var(--color-stepper-label-current);
}

.stepper__label--active {
    color: var(--color-stepper-label-active);
}

.stepper__label--default {
    color: var(--color-stepper-label-default);
}

/* Page Home */
.home-layout {
    position: relative;
    min-height: 54.875rem;
    overflow: hidden;
}

.home__content {
    padding-bottom: 3rem;
    margin-left: 13.1875rem;
    width: 35rem;
    display: flex;
    flex-direction: column;
    gap: 2rem;
}

.home__illustration {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    right: 0;
    width: 27.375rem;
    pointer-events: none;
}

.home__illustration img {
    width: 100%;
    height: auto;
    display: block;
}

.home__description {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.home__description ul {
    padding-left: 1.5rem;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.home__form {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    width: 24.9375rem;
}

.home-form-fields {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.form-required {
    font-size: var(--text-xs);
    color: var(--color-error-text);
}

.form-links-row {
    display: flex;
    justify-content: space-between;
}

.form-link-small {
    font-size: var(--text-sm);
    color: var(--color-teal);
    text-decoration: none;
    padding-left: 0.4rem;
    padding-right: 0.4rem;
    padding-top: 0.2rem;
    padding-bottom: 0.2em;
}

.form-link-small:hover {
    text-decoration: underline;
}

.form-error {
    color: var(--color-error-text);
    font-size: var(--text-sm);
}

.form-group ul {
    list-style: none;
    padding: 0;
    margin: 0.25rem 0 0;
}

.form-group ul li {
    color: var(--color-error-text);
    font-size: var(--text-sm);
}

.form-banner-error {
    background-color: #fef2f2;
    border: 0.0625rem solid var(--color-status-error);
    border-radius: 0.25rem;
    padding: 0.75rem 1rem;
    color: var(--color-error-text);
    font-size: var(--text-sm);
    font-weight: var(--font-weight-bold);
    margin-bottom: 1rem;
}

.form-banner-error__title {
    margin: 0 0 0.5rem;
}

.form-banner-error__list {
    margin: 0;
    padding-left: 1.25rem;
    font-weight: var(--font-weight-medium);
}

.form-banner-error__list li + li {
    margin-top: 0.25rem;
}

.home-separator {
    border: none;
    border-top: 0.0625rem solid var(--color-separator);
    margin: 0;
}

.home-register-text {
    font-size: var(--text-base);
}

@media (max-width: 80em) {
    .home__illustration {
        display: none;
    }

    .home-layout {
        min-height: auto;
    }

    .home__content {
        margin-left: 0;
        width: 100%;
    }

    .home__form {
        width: 100%;
    }
}

/* Page Création de compte */
.register__layout {
    display: flex;
    align-items: flex-start;
    margin: 0 calc(-1 * var(--container-padding));
    min-height: var(--min-height-page);
}

.form-layout-col {
    padding-bottom: 3rem;
    max-width: 100%;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    gap: 2rem;
}

.register-form-col {
    width: 56.4375rem;
}

.register__sections {
    display: flex;
    flex-direction: column;
    gap: 3rem;
}

.register__section {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    border: none;
    border-left: 0.0625rem solid var(--color-border-section);
    padding: 0 0 0 0.75rem;
    margin: 0;
}

.register__section[hidden] {
    display: none;
}

.register__section-title,
.confirmation-title,
.modal__question,
.resume-card__title {
    font-size: var(--text-xl);
    font-weight: var(--font-weight-bold);
    color: var(--color-teal);
    line-height: var(--leading-tight);
}

.register__section-fields {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.form-row-2col {
    display: flex;
    gap: 2rem;
}

.form-row-2col > * {
    flex: 1;
}

.register__actions {
    display: flex;
    justify-content: flex-end;
    gap: 1.5rem;
    margin-top: 2rem;
}

@media (max-width: 48rem) {
    .register__actions {
        flex-direction: column;
        align-items: stretch;
    }

    .register__actions > form > .btn {
        width: 100%;
    }
}

/* Resume cards — étape 5 */
.resume-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2rem;
}

@media (max-width: 48rem) {
    .resume-grid {
        grid-template-columns: 1fr;
    }
}

.resume-card {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    background-color: var(--color-teal-bg);
    border: 0.0625rem solid var(--color-border-section);
    padding: 0.75rem;
}

.resume-card__header {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.resume-card__icon {
    font-size: 1.25rem;
    color: var(--color-header-subtitle);
}

.resume-card__rows {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.resume-card__row {
    display: flex;
    gap: 0.5rem;
    font-size: var(--text-sm);
}

.resume-card__label {
    font-weight: var(--font-weight-normal);
    color: var(--color-header-title);
    flex-shrink: 0;
}

.resume-card__value {
    font-weight: var(--font-weight-bold);
    color: var(--color-header-title);
}

.register__rgpd {
    margin-left: 6rem;
    flex: 1;
    background-color: var(--color-teal-bg);
    border-radius: 0.5rem;
    padding: 15.4375rem 3rem 2rem 3rem;
    min-height: var(--min-height-page);
    align-self: stretch;
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}

.register-rgpd-text {
    font-family: var(--font-secondary);
    font-size: var(--text-sm);
    font-weight: var(--font-weight-medium);
    color: var(--color-header-subtitle);
    line-height: var(--leading-normal);
}

@media (max-width: 48rem) {
    .register__layout {
        flex-direction: column;
        margin: 0;
    }

    .register-form-col {
        width: 100%;
    }

    .form-row-2col {
        flex-direction: column;
        gap: 1rem;
    }

    .register__rgpd {
        margin-left: 0;
        padding: 1.5rem;
        min-height: auto;
    }

    .modal {
        width: calc(100vw - 2rem);
    }

    .modal__footer {
        flex-direction: column;
        align-items: stretch;
        height: auto;
        padding: 1rem 2rem;
    }

    .modal__footer .btn--auto {
        width: 100%;
    }
}

/* Civilité en radio */
.register__section-fields .form-group--civilite {
    display: flex;
    gap: 1.5rem;
    flex-direction: row;
    align-items: center;
}

.register__section-fields .form-group--civilite label:first-child {
    font-weight: var(--font-weight-medium);
    min-width: 5rem;
}

/* Upload de fichier */
.file-upload-field input[type="file"] {
    display: none;
}

.file-upload-zone {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 4rem;
    width: 100%;
    background-color: var(--color-white);
    border: 0.0625rem dashed var(--color-teal);
    border-radius: var(--modal-radius);
    color: var(--color-teal);
    cursor: pointer;
    transition: background-color 0.2s;
    span.material-symbols-outlined {
        font-size: var(--text-xl);
    }
}

.file-upload-zone:hover {
    background-color: var(--color-teal-bg);
}

.file-upload-existing {
    display: flex;
    align-items: center;
    gap: 0.375rem;
    margin-bottom: 0.5rem;
    font-size: var(--text-sm);
}

.file-upload-existing[hidden] {
    display: none;
}

.file-upload-existing__link {
    color: var(--color-teal);
    text-decoration: underline;
}

.file-upload-existing__link:hover {
    text-decoration: none;
}

.file-upload-selected {
    display: flex;
    align-items: center;
    gap: 0.375rem;
    margin-bottom: 0.5rem;
    font-size: var(--text-sm);
}

.file-upload-selected[hidden] {
    display: none;
}

.file-upload-selected__size {
    color: var(--color-muted);
}

.file-upload-selected__retirer {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.25rem;
    background: none;
    border: none;
    border-radius: 0.25rem;
    color: var(--color-teal);
    cursor: pointer;
}

.file-upload-selected__retirer:hover {
    background-color: var(--color-teal-bg);
}

.file-upload-existing--list {
    list-style: none;
    padding: 0;
    margin: 0 0 0.5rem;
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.file-upload-existing__item {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.25rem 0.5rem;
    background-color: var(--color-teal-bg);
    border: 0.0625rem solid var(--color-border-input);
    border-radius: var(--modal-radius);
    max-width: 20rem;
    font-size: var(--text-sm);
}

.file-upload-existing__action-supprimer,
.file-upload-preview-item__retirer {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.25rem;
    background: none;
    border: none;
    border-radius: 0.25rem;
    color: var(--color-teal);
    cursor: pointer;
}

.file-upload-existing__action-supprimer:hover,
.file-upload-preview-item__retirer:hover {
    background-color: var(--color-teal-bg);
}

.file-upload-preview-list {
    list-style: none;
    padding: 0;
    margin: 0 0 0.5rem;
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.file-upload-preview-list[hidden] {
    display: none;
}

.file-upload-preview-item {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.25rem 0.5rem;
    background-color: var(--color-teal-bg);
    border: 0.0625rem solid var(--color-border-input);
    border-radius: var(--modal-radius);
    max-width: 20rem;
    font-size: var(--text-sm);
}

.file-upload-preview-item__size {
    color: var(--color-muted);
}

.file-upload-zone--disabled {
    opacity: 0.5;
    cursor: not-allowed;
    pointer-events: none;
}

.file-upload-compteur {
    font-size: var(--text-sm);
    color: var(--color-muted);
    margin: 0.25rem 0 0;
    text-align: right;
}

.file-upload-meta {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 1rem;
    flex-wrap: wrap;
    margin: 0.25rem 0 0;
}

.file-upload-meta .form-hint,
.file-upload-meta .file-upload-compteur {
    margin: 0;
}

.file-upload-error {
    color: var(--color-error-text);
    font-size: var(--text-sm);
    font-weight: var(--font-weight-medium);
    margin: 0.25rem 0 0;
}

.file-upload-error[hidden] {
    display: none;
}

.form-hint {
    font-size: var(--text-sm);
    font-weight: var(--font-weight-normal);
    color: var(--color-text-hint);
}

.form-notice {
    font-size: var(--text-sm);
    font-weight: var(--font-weight-normal);
    border-radius: var(--card-radius);
    padding: 0.625rem 0.875rem;
}

.form-notice--info {
    background-color: var(--color-teal-bg);
    color: var(--color-teal-dark);
}

/* Confirmation création compte */
.confirmation-layout {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: var(--min-height-page);
}

.empty-state {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 3rem;
}

.empty-state--constrained {
    max-width: 29.8125rem;
    width: 100%;
}

.empty-state__illustration {
    width: 16.375rem;
    height: 10.9375rem;
    object-fit: cover;
}

.empty-state__body {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2rem;
}

.empty-state__body--text {
    gap: 0.5rem;
    text-align: center;
    width: 100%;
}

.confirmation-subtitle {
    font-size: var(--text-sm);
    font-weight: var(--font-weight-normal);
    color: var(--color-text-muted-alt);
    line-height: var(--leading-tight);
}

/* Planning */
.planning {
    display: grid;
    grid-template-columns: 5rem repeat(5, 1fr);
    row-gap: 0.25rem;
    width: 30rem;
}

.planning__row-label {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    justify-content: center;
    padding-right: 0.5rem;
    font-size: var(--text-xs);
    font-weight: var(--font-weight-normal);
    color: var(--color-header-subtitle);
    line-height: 1;
}

.planning__row-label--split {
    gap: 0.125rem;
}

.planning__row-label-sub {
    font-size: 0.5rem;
    color: var(--color-text-subtle);
}

.planning__day-header {
    font-size: var(--text-base);
    font-weight: var(--font-weight-normal);
    color: var(--color-header-subtitle);
    text-align: center;
    padding: 0.25rem 0;
    line-height: var(--leading-tight);
}

.planning__col--alt {
    background-color: var(--color-teal-bg);
}

.planning__cell {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0.4375rem 0;
}

.planning__cell--journee {
    padding: 0.5rem 0;
}

.planning__checkbox {
    display: flex;
    cursor: pointer;
}

.planning__checkbox input[type="checkbox"] {
    display: none;
}

.planning__checkbox-indicator {
    width: 0.5rem;
    height: 0.5rem;
    border-radius: 50%;
    background-color: var(--color-checkbox-bg);
    outline: 0.0625rem solid var(--color-border-section);
    flex-shrink: 0;
}

.planning__checkbox input[type="checkbox"]:checked + .planning__checkbox-indicator {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath d='M1.5 4.5 L3 6 L6.5 2.5' stroke='%23136264' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-size: 0.375rem 0.375rem;
    background-repeat: no-repeat;
    background-position: center;
}

/* Table planning formulaire */
.planning-table {
    border-collapse: collapse;
    width: 100%;
}

.planning-table__head th {
    padding: 0.5rem 1rem;
    background-color: var(--color-teal-bg);
    color: var(--color-teal);
    font-size: var(--text-sm);
    font-weight: var(--font-weight-bold);
    text-align: center;
    border-bottom: 0.125rem solid var(--color-border-section);
    white-space: nowrap;
}

.planning-table__head th:first-child {
    text-align: left;
    width: 6.25rem;
}

.planning-table__row {
    border-bottom: 0.0625rem solid var(--color-border-input);
}

.planning-table__row:last-child {
    border-bottom: none;
}

.planning-table__row:hover {
    background-color: var(--color-row-hover);
}

.planning-table__day {
    padding: 0.625rem 1rem;
    font-size: var(--text-sm);
    font-weight: var(--font-weight-medium);
    color: var(--color-header-subtitle);
    white-space: nowrap;
}

.planning-table__cell {
    padding: 0.5rem 1rem;
    text-align: center;
    vertical-align: middle;
}

.planning-table__cell input[type="radio"] {
    width: 1.125rem;
    height: 1.125rem;
    accent-color: var(--color-teal);
    cursor: pointer;
    display: block;
    margin: 0 auto;
}

.planning-table__caption {
    margin-top: 0.5rem;
    font-size: var(--text-sm);
    color: var(--color-header-subtitle);
    text-align: center;
    font-style: italic;
}

.planning-table__closed-days {
    font-size: var(--text-sm);
    color: var(--color-text-hint);
    font-style: italic;
    margin-bottom: 1rem;
}

.planning-table input[type="radio"]:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.form-hint--italic {
    font-style: italic;
}

.transport-interne-info:not([hidden]) {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
    padding: 1.5rem 1rem;
}

.transport-interne-info__bus {
    display: flex;
    gap: 2rem;
}

.transport-interne-info__bus .material-symbols-outlined {
    font-size: 4rem;
}

.transport-interne-info__text {
    font-size: var(--text-sm);
    color: var(--color-header-subtitle);
    text-align: center;
    max-width: 30rem;
}

/* Material Symbols */
.material-symbols-outlined {
    font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 20;
    font-size: var(--text-xl);
    line-height: 1;
    vertical-align: middle;
    color: var(--color-teal);
    user-select: none;
}

.material-symbols-outlined--lg {
    font-size: var(--text-2xl);
}

/* Bouton secondaire spécifique aux modales (fond #fff6ec au lieu de transparent) */
.btn--modal-secondary {
    background-color: var(--color-btn-modal-secondary-bg);
    border: 0.0625rem solid var(--color-teal);
    color: var(--color-teal);
}

.btn--modal-secondary:hover {
    border-color: var(--color-teal-hover);
    color: var(--color-teal-hover);
}

/* Boutons — variantes supplémentaires */
.btn--auto {
    width: auto;
    padding: 0 1rem;
}

/* Dashboard */
.dashboard {
    display: flex;
    flex-direction: row;
    margin-right: calc(-1 * var(--container-padding));
    min-height: var(--min-height-page);
}

.dashboard-aside {
    width: 33.625rem;
    flex-shrink: 0;
    background-color: var(--color-teal-bg);
    border-radius: 0.5rem 0 0 0.5rem;
    padding: 3rem 6rem 2rem 3rem;
    display: flex;
    flex-direction: column;
    gap: 6rem;
}

.dashboard-card {
    background-color: var(--color-white);
    border-radius: var(--card-radius-lg);
    padding: var(--card-padding);
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.dashboard-card__header {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
}

.dashboard-card__title {
    font-size: var(--text-2xl);
    font-weight: var(--font-weight-bold);
    color: var(--color-teal);
    line-height: var(--leading-tight);
}

.dashboard__contact-row {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 0.5rem;
    font-size: var(--text-base);
    color: var(--color-black);
}

.dashboard__contact-split {
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: flex-start;
}

.dashboard-contact-address {
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    gap: 0.5rem;
}

.dashboard-contact-details {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.dashboard-info-text {
    font-size: var(--text-base);
    color: var(--color-black);
}

.dashboard-info-actions {
    display: flex;
    flex-direction: row;
    justify-content: center;
    gap: 3rem;
}

.dashboard-info-action {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.75rem;
}

.dashboard-info-phone {
    font-size: 0.625rem;
    font-weight: var(--font-weight-medium);
    color: var(--color-text-dark-muted);
    text-align: center;
}

.dashboard-info-phone + .dashboard-info-phone {
    margin-top: -0.5rem;
}

.dashboard-info-phone--horaires {
    font-style: italic;
}

.dashboard-main {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;
    padding: 3rem;
    position: relative;
}

.dashboard-main::after {
    content: '';
    position: absolute;
    inset: 0;
    background-image: url('../images/dashboard.png');
    background-repeat: no-repeat;
    background-position: bottom left;
    background-size: 100% auto;
    opacity: 0.25;
    pointer-events: none;
    z-index: 0;
}

.dashboard-main--empty::after {
    display: none;
}

.dashboard-main > * {
    position: relative;
    z-index: 1;
}

.empty-state__label {
    font-size: var(--text-xs);
    color: var(--color-header-subtitle);
}

.dashboard-dossiers {
    display: flex;
    flex-wrap: wrap;
    gap: 1.25rem;
    list-style: none;
    width: 100%;
    padding: 0;
    margin: 0;
}

.dashboard-dossier-card {
    background-color: var(--color-white);
    border-radius: var(--card-radius-lg);
    border: 1px solid var(--color-border-input);
    padding: var(--card-padding);
    display: flex;
    flex-direction: column;
    width: 100%;
    position: relative;
}

.dashboard-dossier-name {
    font-size: var(--text-base);
    font-weight: var(--font-weight-bold);
    color: var(--color-teal);
}

.dashboard-dossiers-section {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1.5rem;
    width: 100%;
}

.dashboard-section-header {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    width: 100%;
}

.dashboard-dossier-card__identity {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 0.5rem;
    font-weight: var(--font-weight-bold);
    color: var(--color-brand-dark);
    .material-symbols-outlined {
        color: var(--color-brand-dark);
    }
}

.dashboard-dossier-card__meta {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    font-size: var(--text-sm);
    color: var(--color-text-dark-muted);
}

.dashboard-dossier-card__address {
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    gap: 0.5rem;
    font-size: var(--text-sm);
    color: var(--color-text-dark-muted);
    padding-top: 1.5rem;
}

.dashboard-dossier-card .tag {
    position: absolute;
    top: var(--card-padding);
    right: var(--card-padding);
}

.dashboard-dossier-card__footer {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: flex-end;
    gap: 1rem;
    padding-top: 0.75rem;

    margin-top: auto;
}

.dashboard-dossier-card__alert {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 0.5rem;
    font-size: var(--text-sm);
    color: var(--color-error-text);
}

@media (max-width: 48rem) {
    .dashboard {
        flex-direction: column;
        margin-right: 0;
    }

    .dashboard-main {
        padding: 1.5rem 0;
    }

    .dashboard-main::after {
        display: none;
    }

    .dashboard-aside {
        width: 100%;
        padding: 1.5rem 1rem;
        border-radius: 0;
        gap: 2rem;
    }

    .dashboard-section-header {
        flex-direction: column;
        align-items: stretch;
        gap: 1rem;
    }
}

/* Page formulaire dossier — layout centré sans sidebar */
.dossier-form__layout {
    padding-bottom: 3rem;
}

/* Mention champs obligatoires */
.form-required-mention {
    font-size: var(--text-sm);
    color: var(--color-error-text);
    font-weight: var(--font-weight-bold);
}
/* Champs en lecture seule — base commune */
.form-static-value,
.adresse-rl-display {
    display: flex;
    font-size: var(--text-sm);
    color: var(--color-header-subtitle);
    background-color: var(--color-bg-disabled);
    border-radius: var(--modal-radius);
    border: 0.0625rem solid var(--color-border-input);
}

/* Valeur de champ en lecture seule (non éditable) */
.form-static-value {
    height: 2.5rem;
    padding: 0 0.75rem;
    align-items: center;
    margin: 0;
}

/* Adresse RL en lecture seule */
.adresse-rl-display {
    flex-direction: column;
    gap: 0.125rem;
    padding: 0.5rem 0.75rem;
}

.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.sr-only--focusable:focus {
    position: fixed;
    top: 0.5rem;
    left: 0.5rem;
    z-index: 9999;
    width: auto;
    height: auto;
    padding: 0.75rem 1.5rem;
    margin: 0;
    overflow: visible;
    clip: auto;
    white-space: normal;
    background: var(--color-white, #fff);
    color: var(--color-teal, #136264);
    font-weight: bold;
    border: 0.125rem solid var(--color-teal, #136264);
    border-radius: 0.25rem;
}

/* InfoBox */
.info-box {
    display: flex;
    gap: 0.75rem;
    padding: 1rem 1.25rem;
    margin: 1rem 0;
    border-radius: var(--card-radius);
    border: 0.0625rem solid transparent;
    border-left-width: 0.25rem;
}

.info-box__icone {
    font-size: 1.5rem;
    flex-shrink: 0;
    line-height: 1;
}

.info-box__body {
    flex: 1;
}

.info-box__titre {
    font-weight: var(--font-weight-bold);
    margin-bottom: 0.25rem;
}

.info-box__body p:last-child {
    margin-bottom: 0;
}

.info-box--attention {
    background-color: var(--color-brand-beige);
    border-color: var(--color-brand-orange);
}

.info-box--attention .info-box__icone,
.info-box--attention .info-box__titre {
    color: var(--color-brand-orange-dark);
}

.info-box--info {
    background-color: var(--color-teal-bg);
    border-color: var(--color-teal);
}

.info-box--info .info-box__icone,
.info-box--info .info-box__titre {
    color: var(--color-teal-dark);
}

/* Commentaire RL avec troncature + lire la suite */
.commentaire-rl {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    min-width: 0;
}

.commentaire-rl__content {
    min-width: 0;
}

.commentaire-rl--collapsed .commentaire-rl__content {
    display: -webkit-box;
    -webkit-line-clamp: 3;
    line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.commentaire-rl__toggle {
    align-self: flex-start;
    background: none;
    border: none;
    min-height: 1.5rem;
    padding: 0.25rem 0.25rem;
    margin-left: -0.25rem;
    color: var(--color-teal);
    font-size: var(--text-sm);
    font-weight: var(--font-weight-medium);
    text-decoration: underline;
    cursor: pointer;
}

.commentaire-rl__toggle:hover {
    color: var(--color-teal-dark, var(--color-teal));
}

.commentaire-rl__toggle:focus-visible {
    outline: 0.125rem solid var(--color-teal);
    outline-offset: 0.125rem;
}

.resume-card__empty {
    margin: 0;
    color: var(--color-muted);
    font-style: italic;
}

.piece-groups {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 1rem;
}

.piece-group {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    background-color: var(--color-white);
    border: 0.0625rem solid var(--color-border-input);
    border-radius: var(--modal-radius);
    padding: 0.75rem;
    min-width: 0;
}

.piece-group__header {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.piece-group__icon {
    font-size: 1.25rem;
    color: var(--color-header-subtitle);
}

.piece-group__title {
    margin: 0;
    font-size: var(--text-base);
    color: var(--color-header-subtitle);
}

@media (max-width: 48rem) {
    .piece-groups {
        grid-template-columns: 1fr;
    }
}

.piece-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    max-width: 32rem;
}

.piece-item {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 1rem;
    background-color: var(--color-checkbox-bg);
    border-radius: var(--modal-radius);
}

.piece-item__icon {
    color: var(--color-teal);
    font-size: 1.75rem;
    flex-shrink: 0;
}

.piece-item__info {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    flex: 1;
    min-width: 0;
}

.piece-item__nom {
    color: var(--color-teal);
    font-weight: var(--font-weight-medium);
    text-decoration: underline;
    word-break: break-all;
}

.piece-item__nom:hover {
    text-decoration: none;
}

.piece-item__date {
    font-size: var(--text-xs);
    color: var(--color-muted);
    font-style: italic;
}

.btn--small {
    padding: 0.375rem 0.5rem;
    font-size: var(--text-xs);
    min-height: auto;
}

/* Tom Select — surcharge front-office */

.ts-wrapper.single .ts-control {
    display: flex;
    align-items: center;
    border: 0.0625rem solid var(--color-border-input);
    border-radius: var(--modal-radius);
    min-height: 2.5rem;
    padding: 0 0.75rem;
    background-color: var(--color-white);
    font-size: var(--text-sm);
    transition: border-color 0.15s ease;
}

.ts-wrapper.single .ts-control:hover {
    border-color: var(--color-border-input-hover);
}

.ts-wrapper.single.focus .ts-control {
    border-color: var(--color-teal);
    outline: none;
    box-shadow: 0 0 0 0.125rem var(--color-teal);
}

.ts-wrapper.single.disabled .ts-control {
    background-color: var(--color-bg-disabled);
    border-color: var(--color-border-disabled);
    cursor: not-allowed;
}

.ts-dropdown {
    border: 0.0625rem solid var(--color-border-input);
    border-radius: var(--modal-radius);
    background-color: var(--color-white);
    box-shadow: 0 0.25rem 0.5rem rgba(19, 98, 100, 0.1);
}

.ts-dropdown .option:hover {
    background-color: var(--color-teal-bg);
}

.ts-dropdown .option.selected,
.ts-dropdown .option.active {
    background-color: var(--color-teal);
    color: var(--color-white);
}

.ts-dropdown .create {
    color: var(--color-teal);
}

.content-narrow {
    max-width: 50rem;
    margin-inline: auto;
    margin-top: 2rem;
}

