/**
 * CML Camp Booking — thème alpin premium (Swiss Explorers Camp).
 * Palette : #0C1A12 vert nuit / #C9A24B or / #E3CC8F champagne / #F2EEE1 crème.
 * Polices : Playfair Display (titres) + Jost (texte).
 */
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,500;0,600;1,400;1,500&family=Jost:wght@200;300;400;500;600&display=swap');

.cml-camp-booking-wrapper {
    --cml-bg:#0C1A12; --cml-bg2:#102417; --cml-green:#15351F;
    --cml-cream:#F2EEE1; --cml-gold:#C9A24B; --cml-champ:#E3CC8F;
    --cml-moss:#7FA06B; --cml-glass:rgba(255,255,255,.055);
    --cml-line:rgba(227,204,143,.18); --cml-gray:#A7AD9C;
    --cml-error:#E0857A; --cml-success:#9BBE84;

    font-family:'Jost',sans-serif; font-weight:300; line-height:1.7;
    color:var(--cml-cream); max-width:760px; margin:0 auto;
    background:var(--cml-bg2); border:1px solid var(--cml-line);
    border-radius:18px; padding:44px 42px;
    -webkit-font-smoothing:antialiased;
}

.cml-camp-booking-wrapper h2,
.cml-camp-booking-wrapper h3,
.cml-camp-booking-wrapper h4 { font-family:'Playfair Display',serif; font-weight:500; line-height:1.15; color:var(--cml-cream); }

.cml-camp-form-title { font-size:2rem; margin-bottom:6px; }
.cml-camp-step-title { font-size:1.75rem; margin-bottom:6px; }
.cml-camp-step-intro { color:var(--cml-gray); font-size:.95rem; margin-bottom:26px; }
.cml-camp-subhead { font-size:1.15rem; color:var(--cml-champ); margin:30px 0 14px; padding-top:18px; border-top:1px solid var(--cml-line); }

/* ---------- BARRE DE PROGRESSION ---------- */
.cml-camp-progress { list-style:none; display:flex; gap:8px; margin:0 0 34px; padding:0; }
.cml-camp-progress-step { flex:1; display:flex; flex-direction:column; align-items:center; gap:7px; position:relative; opacity:.45; transition:opacity .3s; }
.cml-camp-progress-step.is-active, .cml-camp-progress-step.is-done { opacity:1; }
.cml-camp-progress-num {
    width:34px; height:34px; border-radius:50%; display:flex; align-items:center; justify-content:center;
    border:1px solid var(--cml-line); color:var(--cml-champ); font-size:.9rem; background:transparent; transition:all .3s;
}
.cml-camp-progress-step.is-active .cml-camp-progress-num { background:var(--cml-gold); color:var(--cml-bg); border-color:var(--cml-gold); }
.cml-camp-progress-step.is-done .cml-camp-progress-num { border-color:var(--cml-gold); color:var(--cml-gold); }
.cml-camp-progress-label { font-size:.7rem; letter-spacing:.12em; text-transform:uppercase; color:var(--cml-gray); }
.cml-camp-progress-step.is-active .cml-camp-progress-label { color:var(--cml-champ); }

/* ---------- ÉTAPES ---------- */
.cml-camp-step-content { display:none; }
.cml-camp-step-content.cml-camp-step-content-active { display:block; animation:cmlFade .35s ease; }
@keyframes cmlFade { from{opacity:0;transform:translateY(8px);} to{opacity:1;transform:translateY(0);} }

