/* =================================================================
   FOUD · CSS custom (surcharges / styles applicatifs)
   ================================================================= */

/* ---------- Messages flash (toasts) ---------- */
.foud-flash-stack {
    position: fixed;
    top: 18px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 2000;
    display: flex;
    flex-direction: column;
    gap: 10px;
    width: min(440px, calc(100vw - 28px));
    pointer-events: none;
}

.foud-flash {
    pointer-events: auto;
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 16px;
    border-radius: 14px;
    background: #fff;
    color: var(--charcoal, #1D1D1B);
    border: 1px solid rgba(0, 0, 0, .06);
    border-left: 4px solid var(--charcoal, #1D1D1B);
    box-shadow: 0 12px 32px rgba(0, 0, 0, .14);
    font-size: 14px;
    font-weight: 500;
    line-height: 1.35;
    cursor: pointer;
    overflow: hidden;
    max-height: 200px;
    animation: foud-flash-in .35s cubic-bezier(.2, .8, .2, 1);
    transition: opacity .3s ease, transform .3s ease, max-height .4s ease,
                margin .3s ease, padding .3s ease;
}

.foud-flash__ico {
    flex-shrink: 0;
    display: grid;
    place-items: center;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    color: #fff;
    font-size: 14px;
    font-weight: 700;
    background: var(--charcoal, #1D1D1B);
}

.foud-flash__msg {
    flex: 1;
}

.foud-flash__close {
    flex-shrink: 0;
    border: 0;
    background: transparent;
    color: var(--ink-faint, rgba(29, 29, 27, .4));
    font-size: 14px;
    line-height: 1;
    cursor: pointer;
    padding: 4px;
    border-radius: 6px;
}

.foud-flash__close:hover {
    color: var(--charcoal, #1D1D1B);
    background: rgba(0, 0, 0, .05);
}

/* Variantes */
.foud-flash--success { border-left-color: var(--green, #679F68); }
.foud-flash--success .foud-flash__ico { background: var(--green, #679F68); }

.foud-flash--error,
.foud-flash--danger { border-left-color: #c0392b; }
.foud-flash--error .foud-flash__ico,
.foud-flash--danger .foud-flash__ico { background: #c0392b; }

.foud-flash--warning { border-left-color: #e08a1e; }
.foud-flash--warning .foud-flash__ico { background: #e08a1e; }

.foud-flash--info { border-left-color: var(--charcoal, #1D1D1B); }

/* Sortie (clic ou auto-disparition) : on replie la place occupée */
.foud-flash--out {
    opacity: 0;
    transform: translateY(-10px);
    max-height: 0;
    margin: 0;
    padding-top: 0;
    padding-bottom: 0;
    border-width: 0;
    pointer-events: none;
}

@keyframes foud-flash-in {
    from { opacity: 0; transform: translateY(-16px); }
    to   { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
    .foud-flash { animation: none; }
}


/* Étape 1 : grille code postal + ville */
.cp-ville-grid {
    display: grid;
    grid-template-columns: 120px 1fr;
    gap: 10px;
    margin-top: 10px;
}

/* Sous-titre du statut "hors zone" */
.zone-status.ko small {
    color: inherit;
    opacity: .8;
}

/* Modale produit : ligne quantité + bouton ajouter */
.pm-foot-actions {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* Page « Mon compte » */
.compte-wrap {
    max-width: 640px;
    margin: 40px auto;
    padding: 0 20px;
}

.compte-card {
    background: #fff;
    border: 1px solid rgba(0, 0, 0, .08);
    border-radius: 18px;
    padding: 32px 30px;
    box-shadow: 0 10px 30px rgba(0, 0, 0, .04);
}

.compte-card h1 {
    margin: 0 0 4px;
}

.compte-sub {
    margin: 0 0 22px;
    font-size: 13.5px;
    opacity: .7;
}

.compte-form {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.compte-form .btn-foud {
    width: 100%;
    margin-top: 6px;
    padding: 14px;
}

.compte-form .auth-field small {
    font-weight: 400;
    opacity: .6;
}

.compte-liens {
    margin-top: 22px;
    padding-top: 18px;
    border-top: 1px solid rgba(0, 0, 0, .08);
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.compte-liens .btn-foud {
    width: 100%;
    justify-content: center;
}

/* Page « Mes adresses » */
.adresses-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 22px;
}

.adresses-head h1 {
    margin: 0 0 4px;
}

.adresses-head .compte-sub {
    margin: 0;
}

.adresses-vide {
    text-align: center;
    padding: 24px 0 8px;
}

.adresses-vide p {
    margin: 0 0 16px;
    opacity: .7;
}

.adresses-liste {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.adresse-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 16px 18px;
    border: 1px solid rgba(0, 0, 0, .1);
    border-radius: 14px;
}

.adresse-infos {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.adresse-libelle {
    font-weight: 700;
    margin-bottom: 2px;
}

.adresse-ligne {
    font-size: 14px;
    opacity: .8;
}

.adresse-actions {
    display: flex;
    gap: 8px;
    flex-shrink: 0;
}

.btn-sm-foud {
    padding: 8px 14px;
    font-size: 13px;
}

.btn-danger-foud {
    color: #c0392b;
    border-color: rgba(192, 57, 43, .35);
}

.btn-danger-foud:hover {
    background: rgba(192, 57, 43, .08);
}

@media (max-width: 560px) {
    .adresse-item {
        flex-direction: column;
        align-items: stretch;
    }

    .adresse-actions {
        justify-content: flex-end;
    }
}

/* Message de validation du code promo (panier) */
.promo-msg {
    margin: 8px 2px 0;
    font-size: 12.5px;
    font-weight: 700;
    min-height: 1em;
}

.promo-msg--ok {
    color: var(--green);
}

.promo-msg--ko {
    color: var(--red);
}

/* ===================================================================
   Modale « Choix du mode de paiement »
   =================================================================== */
.paiement {
    padding: 8px 6px 28px;
    text-align: center;
}

.paiement-title {
    margin: 14px 0 4px;
    font-size: 26px;
}

.paiement-sub {
    margin: 0 0 20px;
    font-size: 14px;
    color: var(--ink-soft);
}

.paiement-options {
    display: flex;
    flex-direction: column;
    gap: 12px;
    text-align: left;
}

.paiement-form {
    margin: 0;
}

.paiement-option {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 16px 18px;
    border: 1px solid var(--line-strong);
    border-radius: var(--radius-sm, 14px);
    background: #fff;
    cursor: pointer;
    text-align: left;
    transition: border-color .15s, box-shadow .15s, transform .05s;
}

.paiement-option:hover:not(.is-disabled) {
    border-color: var(--red);
    box-shadow: 0 6px 18px rgba(203, 34, 55, .10);
}

.paiement-option:active:not(.is-disabled) {
    transform: translateY(1px);
}

.paiement-option.is-disabled {
    opacity: .55;
    cursor: not-allowed;
}

.paiement-option .po-ico {
    font-size: 26px;
    flex: none;
}

.paiement-option .po-body {
    display: flex;
    flex-direction: column;
    flex: 1;
}

.paiement-option .po-nom {
    font-weight: 700;
    font-size: 15px;
}

.paiement-option .po-desc {
    font-size: 12.5px;
    color: var(--ink-soft);
}

.paiement-option .po-arrow {
    font-size: 20px;
    color: var(--red);
    flex: none;
}

.paiement-note {
    margin: 4px 2px 0;
    font-size: 13px;
    color: var(--ink-soft);
}

/* ===================================================================
   Page de confirmation de commande
   =================================================================== */
.confirmation {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 40px 18px;
}

.confirmation-card {
    width: 100%;
    max-width: 560px;
    background: var(--surface, #fff);
    border: 1px solid var(--line);
    border-radius: 22px;
    padding: 34px 30px;
    box-shadow: 0 20px 50px rgba(29, 29, 27, .08);
}

.confirmation-logo {
    display: block;
    text-align: center;
    margin-bottom: 16px;
}

.confirmation-logo img {
    height: 38px;
}

.confirmation-head {
    text-align: center;
    margin-bottom: 24px;
}

.confirmation-check {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: var(--green);
    color: #fff;
    font-size: 30px;
    margin-bottom: 14px;
}

.confirmation-head h1 {
    margin: 0 0 10px;
    font-size: clamp(26px, 4.5vw, 36px);
}

.confirmation-head p {
    margin: 0 0 12px;
    color: var(--ink-soft);
    font-size: 15px;
}

.confirmation-statut {
    display: inline-block;
    padding: 5px 14px;
    border-radius: 999px;
    font-size: 12.5px;
    font-weight: 700;
    color: #fff;
    background: var(--statut-color, var(--green));
}

.confirmation-infos {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
    padding: 18px 0;
    border-top: 1px solid var(--line);
    border-bottom: 1px solid var(--line);
    margin-bottom: 18px;
}

.confirmation-infos .ci-bloc {
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.confirmation-infos .ci-lbl {
    font-size: 10.5px;
    text-transform: uppercase;
    letter-spacing: .12em;
    color: var(--ink-faint);
    font-weight: 700;
}

.confirmation-infos .ci-val {
    font-size: 14px;
    font-weight: 600;
}

.confirmation-lignes {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-bottom: 16px;
}

.cl-row {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    font-size: 14px;
}

.cl-row .cl-qte {
    color: var(--ink-faint);
    font-weight: 700;
}

.cl-row .cl-prix {
    white-space: nowrap;
    font-weight: 600;
}

.confirmation-totaux {
    border-top: 1px solid var(--line);
    padding-top: 14px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.ct-row {
    display: flex;
    justify-content: space-between;
    font-size: 14px;
    color: var(--ink-soft);
}

.ct-row.ct-remise {
    color: var(--green);
    font-weight: 700;
}

.ct-row.ct-total {
    margin-top: 6px;
    padding-top: 12px;
    border-top: 1px solid var(--line);
    font-size: 18px;
    color: var(--ink);
}

.ct-row.ct-total .display {
    font-size: 22px;
}

.confirmation-cta {
    width: 100%;
    margin-top: 22px;
    padding: 15px;
}

.confirmation-foot {
    text-align: center;
    margin-top: 14px;
    font-size: 12px;
    color: var(--ink-faint);
}

@media (max-width: 520px) {
    .confirmation-infos {
        grid-template-columns: 1fr;
    }
}

/* ===================================================================
   Mes commandes (liste + détail)
   =================================================================== */
.compte-wrap--large {
    max-width: 780px;
}

/* --- Liste --- */
.commandes-liste {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.commande-card {
    display: block;
    text-decoration: none;
    color: inherit;
    border: 1px solid var(--line);
    border-radius: 16px;
    padding: 18px 20px;
    background: #fff;
    transition: border-color .15s, box-shadow .15s, transform .05s;
}

.commande-card:hover {
    border-color: var(--red);
    box-shadow: 0 10px 26px rgba(29, 29, 27, .08);
}

.commande-card:active {
    transform: translateY(1px);
}

.cc-top {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
}

.cc-ref {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.cc-ref-num {
    font-weight: 700;
    font-size: 15px;
    letter-spacing: .02em;
}

.cc-date {
    font-size: 12px;
    color: var(--ink-faint);
    font-weight: 600;
}

.cc-statut {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 5px 12px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 700;
    white-space: nowrap;
    color: var(--statut-color, var(--green));
    background: color-mix(in srgb, var(--statut-color, var(--green)) 12%, #fff);
    border: 1px solid color-mix(in srgb, var(--statut-color, var(--green)) 35%, #fff);
}

.cc-statut-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--statut-color, var(--green));
    flex: none;
}

.cc-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 18px;
    margin: 14px 0;
    font-size: 13px;
    color: var(--ink-soft);
}

.cc-foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding-top: 14px;
    border-top: 1px solid var(--line);
}

.cc-total {
    font-family: var(--font-display);
    font-size: 20px;
}

.cc-total .cc-ttc {
    font-family: var(--font-body);
    font-size: 11px;
    font-weight: 700;
    color: var(--ink-faint);
    margin-left: 2px;
}

.cc-voir {
    font-size: 13px;
    font-weight: 700;
    color: var(--red);
    white-space: nowrap;
}

/* --- Détail --- */
.detail-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 14px;
    margin-bottom: 22px;
}

.detail-head h1 {
    margin: 0 0 4px;
    font-size: clamp(24px, 4vw, 32px);
    word-break: break-word;
}

.detail-section-titre {
    margin: 22px 0 12px;
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: .12em;
    color: var(--ink-faint);
    font-weight: 700;
}

.detail-retour {
    margin-top: 24px;
}

@media (max-width: 560px) {
    .cc-top,
    .detail-head {
        flex-direction: column;
    }

    .cc-top .cc-statut,
    .detail-head .cc-statut {
        align-self: flex-start;
    }
}

/* Sélecteur de créneau de livraison (panier) */
.creneau-choix {
    margin-top: 10px;
    padding-top: 9px;
    border-top: 1px dashed var(--line);
    border-radius: 6px;
}
.creneau-lbl {
    display: block;
    font-size: 9.5px;
    text-transform: uppercase;
    letter-spacing: .14em;
    color: var(--ink-faint);
    font-weight: 700;
    margin-bottom: 7px;
}
.creneau-options { display: flex; flex-wrap: wrap; gap: 7px; }
.creneau-opt {
    border: 1.5px solid var(--line-strong);
    background: #fff;
    color: var(--ink);
    border-radius: 999px;
    padding: 6px 13px;
    font-family: var(--font-body);
    font-size: 12.5px;
    font-weight: 700;
    cursor: pointer;
    transition: background .15s ease, color .15s ease, border-color .15s ease;
}
.creneau-opt:hover { border-color: var(--ink); }
.creneau-opt.is-active { background: var(--charcoal); color: var(--cream); border-color: var(--charcoal); }
.creneau-vide { font-size: 12px; color: var(--red); font-weight: 700; }
.creneau-choix--error {
    outline: 2px solid var(--red);
    outline-offset: 3px;
    animation: creneau-shake .3s ease;
}
@keyframes creneau-shake {
    0%, 100% { transform: translateX(0); }
    25% { transform: translateX(-4px); }
    75% { transform: translateX(4px); }
}

/* Sélecteur de date (flatpickr) aux couleurs FOUD */
.flatpickr-alt { cursor: pointer; background: #fff; }
.flatpickr-day.selected,
.flatpickr-day.selected:hover,
.flatpickr-day.selected:focus {
    background: var(--red);
    border-color: var(--red);
    color: #fff;
}
.flatpickr-day.today { border-color: var(--red); }
.flatpickr-day:hover:not(.flatpickr-disabled):not(.selected) { background: rgba(203, 34, 55, .08); }
.flatpickr-day.flatpickr-disabled,
.flatpickr-day.flatpickr-disabled:hover {
    color: rgba(29, 29, 27, .22);
    background: rgba(29, 29, 27, .03);
    text-decoration: line-through;
    cursor: not-allowed;
}
.flatpickr-months .flatpickr-month,
.flatpickr-current-month,
.flatpickr-weekday { color: var(--charcoal); }
span.flatpickr-weekday { color: var(--ink-faint); }

/* ===================================================================
   Tunnel de commande (plein écran, multi-étapes)
   =================================================================== */
.tunnel {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    background: var(--bg, #FCFAF5);
}

.tunnel-topbar {
    position: sticky;
    top: 0;
    z-index: 20;
    display: flex;
    align-items: center;
    gap: 18px;
    padding: 14px 22px;
    background: rgba(252, 250, 245, .92);
    backdrop-filter: blur(8px);
    border-bottom: 1px solid var(--line);
}

.tunnel-logo { height: 30px; flex: none; }

.tunnel-close {
    flex: none;
    width: 36px; height: 36px;
    display: grid; place-items: center;
    border-radius: 50%;
    border: 1px solid var(--line-strong);
    color: var(--ink);
    text-decoration: none;
    font-size: 15px;
}
.tunnel-close:hover { border-color: var(--ink); }

/* Barre de progression */
.tunnel-progress {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0;
    list-style: none;
    margin: 0;
    padding: 0;
    max-width: 560px;
    margin-inline: auto;
}
.tunnel-progress-item {
    display: flex;
    align-items: center;
    gap: 9px;
    color: var(--ink-faint);
    font-size: 13px;
    font-weight: 700;
}
.tunnel-progress-item:not(:last-child)::after {
    content: '';
    width: 26px; height: 2px;
    background: var(--line-strong);
    margin: 0 12px;
}
.tp-num {
    width: 27px; height: 27px;
    border-radius: 50%;
    background: #fff;
    border: 1.5px solid var(--line-strong);
    display: grid; place-items: center;
    font-size: 13px;
    flex: none;
}
.tunnel-progress-item.is-active { color: var(--ink); }
.tunnel-progress-item.is-active .tp-num { background: var(--red); border-color: var(--red); color: #fff; }
.tunnel-progress-item.is-done .tp-num { background: var(--green); border-color: var(--green); color: #fff; }

/* Corps : contenu + récap */
.tunnel-main {
    flex: 1;
    display: flex;
    gap: 28px;
    align-items: flex-start;
    max-width: 1100px;
    width: 100%;
    margin: 0 auto;
    padding: 30px 22px 120px;
}
.tunnel-content { flex: 1; min-width: 0; max-width: 640px; }

.tunnel-h1 {
    font-family: var(--font-display);
    font-size: clamp(24px, 4vw, 32px);
    margin: 0 0 6px;
}
.tunnel-h2 { font-size: 16px; margin: 0 0 12px; }
.tunnel-sub { margin: 0 0 24px; color: var(--ink-soft); font-size: 15px; }
.tunnel-hint { margin: 8px 2px 0; font-size: 12.5px; color: var(--ink-faint); }

.tunnel-block {
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 16px;
    padding: 20px 22px;
    margin-bottom: 18px;
}

.tunnel-cpville { display: grid; grid-template-columns: 130px 1fr; gap: 12px; }

/* Cartes de choix (créneau / paiement) */
.tunnel-choices { display: flex; flex-direction: column; gap: 12px; }
.tunnel-choice {
    position: relative;
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 16px 18px;
    border: 1.5px solid var(--line-strong);
    border-radius: 14px;
    background: #fff;
    cursor: pointer;
    transition: border-color .15s, box-shadow .15s;
}
.tunnel-choice input { position: absolute; opacity: 0; pointer-events: none; }
.tunnel-choice:has(input:checked) {
    border-color: var(--red);
    box-shadow: 0 6px 18px rgba(203, 34, 55, .10);
}
.tunnel-choice.is-disabled { opacity: .5; cursor: not-allowed; }
.tunnel-choice-body { flex: 1; display: flex; align-items: center; gap: 14px; }
.tc-ico { font-size: 24px; flex: none; }
.tc-nom { font-weight: 700; display: block; }
.tc-desc { font-size: 12.5px; color: var(--ink-soft); display: block; }
.tc-check {
    flex: none;
    width: 24px; height: 24px;
    border-radius: 50%;
    background: var(--red);
    color: #fff;
    display: none;
    place-items: center;
    font-size: 13px;
}
.tunnel-choice:has(input:checked) .tc-check { display: grid; }

/* Switch facturation identique */
.tunnel-switch { display: flex; align-items: center; gap: 10px; font-weight: 700; cursor: pointer; }
.tunnel-switch input { width: 18px; height: 18px; accent-color: var(--red); }
.tunnel-fact { margin-top: 18px; padding-top: 18px; border-top: 1px solid var(--line); }

/* Adresses enregistrées (chips) */
.tunnel-saved { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px; }
.tunnel-saved-chip {
    border: 1px solid var(--line-strong);
    background: #fff;
    border-radius: 999px;
    padding: 8px 14px;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    color: var(--ink);
}
.tunnel-saved-chip small { font-weight: 400; color: var(--ink-faint); margin-left: 4px; }
.tunnel-saved-chip:hover { border-color: var(--ink); }
.tunnel-saved-chip.is-active { border-color: var(--red); background: rgba(203, 34, 55, .06); color: var(--red); }

/* Auth dans le tunnel */
.auth--tunnel { max-width: 420px; }

/* Récapitulatif */
.tunnel-recap {
    position: sticky;
    top: 96px;
    flex: none;
    width: 320px;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 18px;
    padding: 22px;
    box-shadow: 0 12px 34px rgba(29, 29, 27, .06);
}
.tunnel-recap-title { font-family: var(--font-display); font-size: 20px; margin: 0 0 14px; }
.tunnel-recap-meta { display: flex; flex-direction: column; gap: 5px; font-size: 13px; color: var(--ink-soft); padding-bottom: 14px; border-bottom: 1px solid var(--line); margin-bottom: 14px; }
.tunnel-recap-lignes { display: flex; flex-direction: column; gap: 8px; margin-bottom: 14px; }
.trl-row { display: flex; justify-content: space-between; gap: 10px; font-size: 13.5px; }
.trl-row .trl-qte { color: var(--ink-faint); font-weight: 700; }
.tunnel-recap-totaux { border-top: 1px solid var(--line); padding-top: 12px; display: flex; flex-direction: column; gap: 7px; }
.trt-row { display: flex; justify-content: space-between; font-size: 13.5px; color: var(--ink-soft); }
.trt-row.trt-remise { color: var(--green); font-weight: 700; }
.trt-row.trt-total { margin-top: 5px; padding-top: 10px; border-top: 1px solid var(--line); font-family: var(--font-display); font-size: 19px; color: var(--ink); }

/* Barre de navigation basse */
.tunnel-foot {
    position: fixed;
    bottom: 0; left: 0; right: 0;
    z-index: 20;
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 22px;
    background: rgba(252, 250, 245, .95);
    backdrop-filter: blur(8px);
    border-top: 1px solid var(--line);
}
.tunnel-foot .btn-foud { min-width: 130px; }
.tunnel-foot #tunnel-next { margin-left: auto; }

@media (max-width: 860px) {
    .tunnel-main { flex-direction: column; padding: 22px 16px 110px; }
    .tunnel-content { max-width: none; width: 100%; }
    .tunnel-recap { position: static; width: 100%; margin-top: 8px; }
    .tp-label { display: none; }
    .tunnel-progress-item:not(:last-child)::after { width: 18px; margin: 0 8px; }
}

/* ===================================================================
   Page de paiement Stripe (Checkout embarqué)
   =================================================================== */
.paiement-page {
    max-width: 640px;
    margin: 0 auto;
    padding: 30px 20px 60px;
}
.paiement-head { text-align: center; margin-bottom: 24px; }
.paiement-head h1 { margin: 0 0 8px; font-size: clamp(24px, 4vw, 32px); }
.paiement-head p { margin: 0; color: var(--ink-soft); font-size: 15px; }
.stripe-checkout {
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 16px;
    padding: 8px;
    box-shadow: 0 12px 34px rgba(29, 29, 27, .06);
}
.paiement-secure {
    text-align: center;
    margin-top: 16px;
    font-size: 12.5px;
    color: var(--ink-faint);
}

/* Confirmation : état paiement en attente */
.confirmation-check--pending { background: var(--amber, #D58200); }
.confirmation-pending-msg {
    margin: 8px auto 0 !important;
    max-width: 420px;
    font-size: 13.5px;
    color: var(--ink-soft) !important;
}

/* ===================================================================
   Overlay de chargement plein écran (préparation du paiement…)
   =================================================================== */
.foud-loader {
    position: fixed;
    inset: 0;
    z-index: 3000;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(252, 250, 245, .72);
    backdrop-filter: blur(3px);
    animation: foud-loader-in .2s ease;
}
.foud-loader[hidden] { display: none; }

.foud-loader-box {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
    padding: 30px 34px;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 18px;
    box-shadow: 0 18px 44px rgba(29, 29, 27, .14);
}

.foud-loader-spin {
    width: 42px;
    height: 42px;
    border-radius: 50%;
    border: 4px solid rgba(203, 34, 55, .18);
    border-top-color: var(--red);
    animation: foud-spin .8s linear infinite;
}

.foud-loader-msg {
    font-weight: 700;
    font-size: 14.5px;
    color: var(--ink);
}

@keyframes foud-spin { to { transform: rotate(360deg); } }
@keyframes foud-loader-in { from { opacity: 0; } to { opacity: 1; } }

@media (prefers-reduced-motion: reduce) {
    .foud-loader-spin { animation-duration: 1.6s; }
    .foud-loader { animation: none; }
}

/* ===================================================================
   Étape 1 · Bouton compte / connexion en haut de la page de démarrage
   =================================================================== */
.start-topbar {
    position: relative;
    z-index: 2;
    display: flex;
    justify-content: flex-end;
    padding: 20px 24px 0;
}

.start-topbar .dropdown-menu {
    z-index: 5;
}

@media (max-width: 575.98px) {
    .start-topbar {
        padding: 14px 16px 0;
        justify-content: center;
    }
}

/* ===================================================================
   Étape 1 · Dates à délai trop court + modale « commande urgente »
   =================================================================== */

/* Jours grisés mais cliquables : ils ouvrent la modale urgence. */
.flatpickr-day.jour-urgence {
    color: var(--ink-faint, #9a9a94);
    background: repeating-linear-gradient(
        135deg,
        rgba(29, 29, 27, .05),
        rgba(29, 29, 27, .05) 4px,
        transparent 4px,
        transparent 8px
    );
    border-color: transparent;
    cursor: pointer;
}

.flatpickr-day.jour-urgence:hover {
    color: var(--ink, #1D1D1B);
    background: rgba(29, 29, 27, .1);
}

/* Modale « délai trop court ». */
.urgence {
    padding: 38px 32px 30px;
    text-align: center;
}

/* Icône au-dessus de l'accroche « Trop pressé ? », le tout centré. */
.urgence-head {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
}

.urgence-ico {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 58px;
    height: 58px;
    font-size: 28px;
    border-radius: 50%;
    background: rgba(29, 29, 27, .06);
}

.urgence h3 {
    font-family: var(--font-display);
    font-size: 30px;
    text-transform: uppercase;
    margin: 4px 0 14px;
}

.urgence-desc {
    font-size: 14.5px;
    line-height: 1.6;
    color: var(--ink-soft, #55554f);
    margin: 0 auto 12px;
    max-width: 420px;
}

.urgence-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 12px;
    margin-top: 24px;
}

@media (max-width: 575.98px) {
    .urgence { padding: 32px 20px 24px; }
    .urgence-actions .btn-foud { width: 100%; }
}

/* ===================================================================
   Sélecteurs de quantité (cartes produit + lignes du panier)
   =================================================================== */

/* --- Cartes produit --- */
.card-actions {
    display: flex;
    align-items: center;
    gap: 8px;
}

.qty-stepper--card {
    border-color: var(--red);
    border-radius: 9px;
}
.qty-stepper--card button {
    width: 30px;
    height: 34px;
    color: var(--red);
    font-weight: 700;
}
.qty-stepper--card .qty-val {
    min-width: 26px;
    font-size: 14px;
}

/* Pastille « déjà au panier » sur la vignette produit */
.card-panier-tag {
    position: absolute;
    bottom: 10px;
    left: 10px;
    z-index: 2;
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: .04em;
    color: #fff;
    background: var(--red);
    padding: 4px 9px;
    border-radius: 999px;
    box-shadow: 0 6px 14px -6px rgba(29, 29, 27, .5);
}

.card-foud--au-panier {
    border-color: var(--red);
}

/* --- Lignes du panier --- */
.qty-stepper--cart {
    margin-top: 6px;
    border-radius: 8px;
}
.qty-stepper--cart button {
    width: 26px;
    height: 26px;
    font-size: 14px;
    line-height: 1;
    color: var(--ink);
}
.qty-stepper--cart .qty-val {
    min-width: 26px;
    font-size: 12.5px;
}

/* Modale produit : rappel de la quantité déjà présente au panier */
.pm-foot { flex-wrap: wrap; }

.pm-panier-note {
    width: 100%;
    margin: 10px 0 0;
    font-size: 12px;
    font-weight: 700;
    color: var(--red);
}

.qty-stepper button:disabled {
    color: var(--ink-faint);
    cursor: not-allowed;
}

/* ===================================================================
   Catalogue · Prix remisé (remise compte client) : prix barré + net
   =================================================================== */
.price--remise {
    display: flex;
    align-items: baseline;
    gap: 8px;
    flex-wrap: wrap;
}

.prix-barre {
    font-family: var(--font-body);
    font-size: 14px;
    font-weight: 700;
    color: var(--ink-faint);
    text-decoration: line-through;
}

.prix-remise {
    color: var(--red, #CB2237);
}

.pm-price .prix-barre { margin-right: 8px; }
.pm-price .prix-remise { color: var(--red, #CB2237); }

.pm-spec--remise {
    background: rgba(203, 34, 55, .08);
    border-color: rgba(203, 34, 55, .25);
}
.pm-spec--remise .v { color: var(--red, #CB2237); }

/* ---------- Opt-in CGV (modale d'inscription) ---------- */
.auth-optin {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin: 4px 0 14px;
    font-size: 13px;
    line-height: 1.45;
    color: var(--ink-soft);
    cursor: pointer;
}

.auth-optin input[type="checkbox"] {
    flex: 0 0 auto;
    width: 17px;
    height: 17px;
    margin-top: 1px;
    accent-color: var(--accent);
    cursor: pointer;
}

.auth-optin a {
    color: var(--accent);
    font-weight: 700;
    text-decoration: underline;
}

/* ---------- Pied de page public ---------- */
.site-foot {
    margin-top: auto;
    border-top: 1px solid var(--line);
    background: var(--surface);
}

.site-foot-inner {
    max-width: 1180px;
    margin: 0 auto;
    padding: 20px 26px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
}

.site-foot-copy {
    margin: 0;
    font-size: 12px;
    color: var(--ink-faint);
}

.site-foot-links {
    display: flex;
    align-items: center;
    gap: 22px;
    flex-wrap: wrap;
}

.site-foot-links a {
    font-size: 12px;
    font-weight: 700;
    color: var(--ink-soft);
    text-decoration: none;
}

.site-foot-links a:hover {
    color: var(--accent);
    text-decoration: underline;
}

/* ---------- Pages légales (CGV / mentions légales) ---------- */
.legal-wrap {
    flex: 1;
    padding: 34px 22px 60px;
}

.legal-card {
    width: min(880px, 100%);
    margin: 0 auto;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow);
    padding: 44px clamp(22px, 5vw, 56px) 48px;
}

.legal-head {
    text-align: center;
    padding-bottom: 26px;
    margin-bottom: 10px;
    border-bottom: 1px solid var(--line);
}

.legal-head .script {
    display: block;
    font-size: 24px;
    color: var(--accent);
    line-height: 1;
    margin-bottom: 6px;
}

.legal-head h1 { margin: 0; font-size: clamp(28px, 5vw, 40px); }

.legal-sub {
    margin: 12px 0 0;
    color: var(--ink-soft);
    font-size: 15px;
}

.legal-section { margin-top: 30px; }

.legal-section h2 {
    font-size: 19px;
    margin: 0 0 12px;
    padding-bottom: 8px;
    border-bottom: 2px solid var(--accent);
    display: inline-block;
}

.legal-section h3 {
    font-size: 15px;
    margin: 22px 0 8px;
}

.legal-section h4 {
    font-size: 14px;
    margin: 18px 0 8px;
    color: var(--ink-soft);
}

.legal-section p,
.legal-section li {
    font-size: 14px;
    line-height: 1.65;
    color: var(--ink-soft);
}

.legal-section p { margin: 0 0 10px; }

.legal-section ul {
    margin: 0 0 12px;
    padding-left: 20px;
}

.legal-section li { margin-bottom: 5px; }

.legal-section a { color: var(--accent); }

.legal-defs { margin: 0; }
.legal-defs dt {
    font-weight: 700;
    font-size: 14px;
    margin-top: 12px;
}
.legal-defs dd {
    margin: 3px 0 0;
    font-size: 14px;
    line-height: 1.65;
    color: var(--ink-soft);
}

/* Colle le pied de page en bas : le contenu occupe la hauteur restante. */
body:not(.admin-body) {
    height: auto;
    min-height: 100%;
    display: flex;
    flex-direction: column;
}

body > .app,
body > .start,
body > .tunnel {
    flex: 1 0 auto;
    min-height: 0;
}

.site-foot { flex: 0 0 auto; }

/* ---------- Badge produit catalogue (au-dessus de la photo) ---------- */
.card-badge { z-index: 5; }

/* ===================================================================
   Produits à composer — carte, modale composer, lignes de panier
   =================================================================== */

/* Bouton « Composer » sur la carte produit */
.add-btn--composer {
    width: auto;
    padding: 0 14px;
    height: 34px;
    font-size: 13px;
    font-weight: 700;
    white-space: nowrap;
}

/* --- Modale composer --- */
.cp-wrap { padding: 28px 30px 0; }
.cp-head { text-align: center; margin-bottom: 18px; }
.cp-eyebrow { font-size: 20px; color: var(--accent, #cb2237); display: block; }
.cp-head h3 { margin: 2px 0 4px; font-size: 26px; font-weight: 800; }
.cp-base-info { color: var(--ink-soft, #6b6b69); font-size: 13px; margin: 0; }

.cp-nom-field { display: block; margin-bottom: 20px; }
.cp-nom-field > span { display: block; font-size: 13px; font-weight: 700; margin-bottom: 6px; }
.cp-nom-field b { color: var(--red, #cb2237); }

.cp-section {
    border-top: 1px solid var(--line, #e3e0d9);
    padding: 16px 0;
}
.cp-section-head {
    display: flex;
    align-items: baseline;
    gap: 10px;
    margin-bottom: 10px;
}
.cp-section-head h4 { margin: 0; font-size: 16px; }
.cp-section-mm {
    font-size: 11.5px;
    font-weight: 700;
    color: var(--ink-faint, #9a9a97);
    text-transform: uppercase;
    letter-spacing: .04em;
}
.cp-search {
    width: 100%;
    padding: 9px 12px;
    border: 1.5px solid var(--line-strong, #d8d4cc);
    border-radius: 10px;
    margin-bottom: 10px;
}
.cp-items {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
    gap: 8px;
}
.cp-item {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 10px;
    border: 1.5px solid var(--line, #e3e0d9);
    border-radius: 12px;
    background: #fff;
    cursor: pointer;
    text-align: left;
    transition: border-color .12s, background .12s;
}
.cp-item:hover { border-color: var(--ink-faint, #9a9a97); }
.cp-item.is-selected {
    border-color: var(--red, #cb2237);
    background: #fff5f5;
}
.cp-item-media {
    width: 40px; height: 40px;
    flex: none;
    display: grid; place-items: center;
    border-radius: 9px;
    background: rgba(29, 29, 27, .05);
    overflow: hidden;
}
.cp-item-media img { width: 100%; height: 100%; object-fit: contain; }
.cp-item-nom { flex: 1; font-size: 13px; font-weight: 600; line-height: 1.15; }
.cp-item-bonus { font-size: 11.5px; font-weight: 700; color: var(--accent, #cb2237); }
.cp-item-check {
    flex: none;
    width: 22px; height: 22px;
    display: grid; place-items: center;
    border-radius: 50%;
    background: var(--cream, #faf8f4);
    font-weight: 700;
}
.cp-item.is-selected .cp-item-check { background: var(--red, #cb2237); color: #fff; }
.cp-empty { color: var(--ink-faint, #9a9a97); font-size: 13px; padding: 8px 2px; }

.cp-foot {
    position: sticky;
    bottom: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
    margin: 10px -30px 0;
    padding: 16px 30px;
    background: var(--surface, #fff);
    border-top: 1px solid var(--line, #e3e0d9);
    border-radius: 0 0 var(--radius-lg, 18px) var(--radius-lg, 18px);
}
.cp-foot-lbl { display: block; font-size: 11px; text-transform: uppercase; letter-spacing: .05em; color: var(--ink-faint, #9a9a97); }
.cp-foot-val { font-family: var(--font-display, serif); font-size: 24px; }
.cp-foot-actions { display: flex; align-items: center; gap: 12px; }

/* --- Ligne de panier composée --- */
.ci-tag-compose {
    font-size: 10.5px;
    font-weight: 700;
    color: var(--accent, #cb2237);
    white-space: nowrap;
}
.ci-compo {
    list-style: none;
    margin: 6px 0 2px;
    padding: 8px 10px;
    background: var(--cream, #faf8f4);
    border-radius: 8px;
    font-size: 11.5px;
    line-height: 1.5;
}
.ci-compo li { color: var(--ink-soft, #4b4b49); }
.ci-bonus { color: var(--accent, #cb2237); font-weight: 700; }
.ci-editer {
    border: none;
    background: none;
    padding: 2px 0;
    margin-bottom: 4px;
    color: var(--red, #cb2237);
    font-size: 11.5px;
    font-weight: 700;
    cursor: pointer;
    text-decoration: underline;
}

@media (max-width: 575.98px) {
    .cp-wrap { padding: 22px 18px 0; }
    .cp-foot { margin: 10px -18px 0; padding: 14px 18px; }
    .cp-items { grid-template-columns: 1fr; }
}

/* Composition d'une ligne de commande (récap tunnel, confirmation, mes commandes) */
.cl-compo, .trl-compo {
    list-style: none;
    margin: 2px 0 8px;
    padding: 6px 10px;
    background: var(--cream, #faf8f4);
    border-radius: 8px;
    font-size: 11.5px;
    line-height: 1.5;
    color: var(--ink-soft, #4b4b49);
}
.cl-compo li, .trl-compo li { margin: 0; }
.cl-bonus { color: var(--accent, #cb2237); font-weight: 700; }
.cl-pack { display: block; font-size: 10.5px; color: var(--accent, #cb2237); font-weight: 700; }

/* ===================================================================
   Composer un plateau — navigation 2 niveaux (sections → sélection)
   =================================================================== */

/* Vue principale : cartes de section */
.cp-sec {
    padding: 14px 0;
    border-top: 1px solid var(--line, #e3e0d9);
}
.cp-sec:first-child { border-top: none; }
.cp-sec-top {
    display: flex;
    align-items: baseline;
    gap: 10px;
    margin-bottom: 10px;
}
.cp-sec-top h4 { margin: 0; font-size: 16px; }
.cp-sec-flag {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--ink-faint, #9a9a97);
}
.cp-sec-flag.is-required { color: var(--accent, #cb2237); }

/* Bouton pointillé arrondi « + Choisir mon … » */
.cp-sec-add {
    display: flex;
    align-items: center;
    gap: 12px;
    width: 100%;
    padding: 16px 18px;
    border: 2px dashed var(--line-strong, #d8d4cc);
    border-radius: 16px;
    background: transparent;
    cursor: pointer;
    font-size: 14.5px;
    font-weight: 700;
    color: var(--ink-soft, #4b4b49);
    transition: border-color .15s, background .15s, color .15s;
}
.cp-sec-add:hover {
    border-color: var(--red, #cb2237);
    color: var(--red, #cb2237);
    background: #fff5f5;
}
.cp-sec-add-plus {
    flex: none;
    width: 34px; height: 34px;
    display: grid; place-items: center;
    border-radius: 50%;
    background: var(--red, #cb2237);
    color: #fff;
    font-size: 22px;
    line-height: 1;
}

/* Carte du produit déjà choisi */
.cp-sec-choice {
    display: flex;
    align-items: center;
    gap: 12px;
    width: 100%;
    padding: 12px 14px;
    border: 1.5px solid var(--red, #cb2237);
    border-radius: 16px;
    background: #fff5f5;
    cursor: pointer;
    text-align: left;
}
.cp-sec-choice-nom { flex: 1; font-weight: 700; font-size: 14px; }
.cp-sec-change {
    flex: none;
    font-size: 12px;
    font-weight: 700;
    color: var(--red, #cb2237);
    text-decoration: underline;
}
.cp-sec-clear {
    display: block;
    margin: 8px 0 0;
    border: none;
    background: none;
    padding: 0;
    color: var(--ink-faint, #9a9a97);
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
    text-decoration: underline;
}
.cp-sec-clear:hover { color: var(--red, #cb2237); }

/* Écran de sélection (drill-down) */
.cp-picker { padding: 4px 0 28px; }
.cp-picker-head {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 14px;
}
.cp-back {
    flex: none;
    width: 40px; height: 40px;
    display: grid; place-items: center;
    border: 1.5px solid var(--line-strong, #d8d4cc);
    border-radius: 50%;
    background: #fff;
    cursor: pointer;
    font-size: 18px;
    transition: border-color .15s, background .15s;
}
.cp-back:hover { border-color: var(--ink, #1d1d1b); background: var(--cream, #faf8f4); }
.cp-picker-head h3 { margin: 0; font-size: 20px; font-weight: 800; }
.cp-picker-items {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
    gap: 8px;
    margin-top: 10px;
    max-height: 52vh;
    overflow-y: auto;
}

@media (max-width: 575.98px) {
    .cp-picker-items { grid-template-columns: 1fr; }
}

/* ===================================================================
   Catalogue · Produits du menu écartés par leur délai de préparation
   =================================================================== */

/* Pastille « Dispo en J+X » : ton informatif (ambre) plutôt que « indispo ». */
.card-indispo-tag--delai {
    background: #B8860B;
    color: #fff;
}

/* Note explicative sous le titre d'un produit grisé pour cause de délai. */
.card-delai-info {
    margin: 6px 0 2px;
    padding: 8px 10px;
    font-size: 12px;
    line-height: 1.4;
    font-weight: 600;
    color: #7a5c00;
    background: rgba(184, 134, 11, .12);
    border: 1px solid rgba(184, 134, 11, .28);
    border-radius: 10px;
}

/* Un produit écarté seulement par le délai reste lisible (texte non estompé). */
.card-foud--indispo .card-delai-info { opacity: 1; }