/* ---------- CHAMPS ---------- */
.cml-camp-field { margin-bottom:16px; }
.cml-camp-field label {
    display:block; font-size:.74rem; letter-spacing:.1em; text-transform:uppercase;
    color:var(--cml-champ); margin-bottom:7px; font-weight:500;
}
.cml-camp-field label.cml-camp-checkbox,
.cml-camp-consent label {
    font-size:.88rem; letter-spacing:0; text-transform:none; color:var(--cml-gray);
    font-weight:300; display:flex; align-items:flex-start; gap:9px; cursor:pointer; line-height:1.5;
}
.cml-camp-booking-wrapper input[type=text],
.cml-camp-booking-wrapper input[type=email],
.cml-camp-booking-wrapper input[type=tel],
.cml-camp-booking-wrapper input[type=date],
.cml-camp-booking-wrapper input[type=number],
.cml-camp-booking-wrapper select,
.cml-camp-booking-wrapper textarea {
    width:100%; box-sizing:border-box; background:rgba(255,255,255,.04);
    border:1px solid var(--cml-line); border-radius:9px; padding:13px 16px;
    color:var(--cml-cream); font-family:'Jost',sans-serif; font-size:.98rem; font-weight:300;
    transition:border-color .3s, background .3s;
}
.cml-camp-booking-wrapper input:focus,
.cml-camp-booking-wrapper select:focus,
.cml-camp-booking-wrapper textarea:focus {
    outline:none; border-color:var(--cml-gold); background:rgba(255,255,255,.07);
}
.cml-camp-booking-wrapper input::placeholder,
.cml-camp-booking-wrapper textarea::placeholder { color:rgba(167,173,156,.55); }
.cml-camp-booking-wrapper select option { background:var(--cml-bg2); color:var(--cml-cream); }
.cml-camp-booking-wrapper textarea { min-height:90px; resize:vertical; }
.cml-camp-booking-wrapper input[type=checkbox],
.cml-camp-booking-wrapper input[type=radio] { accent-color:var(--cml-gold); width:auto; margin-top:3px; flex-shrink:0; }
.cml-camp-field-error { border-color:var(--cml-error)!important; box-shadow:0 0 0 3px rgba(224,133,122,.15)!important; }

.cml-camp-grid { display:grid; grid-template-columns:1fr 1fr; gap:0 18px; }
.cml-camp-grid .cml-camp-field-full { grid-column:1 / -1; }
@media(max-width:560px){ .cml-camp-grid{ grid-template-columns:1fr; } .cml-camp-booking-wrapper{ padding:30px 22px; } }

/* ---------- CARTES ENFANTS (accordéon) ---------- */
.cml-camp-participant { border:1px solid var(--cml-line); border-radius:12px; margin-bottom:14px; overflow:hidden; background:rgba(255,255,255,.02); }
.cml-camp-participant-head {
    display:flex; justify-content:space-between; align-items:center;
    padding:16px 20px; cursor:pointer; user-select:none;
}
.cml-camp-participant-num { font-family:'Playfair Display',serif; font-size:1.05rem; color:var(--cml-champ); }
.cml-camp-participant-name { color:var(--cml-gray); font-family:'Jost'; font-size:.92rem; font-style:italic; }
.cml-camp-participant-chevron { display:inline-block; transition:transform .3s; font-size:.7rem; color:var(--cml-gold); }
.cml-camp-participant-open .cml-camp-participant-chevron { transform:rotate(0deg); }
.cml-camp-participant:not(.cml-camp-participant-open) .cml-camp-participant-chevron { transform:rotate(-90deg); }
.cml-camp-participant-body { padding:0 20px 18px; }
.cml-camp-participant:not(.cml-camp-participant-open) .cml-camp-participant-body { display:none; }
.cml-camp-remove-participant {
    background:none; border:none; color:var(--cml-error); cursor:pointer;
    font-family:'Jost'; font-size:.78rem; text-transform:uppercase; letter-spacing:.08em;
}

/* ---------- BOUTONS ---------- */
.cml-camp-btn {
    display:inline-block; border:none; border-radius:9px; cursor:pointer;
    font-family:'Jost',sans-serif; font-weight:500; font-size:.82rem;
    letter-spacing:.06em; text-transform:uppercase; padding:15px 36px;
    transition:transform .3s, box-shadow .3s, background .3s;
}
.cml-camp-btn:active { transform:translateY(1px); }
.cml-camp-btn-primary { background:var(--cml-gold); color:var(--cml-bg); }
.cml-camp-btn-primary:hover { transform:translateY(-2px); box-shadow:0 14px 34px rgba(201,162,75,.3); }
.cml-camp-btn-secondary { background:transparent; color:var(--cml-champ); border:1px solid var(--cml-line); }
.cml-camp-btn-secondary:hover { border-color:var(--cml-gold); color:var(--cml-gold); }
.cml-camp-btn-ghost { background:transparent; color:var(--cml-gray); border:1px solid var(--cml-line); }
.cml-camp-btn-ghost:hover { color:var(--cml-cream); border-color:var(--cml-champ); }
.cml-camp-btn:disabled { opacity:.5; cursor:not-allowed; }
.cml-camp-actions { display:flex; gap:12px; margin-top:30px; flex-wrap:wrap; align-items:center; }
.cml-camp-actions .cml-camp-prev { margin-right:auto; }
.cml-camp-add-participant { margin-top:6px; }

/* ---------- MODE DE PAIEMENT ---------- */
.cml-camp-payment-mode { display:flex; flex-direction:column; gap:10px; margin:20px 0; }
.cml-camp-payment-mode label {
    display:flex; align-items:center; gap:11px; padding:14px 16px;
    border:1px solid var(--cml-line); border-radius:9px; cursor:pointer;
    font-weight:400; color:var(--cml-cream); text-transform:none; letter-spacing:0; font-size:.95rem;
}
.cml-camp-deposit-amount { color:var(--cml-gray); }

/* ---------- RÉCAPITULATIF ---------- */
.cml-camp-summary-table { width:100%; border-collapse:collapse; margin:6px 0; }
.cml-camp-summary-table td { padding:11px 0; border-bottom:1px solid var(--cml-line); }
.cml-camp-summary-table td:last-child { text-align:right; font-variant-numeric:tabular-nums; color:var(--cml-cream); }
.cml-camp-summary-discount td { color:var(--cml-success); }
.cml-camp-summary-total td {
    font-family:'Playfair Display',serif; font-style:italic; font-size:1.5rem;
    color:var(--cml-champ); border-bottom:none; padding-top:14px;
}

/* ---------- MESSAGES ---------- */
.cml-camp-form-messages { margin-top:18px; }
.cml-camp-message { padding:13px 18px; border-radius:9px; font-size:.9rem; margin-bottom:10px; }
.cml-camp-message-error { background:rgba(224,133,122,.1); color:var(--cml-error); border:1px solid rgba(224,133,122,.3); }
.cml-camp-message-error ul { margin:0; padding-left:18px; }

/* ---------- REDIRECTION / SPINNER ---------- */
.cml-camp-redirect-notice { text-align:center; padding:44px 20px; }
.cml-camp-spinner {
    width:38px; height:38px; margin:18px auto 0; border:3px solid var(--cml-line);
    border-top-color:var(--cml-gold); border-radius:50%; animation:cmlSpin .8s linear infinite;
}
@keyframes cmlSpin { to{ transform:rotate(360deg); } }
.cml-camp-success-icon {
    width:66px; height:66px; line-height:66px; margin:0 auto 18px; border-radius:50%;
    background:var(--cml-gold); color:var(--cml-bg); font-size:34px; text-align:center;
}
.cml-camp-step-success { text-align:center; padding:44px 24px; }

/* ---------- AUCUN CAMP ---------- */
.cml-camp-no-camps { text-align:center; padding:44px 20px; color:var(--cml-gray); }

/* ---------- MODALE DE CONFIRMATION (paiement) ---------- */
body.cml-camp-modal-open { overflow:hidden; }
.cml-camp-modal-overlay {
    position:fixed; inset:0; z-index:99999;
    background:rgba(6,14,9,.78); backdrop-filter:blur(4px);
    display:flex; align-items:center; justify-content:center; padding:24px;
    animation:cmlModalFade .25s ease;
}
@keyframes cmlModalFade { from{opacity:0;} to{opacity:1;} }
.cml-camp-modal {
    position:relative; width:100%; max-width:460px;
    background:#102417; border:1px solid rgba(227,204,143,.25); border-radius:16px;
    padding:38px 36px; color:#F2EEE1; font-family:'Jost',sans-serif;
    box-shadow:0 30px 80px rgba(0,0,0,.5);
    animation:cmlModalUp .3s cubic-bezier(.16,.84,.3,1);
}
@keyframes cmlModalUp { from{opacity:0;transform:translateY(20px);} to{opacity:1;transform:translateY(0);} }
.cml-camp-modal-close {
    position:absolute; top:16px; right:18px; background:none; border:none;
    color:#A7AD9C; font-size:1.6rem; line-height:1; cursor:pointer; transition:color .2s;
}
.cml-camp-modal-close:hover { color:#C9A24B; }
.cml-camp-modal-title { font-family:'Playfair Display',serif; font-size:1.5rem; color:#F2EEE1; margin-bottom:22px; }
.cml-camp-modal-recap { width:100%; border-collapse:collapse; margin-bottom:18px; }
.cml-camp-modal-recap td { padding:10px 0; border-bottom:1px solid rgba(227,204,143,.15); font-size:.92rem; }
.cml-camp-modal-recap td:first-child { color:#A7AD9C; text-transform:uppercase; font-size:.72rem; letter-spacing:.1em; }
.cml-camp-modal-recap td:last-child { text-align:right; color:#F2EEE1; }
.cml-camp-modal-amount { font-family:'Playfair Display',serif!important; font-style:italic; font-size:1.3rem; color:#E3CC8F!important; }
.cml-camp-modal-note { font-size:.82rem; color:#A7AD9C; margin-bottom:24px; line-height:1.5; }
.cml-camp-modal-actions { display:flex; gap:12px; }
.cml-camp-modal-actions .cml-camp-btn { flex:1; padding:14px 18px; }
@media(max-width:480px){ .cml-camp-modal{ padding:30px 24px; } .cml-camp-modal-actions{ flex-direction:column; } }

/* ---------- CATALOGUE DATES & PRIX ---------- */
.cml-camp-catalog {
    --cml-bg2:#102417; --cml-cream:#F2EEE1; --cml-gold:#C9A24B; --cml-champ:#E3CC8F;
    --cml-line:rgba(227,204,143,.18); --cml-gray:#A7AD9C;
    font-family:'Jost',sans-serif; color:var(--cml-cream);
    display:grid; gap:28px; max-width:1000px; margin:0 auto;
}
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,500;1,500&family=Jost:wght@300;400;500&display=swap');
.cml-camp-cat-card {
    display:grid; grid-template-columns:280px 1fr; background:var(--cml-bg2);
    border:1px solid var(--cml-line); border-radius:16px; overflow:hidden;
}
.cml-camp-cat-photo { background-size:cover; background-position:center; min-height:240px; }
.cml-camp-cat-body { padding:30px 32px; }
.cml-camp-cat-name { font-family:'Playfair Display',serif; font-weight:500; font-size:1.6rem; color:var(--cml-cream); margin:0 0 4px; line-height:1.15; }
.cml-camp-cat-sub { color:var(--cml-gray); font-size:.95rem; margin:0 0 4px; }
.cml-camp-cat-age { color:var(--cml-champ); font-size:.8rem; text-transform:uppercase; letter-spacing:.1em; margin:0 0 18px; }
.cml-camp-cat-sessions { list-style:none; margin:0; padding:0; }
.cml-camp-cat-session {
    display:flex; align-items:center; justify-content:space-between; gap:20px;
    padding:14px 0; border-top:1px solid var(--cml-line);
}
.cml-camp-cat-session-info { min-width:0; flex:1; }
.cml-camp-cat-dates { display:block; font-size:1rem; color:var(--cml-cream); font-weight:400; }
.cml-camp-cat-meta { display:block; font-size:.85rem; color:var(--cml-gray); margin-top:2px; }
.cml-camp-cat-seats-low { color:var(--cml-gold); }
.cml-camp-cat-btn {
    flex-shrink:0; background:var(--cml-gold); color:#0C1A12; text-decoration:none;
    border-radius:8px; padding:11px 24px; font-family:'Jost',sans-serif; font-weight:500;
    font-size:.78rem; letter-spacing:.06em; text-transform:uppercase;
    transition:transform .3s, box-shadow .3s;
}
.cml-camp-cat-btn:hover { transform:translateY(-2px); box-shadow:0 12px 28px rgba(201,162,75,.3); color:#0C1A12; }
@media(max-width:680px){
    .cml-camp-cat-card{ grid-template-columns:1fr; }
    .cml-camp-cat-photo{ min-height:160px; }
    .cml-camp-cat-session{ flex-direction:column; align-items:flex-start; }
}
