/*
 * MILELE HOTEL - site public et espace client (kit « Site & Espace client ») : direction ivoire / bleu nuit / or.
 * Memes jetons que l'espace hotel (milele-hotel.css) ; prefixe .ms- ; aucune police ni ressource externe.
 */
.ms-site {
    --ms-navy: #101a30; --ms-gold: #b78313; --ms-gold-btn: #c99622; --ms-ivory: #f8f5ee; --ms-surface: #fff; --ms-text: #18243a; --ms-muted: #59677b;
    --ms-border: #e3ddd0; --ms-success: #126744; --ms-warning: #855300; --ms-danger: #a72d38; --ms-radius: 12px;
    margin: 0; background: var(--ms-ivory); color: var(--ms-text); font: 16px/1.55 system-ui, -apple-system, 'Segoe UI', sans-serif;
}
.ms-site *, .ms-site *::before, .ms-site *::after { box-sizing: border-box; }
.ms-site a { color: inherit; }
.ms-site :focus-visible { outline: 3px solid #3983cc; outline-offset: 3px; }
.ms-site img { max-width: 100%; display: block; }
.ms-skip { position: fixed; top: -100px; left: 16px; z-index: 50; background: #fff; padding: 10px 14px; }
.ms-skip:focus { top: 12px; }
.ms-serif { font-family: Georgia, 'Times New Roman', serif; font-weight: 400; letter-spacing: .2px; }
.ms-site h1, .ms-site h2, .ms-site h3 { font-family: Georgia, 'Times New Roman', serif; font-weight: 400; line-height: 1.2; margin: 0 0 12px; }
.ms-site h1 { font-size: clamp(30px, 4.5vw, 46px); }
.ms-site h2 { font-size: clamp(24px, 3vw, 30px); }
.ms-site h3 { font-size: 20px; }
.ms-muted { color: var(--ms-muted); }
.ms-eyebrow { text-transform: uppercase; letter-spacing: 3px; font-size: 12px; color: var(--ms-muted); }
.ms-wrap { max-width: 1200px; margin: 0 auto; padding: 0 20px; }

/* En-tete */
.ms-header { background: var(--ms-navy); color: #fff; position: sticky; top: 0; z-index: 20; }
.ms-header .ms-wrap { display: flex; align-items: center; gap: 20px; min-height: 68px; flex-wrap: wrap; }
.ms-brand { display: flex; flex-direction: column; text-decoration: none; line-height: 1.1; margin-right: auto; }
.ms-brand b { font-family: Georgia, serif; font-weight: 400; letter-spacing: 3px; text-transform: uppercase; font-size: 19px; }
.ms-brand small { font-size: 10px; letter-spacing: 3px; text-transform: uppercase; color: #d9cfb8; }
.ms-nav { display: flex; gap: 4px; flex-wrap: wrap; }
.ms-nav a { text-decoration: none; padding: 8px 12px; border-radius: 6px; font-size: 14px; color: #e9eef6; }
.ms-nav a:hover { background: #ffffff14; }
.ms-nav a[aria-current="page"] { color: #e6c569; }
.ms-lang { font-size: 13px; color: #c9d2e0; }
.ms-lang a { color: #fff; }
.ms-header .ms-menu-btn { display: none; }

/* Boutons et champs */
.ms-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; padding: 10px 20px; border-radius: 7px; border: 1px solid var(--ms-border);
    background: #fff; color: var(--ms-text); text-decoration: none; font: inherit; font-weight: 600; cursor: pointer; }
.ms-site .ms-btn-gold { background: var(--ms-gold-btn); border-color: var(--ms-gold-btn); color: #172036; }
.ms-site .ms-btn-gold:hover { background: var(--ms-gold); }
.ms-site .ms-btn-navy { background: var(--ms-navy); border-color: var(--ms-navy); color: #fff; }
.ms-site .ms-btn-ghost { background: transparent; color: #fff; border-color: #ffffff66; }
.ms-field { margin-bottom: 14px; }
.ms-field label { display: block; font-weight: 600; font-size: 14px; margin-bottom: 6px; }
.ms-input { width: 100%; min-height: 44px; border: 1px solid #b9b2a2; border-radius: 7px; padding: 10px 12px; background: #fff; color: var(--ms-text); font: inherit; }
.ms-input[aria-invalid="true"] { border-color: var(--ms-danger); }
.ms-error { color: var(--ms-danger); font-size: 13px; margin-top: 4px; }
.ms-hp { position: absolute; left: -9999px; }

/* Sections */
.ms-hero { position: relative; color: #fff; background: var(--ms-navy) center/cover no-repeat; min-height: 480px; display: flex; align-items: flex-end; }
.ms-hero::before { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, #101a30e0 0%, #101a3099 45%, #101a3033 100%); }
.ms-hero .ms-wrap { position: relative; width: 100%; padding-top: 70px; padding-bottom: 90px; }
.ms-hero p { max-width: 560px; font-size: 17px; color: #eef1f6; }
.ms-hero-sm { min-height: 260px; }
.ms-hero-sm .ms-wrap { padding-bottom: 40px; }
.ms-search { position: relative; margin: -46px auto 0; max-width: 1100px; background: #fff; border-radius: var(--ms-radius); box-shadow: 0 12px 30px #101a3022; padding: 16px;
    display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)) auto; gap: 12px; align-items: end; z-index: 2; }
.ms-search .ms-field { margin: 0; }
.ms-section { padding: 48px 0; }
.ms-section-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 16px; margin-bottom: 20px; flex-wrap: wrap; }
.ms-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.ms-card { background: #fff; border: 1px solid var(--ms-border); border-radius: var(--ms-radius); overflow: hidden; display: flex; flex-direction: column; }
.ms-card-body { padding: 18px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
.ms-card-media { aspect-ratio: 4/3; background: #e9e3d6 center/cover no-repeat; display: grid; place-items: center; color: var(--ms-muted); font-size: 13px; }
.ms-facts { display: flex; gap: 14px; flex-wrap: wrap; font-size: 13px; color: var(--ms-muted); margin: 0; padding: 0; list-style: none; }
.ms-price { margin-top: auto; font-size: 14px; }
.ms-price b { font-size: 20px; }
.ms-panel { background: #fff; border: 1px solid var(--ms-border); border-radius: var(--ms-radius); padding: 22px; }
.ms-two { display: grid; grid-template-columns: 1.6fr 1fr; gap: 24px; align-items: start; }
.ms-list { margin: 0; padding-left: 18px; }
.ms-alert { border-left: 4px solid var(--ms-gold); background: #fff8e8; padding: 12px 14px; border-radius: 8px; margin: 12px 0; }
.ms-alert-ok { border-left-color: var(--ms-success); background: #effaf4; }
.ms-alert-err { border-left-color: var(--ms-danger); background: #fff1f2; }
.ms-breadcrumb { font-size: 13px; color: #d9cfb8; margin-bottom: 8px; }
.ms-breadcrumb a { color: #fff; }


@media (max-width: 900px) {
    .ms-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .ms-two { grid-template-columns: 1fr; }
    .ms-search { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .ms-header .ms-menu-btn { display: inline-flex; }
    .ms-nav { display: none; width: 100%; flex-direction: column; padding-bottom: 12px; }
    .ms-header.ms-open .ms-nav { display: flex; }
}
@media (max-width: 600px) {
    .ms-grid, .ms-search { grid-template-columns: 1fr; }
    .ms-hero { min-height: 420px; }
}
@media (prefers-reduced-motion: reduce) { .ms-site * { transition: none !important; animation: none !important; } }
@media print { .ms-header, .ms-footer, .ms-search, .ms-btn { display: none; } .ms-site { background: #fff; } }
.ms-site .sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ---- Tunnel de reservation et pages de paiement (SITE-02) : memes classes que les vues existantes ---- */
.ms-booking main { max-width: 1200px; width: 100%; margin: 0 auto; padding: 28px 20px 48px; }
.ms-steps { display: flex; gap: 6px; list-style: none; margin: 0 0 22px; padding: 0; flex-wrap: wrap; counter-reset: step; }
.ms-steps li { display: flex; align-items: center; gap: 8px; font-size: 14px; color: var(--ms-muted); padding-right: 14px; }
.ms-steps li::before { counter-increment: step; content: counter(step); width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; border: 1px solid #b9b2a2;
    background: #fff; font-weight: 700; font-size: 13px; }
.ms-steps li.is-done::before { content: "\2713"; background: var(--ms-success); border-color: var(--ms-success); color: #fff; }
.ms-steps li[aria-current="step"] { color: var(--ms-text); font-weight: 700; }
.ms-steps li[aria-current="step"]::before { background: var(--ms-gold-btn); border-color: var(--ms-gold-btn); color: #172036; }
.ms-booking .card { background: #fff; border: 1px solid var(--ms-border); border-radius: var(--ms-radius); padding: 20px; margin-bottom: 18px; }
.ms-booking .grid { display: grid; gap: 14px; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); }
.ms-booking label { display: block; font-weight: 600; margin-bottom: 6px; font-size: 14px; }
.ms-booking input:not([type=checkbox]):not([type=radio]), .ms-booking select, .ms-booking textarea { width: 100%; min-height: 44px; padding: 10px 12px; border: 1px solid #b9b2a2;
    border-radius: 7px; font: inherit; background: #fff; color: var(--ms-text); }
.ms-booking [aria-invalid="true"] { border-color: var(--ms-danger) !important; }
.ms-booking button, .ms-booking .btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; background: var(--ms-gold-btn); color: #172036;
    border: 1px solid var(--ms-gold-btn); border-radius: 7px; padding: 10px 20px; font: inherit; font-weight: 700; cursor: pointer; text-decoration: none; }
.ms-booking button:hover, .ms-booking .btn:hover { background: var(--ms-gold); }
.ms-booking .btn-link { background: none; border: 0; color: var(--ms-text); text-decoration: underline; padding: 8px 0; min-height: 0; font-weight: 400; }
.ms-booking .offer { display: grid; grid-template-columns: 200px 1fr auto; gap: 18px; align-items: start; }
.ms-booking .offer-media { aspect-ratio: 4/3; border-radius: 10px; background: #e9e3d6 center/cover no-repeat; display: grid; place-items: center; color: var(--ms-muted); font-size: 13px; }
.ms-booking .offer h3 { margin: 0 0 4px; }
.ms-booking .price { font-size: 24px; font-weight: 700; font-family: Georgia, serif; }
.ms-booking .muted { color: var(--ms-muted); font-size: 14px; }
.ms-booking .alert { border-radius: 8px; padding: 12px 14px; margin-bottom: 16px; border-left: 4px solid var(--ms-gold); background: #fff8e8; }
.ms-booking .alert-err { border-left-color: var(--ms-danger); background: #fff1f2; color: #7c1d27; }
.ms-booking .alert-ok { border-left-color: var(--ms-success); background: #effaf4; color: #0d4a31; }
.ms-booking .alert-warn { color: #5c3d00; }
.ms-booking .badge { display: inline-block; background: #fff1d3; color: var(--ms-warning); border-radius: 999px; padding: 2px 10px; font-size: 12px; font-weight: 700; }
.ms-booking table { width: 100%; border-collapse: collapse; font-size: 14px; }
.ms-booking th, .ms-booking td { text-align: left; padding: 8px 4px; border-bottom: 1px solid var(--ms-border); }
.ms-booking td.r, .ms-booking th.r { text-align: right; }
.ms-booking .hp { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.ms-booking .terms { white-space: pre-line; max-height: 220px; overflow: auto; border: 1px solid var(--ms-border); border-radius: 8px; padding: 10px; background: #fbf9f4; }
.ms-booking .ms-split { display: grid; grid-template-columns: 1.5fr 1fr; gap: 20px; align-items: start; }
.ms-booking .ms-summary { position: sticky; top: 88px; }
.ms-booking .ms-total { display: flex; justify-content: space-between; font-weight: 700; font-size: 17px; padding-top: 10px; border-top: 2px solid var(--ms-border); margin-top: 8px; }
.ms-booking .ms-row { display: flex; justify-content: space-between; gap: 12px; padding: 6px 0; }
.ms-booking .ms-methods { display: flex; flex-wrap: wrap; gap: 10px; border: 0; padding: 0; margin: 0 0 14px; }
.ms-booking .ms-methods label { display: inline-flex; align-items: center; gap: 8px; font-weight: 500; border: 1px solid var(--ms-border); border-radius: 8px; padding: 10px 14px; background: #fff; margin: 0; }
.ms-booking .ms-check { display: flex; gap: 8px; align-items: flex-start; font-weight: 400; }
.ms-booking .ms-check input { margin-top: 4px; }
@media (max-width: 900px) { .ms-booking .ms-split { grid-template-columns: 1fr; } .ms-booking .ms-summary { position: static; } .ms-booking .offer { grid-template-columns: 1fr; } }

/* ---- Espace client (SITE-03) ---- */
.mc-shell { display: grid; grid-template-columns: 240px 1fr; min-height: 100vh; }
.mc-side { background: var(--ms-navy); color: #e9eef6; padding: 24px 14px; display: flex; flex-direction: column; gap: 4px; }
.mc-side .ms-brand { margin: 0 8px 18px; }
.mc-side a { color: #dbe3ef; text-decoration: none; padding: 10px 12px; border-radius: 8px; font-size: 14px; }
.mc-side a:hover { background: #ffffff12; }
.mc-side a[aria-current="page"] { background: #cfac3c30; border-left: 3px solid #e6c569; color: #fff; }
.mc-side form { margin-top: auto; }
.mc-side .ms-btn { width: 100%; }
.mc-main { padding: 28px; max-width: 1100px; width: 100%; }
.mc-head { display: flex; justify-content: space-between; gap: 16px; align-items: flex-start; flex-wrap: wrap; margin-bottom: 18px; }
.mc-kpis { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; margin-bottom: 18px; }
.mc-kpi { background: #fff; border: 1px solid var(--ms-border); border-radius: var(--ms-radius); padding: 18px; }
.mc-kpi b { display: block; font-family: Georgia, serif; font-weight: 400; font-size: 28px; margin-top: 6px; }
.mc-progress { height: 8px; background: #eee6d6; border-radius: 6px; overflow: hidden; }
.mc-progress i { display: block; height: 100%; background: var(--ms-gold-btn); }
.mc-timeline { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; list-style: none; padding: 0; margin: 0 0 18px; }
.mc-timeline li { border-top: 4px solid #e2dbcc; padding-top: 8px; font-size: 13px; color: var(--ms-muted); }
.mc-timeline li.is-done { border-color: var(--ms-success); color: var(--ms-text); }
.mc-timeline li[aria-current="step"] { border-color: var(--ms-gold-btn); color: var(--ms-text); font-weight: 700; }
.mc-code { letter-spacing: 8px; font-size: 24px; text-align: center; }
.mc-login { display: grid; grid-template-columns: 1fr 1fr; min-height: 100vh; }
.mc-login-media { background: var(--ms-navy) center/cover no-repeat; position: relative; color: #fff; display: flex; align-items: flex-end; padding: 40px; }
.mc-login-media::before { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, #101a30cc, #101a3033); }
.mc-login-media div { position: relative; }
.mc-login-form { align-self: center; width: min(460px, 90%); margin: auto; padding: 32px 0; }
.ms-site .ms-badge { display: inline-block; font-size: 12px; font-weight: 700; padding: 4px 10px; border-radius: 20px; background: #eaf0f6; color: #42526a; }
.ms-site .ms-badge-ok { background: #e4f4ec; color: var(--ms-success); }
.ms-site .ms-badge-warn { background: #fff1d3; color: var(--ms-warning); }
@media (max-width: 900px) {
    .mc-shell, .mc-login { grid-template-columns: 1fr; }
    .mc-side { flex-direction: row; flex-wrap: wrap; padding: 12px; }
    .mc-side .ms-brand { width: 100%; margin-bottom: 6px; }
    .mc-side form { margin-top: 0; }
    .mc-kpis { grid-template-columns: 1fr; }
    .mc-login-media { display: none; }
    .mc-main { padding: 18px; }
}
@media print { .mc-side { display: none; } .mc-shell { display: block; } }
.ms-booking a.card { display: block; text-decoration: none; color: inherit; } .ms-booking a.card:hover { border-color: var(--ms-gold); }
.ms-booking main.mc-login { max-width: none; padding: 0; margin: 0; }
/* Prestations et surclassements (EXT-05) */
.ms-booking .mc-offer { display: flex; justify-content: space-between; gap: 16px; align-items: center; flex-wrap: wrap; padding: 14px 0; border-top: 1px solid var(--ms-border); }
.ms-booking .mc-offer:first-of-type { border-top: 0; }
.ms-booking .mc-offer > div:first-child { flex: 1 1 260px; min-width: 0; }
.ms-booking .mc-offer-actions { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.ms-booking .mc-offer-actions form { margin: 0; }
.ms-booking .mc-offer-actions fieldset { border: 0; padding: 0; margin: 0; display: flex; gap: 12px; flex-wrap: wrap; }
.ms-booking .mc-offer-actions select { min-height: 44px; }
.ms-booking button.mc-link { background: transparent; color: var(--ms-navy, #172036); text-decoration: underline; }
.ms-booking .mc-offer-actions label { margin: 0; font-weight: 600; }
.ms-booking .mc-offer-actions select { width: auto; min-width: 180px; }

/* =====================================================================================================
 * Refonte visuelle des pages publiques : pied de page commun, icones, pages chambre / evenements /
 * paiement, alignement sur la largeur de l'en-tete, pied de page colle en bas des pages courtes.
 * ===================================================================================================== */
.ms-site { min-height: 100vh; display: flex; flex-direction: column; --ms-shadow: 0 1px 2px #101a300d, 0 8px 24px #101a3012; }
.ms-site > main, .ms-site > .mc-shell { flex: 1 0 auto; }
.ms-icon { display: inline-block; flex: none; vertical-align: -3px; }
.ms-small { font-size: 13px; }
.ms-lead { font-size: 18px; line-height: 1.6; color: #2b3850; margin: 0; }
.ms-stack { display: flex; flex-direction: column; gap: 22px; min-width: 0; }
.ms-band { background: #fff; border-top: 1px solid var(--ms-border); border-bottom: 1px solid var(--ms-border); }
.ms-card, .ms-panel { box-shadow: var(--ms-shadow); }
.ms-card { transition: transform .2s ease, box-shadow .2s ease; }
.ms-card:hover { transform: translateY(-2px); box-shadow: 0 2px 4px #101a3012, 0 16px 32px #101a301c; }
.ms-card h3 a { text-decoration: none; }
.ms-card h3 a:hover { color: var(--ms-gold); }
.ms-facts li, .ms-facts > span { display: inline-flex; align-items: center; gap: 6px; }
.ms-card-foot { margin-top: auto; display: flex; flex-direction: column; gap: 12px; padding-top: 6px; }
.ms-price span { color: var(--ms-muted); }
.ms-site .ms-btn-outline { background: transparent; border-color: var(--ms-navy); color: var(--ms-navy); }
.ms-site .ms-btn-outline:hover { background: var(--ms-navy); color: #fff; }
.ms-btn-block { width: 100%; }
.ms-btn-sm { min-height: 38px; padding: 8px 14px; font-size: 14px; }
.ms-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }

/* Heros */
.ms-hero-room { min-height: 420px; }
.ms-hero-room::before { background: linear-gradient(0deg, #101a30e6 0%, #101a3066 45%, #101a3014 100%); }
.ms-hero-room .ms-wrap { padding-bottom: 42px; }
.ms-hero-price { font-size: 16px; color: #f3e7c6; margin: 0; }
.ms-hero-price b { font-size: 22px; color: #fff; }

/* Badges d'informations et listes d'equipements */
.ms-chips { display: flex; flex-wrap: wrap; gap: 10px; list-style: none; margin: 0; padding: 0; }
.ms-chips li { display: inline-flex; align-items: center; gap: 8px; background: #fff; border: 1px solid var(--ms-border); border-radius: 999px; padding: 8px 14px; font-size: 14px; font-weight: 600; box-shadow: var(--ms-shadow); }
.ms-chips .ms-icon { color: var(--ms-gold); }
.ms-features { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 20px; }
.ms-features li { display: flex; align-items: center; gap: 12px; min-width: 0; }
.ms-features-lg { grid-template-columns: 1fr; gap: 18px; }
.ms-features-lg li { align-items: flex-start; }
.ms-feature-icon { flex: none; width: 40px; height: 40px; border-radius: 10px; display: grid; place-items: center; background: #f5ecd6; color: #8a6210; }
.ms-panel h2 { font-size: 24px; margin-bottom: 16px; }
.ms-sticky { position: sticky; top: 88px; }
.ms-price-big { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px; margin: 0 0 16px; color: var(--ms-muted); }
.ms-price-big b { font-family: Georgia, serif; font-weight: 400; font-size: 32px; color: var(--ms-text); }
.ms-assurances { list-style: none; padding: 14px 0 0; margin: 16px 0 0; border-top: 1px solid var(--ms-border); display: grid; gap: 8px; font-size: 14px; }
.ms-assurances li { display: flex; gap: 8px; align-items: center; }
.ms-assurances .ms-icon { color: var(--ms-success); }

/* Accueil : points forts, appel a l'action */
.ms-highlights-wrap { padding-top: 28px; }
.ms-highlights { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.ms-highlights li { display: flex; gap: 12px; align-items: flex-start; padding: 16px; border-radius: var(--ms-radius); background: #fff; border: 1px solid var(--ms-border); }
.ms-highlights .ms-icon { color: var(--ms-gold); margin-top: 2px; }
.ms-highlights b { display: block; font-size: 15px; }
.ms-highlights span { font-size: 14px; color: var(--ms-muted); }
.ms-highlights a { color: var(--ms-text); font-weight: 600; }
.ms-cta { display: flex; align-items: center; gap: 22px; padding: 28px; border-radius: 16px; color: #fff; background: linear-gradient(120deg, #101a30, #22355a); box-shadow: var(--ms-shadow); }
.ms-cta h2 { margin-bottom: 6px; }
.ms-cta p { margin: 0; color: #d6deea; }
.ms-cta > div { flex: 1; }
.ms-cta-icon { flex: none; width: 64px; height: 64px; border-radius: 16px; display: grid; place-items: center; background: #ffffff14; color: #e6c569; }

/* Evenements */
.ms-grid-spaces { grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); }
.ms-media-icon { color: #a89c80; }
.ms-two-even { grid-template-columns: 1fr 1fr; gap: 40px; }

/* Tunnel de reservation */
.ms-conditions { list-style: none; margin: 10px 0 0; padding: 0; display: grid; gap: 6px; font-size: 14px; color: var(--ms-muted); }
.ms-conditions li { display: flex; gap: 8px; align-items: flex-start; }
.ms-conditions .ms-icon { margin-top: 2px; color: #8a6210; }
.ms-conditions .ms-icon.ok { color: var(--ms-success); }
.ms-booking .card { box-shadow: var(--ms-shadow); }
.ms-booking .ms-split-search { grid-template-columns: minmax(0, 1fr) 340px; }
.ms-booking .offer { grid-template-columns: 220px minmax(0, 1fr); gap: 20px; }
.ms-booking .offer-body { min-width: 0; display: flex; flex-direction: column; gap: 10px; }
.ms-booking .offer-head { display: flex; justify-content: space-between; gap: 16px; align-items: flex-start; }
.ms-booking .offer .ms-facts { margin: 6px 0 0; }
.ms-booking .offer .ms-conditions { grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 8px 16px; margin: 0; padding-top: 10px; border-top: 1px dashed var(--ms-border); }
.ms-booking .offer details summary { cursor: pointer; font-size: 14px; color: var(--ms-muted); }
.ms-booking .offer-price { text-align: right; display: flex; flex-direction: column; align-items: flex-end; gap: 6px; flex: none; }
.ms-booking .offer-price button { margin-top: 4px; }
@media (max-width: 900px) {
    .ms-booking .ms-split-search { grid-template-columns: 1fr; }
    .ms-booking .offer { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
    .ms-booking .offer-head { flex-direction: column; }
    .ms-booking .offer-price { align-items: flex-start; text-align: left; flex-direction: row; flex-wrap: wrap; align-items: baseline; gap: 6px 10px; }
    .ms-booking .offer-price button { width: 100%; }
}

/* Paiement */
.ms-narrow { max-width: 680px; margin: 0 auto; }
.ms-paycard { padding: 28px; }
.ms-paycard-head { display: flex; gap: 16px; align-items: center; margin-bottom: 18px; }
.ms-paycard-head h1 { font-size: 28px; margin: 0; }
.ms-paycard-head p { margin: 2px 0 0; }
.ms-paycard-icon { flex: none; width: 56px; height: 56px; border-radius: 14px; display: grid; place-items: center; background: #f5ecd6; color: #8a6210; }
.ms-amount { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; padding: 18px; border-radius: 12px; background: #fbf8f1; border: 1px solid var(--ms-border); margin-bottom: 16px; }
.ms-amount strong { font-family: Georgia, serif; font-weight: 400; font-size: 36px; line-height: 1.1; }
.ms-meta { display: flex; gap: 8px; align-items: center; color: var(--ms-muted); font-size: 14px; }
.ms-booking .ms-methods-tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
.ms-booking .ms-methods-tiles legend { font-weight: 600; margin-bottom: 8px; }
.ms-booking .ms-methods-tiles label { cursor: pointer; }
.ms-booking .ms-methods-tiles label:has(input:checked) { border-color: var(--ms-gold-btn); background: #fff8e8; box-shadow: 0 0 0 1px var(--ms-gold-btn); }
.ms-secure { display: flex; gap: 8px; align-items: center; margin: 18px 0 0; padding-top: 14px; border-top: 1px solid var(--ms-border); color: var(--ms-muted); font-size: 13px; }
.ms-secure .ms-icon { color: var(--ms-success); }
.ms-booking .alert { display: flex; gap: 8px; align-items: flex-start; }

/* Pied de page commun */
.ms-footer { background: var(--ms-navy); color: #c3cddc; font-size: 14px; margin-top: 0; }
.ms-site > main { padding-bottom: 56px; }
.ms-site > main:has(> .ms-band:last-child) { padding-bottom: 0; }
.ms-booking > main { padding-bottom: 56px; }
.ms-footer-grid { display: grid; grid-template-columns: 1.4fr 1.2fr 1fr 1fr; gap: 32px; padding-top: 44px; padding-bottom: 36px; }
.ms-footer .ms-brand { color: #fff; margin: 0 0 12px; }
.ms-footer-brand p { margin: 0 0 16px; color: #aeb9cb; max-width: 300px; }
.ms-footer-title { font-family: system-ui, -apple-system, 'Segoe UI', sans-serif !important; font-size: 12px !important; font-weight: 700 !important; letter-spacing: 2px; text-transform: uppercase; color: #e6c569; margin: 0 0 14px !important; }
.ms-footer-list, .ms-footer-links { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.ms-footer-list li { display: flex; gap: 10px; align-items: flex-start; }
.ms-footer-list .ms-icon { color: #e6c569; margin-top: 2px; }
.ms-footer a { color: #fff; text-decoration: none; }
.ms-footer a:hover { color: #e6c569; text-decoration: underline; }
.ms-footer .ms-btn-gold, .ms-footer .ms-btn-gold:hover { color: #172036; text-decoration: none; }
.ms-footer-secure { display: flex; gap: 10px; align-items: flex-start; margin: 16px 0 0; font-size: 13px; color: #aeb9cb; }
.ms-footer-secure .ms-icon { color: #6fcf97; flex: none; }
.ms-footer-bottom { border-top: 1px solid #ffffff1a; }
.ms-footer-bottom .ms-wrap { display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; padding-top: 16px; padding-bottom: 18px; font-size: 13px; color: #8f9bb0; }
.ms-footer-meta { display: inline-flex; gap: 18px; align-items: center; flex-wrap: wrap; }
.ms-footer-meta a { display: inline-flex; gap: 6px; align-items: center; }

/* Page autonome (lien expire, deconnexion) */
.ms-notice { background: radial-gradient(circle at 20% 10%, #22355a 0%, #101a30 55%, #0b1222 100%); }
.ms-notice-main { flex: 1; display: grid; place-items: center; padding: 32px 16px; }
.ms-notice-card { width: min(520px, 100%); background: #fff; border-radius: 18px; padding: 36px 32px; text-align: center; box-shadow: 0 24px 60px #0008; }
.ms-notice-card h1 { font-size: 28px; }
.ms-notice-card p { color: var(--ms-muted); }
.ms-notice-icon { width: 72px; height: 72px; margin: 0 auto 18px; border-radius: 50%; display: grid; place-items: center; background: #f5ecd6; color: #8a6210; }
.ms-notice-brand { margin: 22px 0 0; font-size: 12px; letter-spacing: 2px; text-transform: uppercase; }

@media (max-width: 1000px) {
    .ms-footer-grid { grid-template-columns: 1fr 1fr; }
    .ms-highlights { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 900px) {
    .ms-two-even { grid-template-columns: 1fr; gap: 24px; }
    .ms-sticky { position: static; }
    .ms-cta { flex-direction: column; align-items: flex-start; }
}
@media (max-width: 600px) {
    .ms-footer-grid, .ms-highlights, .ms-features, .ms-form-row { grid-template-columns: 1fr; }
    .ms-footer-bottom .ms-wrap { flex-direction: column; }
    .ms-hero-room { min-height: 340px; }
    .ms-paycard { padding: 20px; }
    .ms-amount strong { font-size: 30px; }
}
@media (prefers-reduced-motion: reduce) { .ms-card, .ms-card:hover { transition: none; transform: none; } }

/* Espace unique : carte horizontale pleine largeur */
.ms-grid-single { grid-template-columns: 1fr; }
.ms-grid-single .ms-card-space { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); }
.ms-grid-single .ms-card-space .ms-card-media { aspect-ratio: auto; min-height: 280px; }
.ms-grid-single .ms-card-space .ms-card-body { padding: 28px; justify-content: center; }
.ms-grid-single .ms-card-space .ms-btn { align-self: flex-start; }
@media (max-width: 700px) { .ms-grid-single .ms-card-space { grid-template-columns: 1fr; } .ms-grid-single .ms-card-space .ms-card-media { min-height: 200px; } }
/* Section et conteneur sur le meme element : marges laterales conservees (contenu jamais colle au bord) */
.ms-section.ms-wrap { padding-left: 20px; padding-right: 20px; }
@media (max-width: 900px) {
    .ms-header .ms-lang { display: none; }
    .ms-header .ms-wrap { gap: 10px; min-height: 60px; }
    .ms-header .ms-btn-gold { min-height: 40px; padding: 8px 14px; font-size: 14px; }
    .ms-header .ms-menu-btn { min-height: 40px; padding: 8px 14px; }
}
@media (max-width: 600px) { .ms-section.ms-wrap { padding-left: 16px; padding-right: 16px; } .ms-wrap { padding-left: 16px; padding-right: 16px; } }
@media (max-width: 600px) {
    .ms-header .ms-brand b { font-size: 15px; letter-spacing: 2px; }
    .ms-header .ms-brand small { display: none; }
    .ms-header .ms-wrap { flex-wrap: nowrap; }
    .ms-header.ms-open .ms-wrap { flex-wrap: wrap; }
    .ms-header .ms-nav { order: 10; }
}
.ms-booking .badge-promo { background: #e4f4ec; color: var(--ms-success); }

/* Acces aux espaces (client, equipe) depuis le site ; retour au site depuis les pages de connexion */
.ms-access { display: inline-flex; gap: 8px; margin-left: 8px; }
.ms-site .ms-nav a.ms-access-btn { display: inline-flex; align-items: center; gap: 6px; border: 1px solid #ffffff4d; border-radius: 999px; padding: 7px 14px; color: #fff; }
.ms-site .ms-nav a.ms-access-btn:hover { background: #ffffff1a; border-color: #ffffff99; }
.ms-site .ms-nav a.ms-access-staff { border-color: #e6c56966; color: #f3e1b0; }
.ms-flip { transform: scaleX(-1); }
.mc-back { margin-top: 18px; font-size: 14px; display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.mc-back a { display: inline-flex; align-items: center; gap: 6px; color: var(--ms-text); font-weight: 600; }
.mc-demo-access { margin-top: 18px; padding: 16px; border: 1px dashed #d9c9a0; background: #fffaf0; border-radius: 12px; }
.mc-demo-access p { margin: 0 0 10px; }
.ms-booking button.mc-demo-btn { width: 100%; }
.mc-side a.mc-site-link { display: flex; align-items: center; gap: 8px; color: #e6c569; margin-top: 8px; }
@media (max-width: 900px) {
    .ms-access { flex-direction: column; margin: 8px 0 0; gap: 6px; }
    .ms-site .ms-nav a.ms-access-btn { justify-content: flex-start; }
}
@media (min-width: 901px) {
    .ms-header .ms-wrap { flex-wrap: nowrap; gap: 14px; }
    .ms-header .ms-nav { flex-wrap: nowrap; align-items: center; gap: 2px; }
    .ms-header .ms-nav a { padding: 8px 10px; white-space: nowrap; }
    .ms-site .ms-nav a.ms-access-btn { padding: 6px 12px; font-size: 13px; }
    .ms-access { margin-left: 4px; gap: 6px; }
    .ms-header .ms-btn-gold { white-space: nowrap; padding: 10px 16px; }
}
@media (min-width: 901px) and (max-width: 1180px) {
    /* Espace reduit : pastilles d'acces en icone seule (libelle conserve pour les lecteurs d'ecran) */
    .ms-site .ms-nav a.ms-access-btn { padding: 7px 9px; }
    .ms-site .ms-nav a.ms-access-btn .ms-access-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
}

/* EXT-07 : messages, depart, releve et avantages de l'espace client */
.mc-side a .mc-count { display: inline-block; min-width: 20px; margin-left: 8px; padding: 0 6px; border-radius: 10px; background: var(--ms-gold-btn); color: #172036; font-size: 12px; font-weight: 700; text-align: center; }
.mc-chat { display: flex; flex-direction: column; gap: 14px; }
.mc-thread { list-style: none; margin: 0; padding: 4px; display: flex; flex-direction: column; gap: 12px; max-height: 60vh; overflow-y: auto; }
.mc-msg { max-width: min(560px, 85%); padding: 10px 14px; border-radius: 14px; background: #f3efe6; border: 1px solid var(--ms-border); align-self: flex-start; }
.mc-msg.is-mine { align-self: flex-end; background: #e8eef7; border-color: #cdd8e8; }
.mc-msg p { margin: 4px 0 0; overflow-wrap: anywhere; }
.mc-msg-meta, .mc-msg-state { display: block; font-size: 12px; color: var(--ms-muted); }
.mc-msg-state { text-align: right; margin-top: 4px; }
.mc-thread-empty { text-align: center; color: var(--ms-muted); padding: 28px 12px; }
.mc-thread-empty .ms-icon { color: var(--ms-gold); }
.ms-booking .mc-compose { display: grid; grid-template-columns: 1fr auto; gap: 10px; align-items: end; border-top: 1px solid var(--ms-border); padding-top: 14px; }
.mc-note { font-size: 13px; }
.mc-note .ms-icon { vertical-align: -2px; margin-right: 4px; }
.mc-facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.mc-facts > div { display: flex; gap: 10px; align-items: flex-start; }
.mc-facts .ms-icon { color: var(--ms-gold); flex: none; margin-top: 2px; }
.mc-facts small { display: block; color: var(--ms-muted); font-size: 12px; }
.ms-booking .mc-checklist { border: 0; padding: 0; margin: 0 0 12px; display: grid; gap: 10px; }
.ms-booking .mc-checklist label { display: flex; gap: 10px; align-items: flex-start; font-weight: 400; margin: 0; }
.ms-booking .mc-checklist input { width: 20px; height: 20px; flex: none; margin-top: 1px; accent-color: var(--ms-gold-btn); }
.ms-booking .mc-wide { width: 100%; margin-top: 12px; }
.mc-state { display: flex; gap: 8px; align-items: flex-start; padding: 10px 12px; border-radius: 8px; background: #eaf0f6; color: #253650; }
.mc-state .ms-icon { flex: none; margin-top: 3px; }
.mc-state small { margin-left: auto; white-space: nowrap; }
.mc-state.is-ok { background: #e4f4ec; color: var(--ms-success); }
.mc-state.is-warn { background: #fff1d3; color: var(--ms-warning); }
.ms-booking .mc-subtotal { border-top: 1px solid var(--ms-border); margin-top: 6px; padding-top: 10px; }
.mc-links { list-style: none; margin: 0; padding: 0; }
.mc-links li + li { border-top: 1px solid var(--ms-border); }
.mc-links a { display: flex; gap: 10px; align-items: center; padding: 12px 4px; min-height: 44px; color: var(--ms-text); text-decoration: none; }
.mc-links a:hover { color: var(--ms-gold); }
.mc-links .ms-icon { color: var(--ms-gold); flex: none; }
.mc-points { display: flex; gap: 12px; align-items: center; padding: 14px; border-radius: 10px; background: #fff8e8; border: 1px solid #f0dfb2; margin-bottom: 10px; }
.mc-points .ms-icon { color: var(--ms-gold); flex: none; }
.mc-points b { font-family: Georgia, serif; font-weight: 400; font-size: 26px; }
.mc-points small { display: block; color: var(--ms-muted); }
.ms-booking td.mc-plus { color: var(--ms-success); font-weight: 700; }
.mc-print { max-width: 820px; margin: 0 auto; padding: 28px 20px; }
.mc-print .table-scroll { overflow-x: auto; position: relative; }
@media (max-width: 900px) { .mc-facts { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .mc-facts { grid-template-columns: 1fr; } .ms-booking .mc-compose { grid-template-columns: 1fr; } .mc-msg { max-width: 92%; } }
@media print { .mc-noprint { display: none; } .mc-print { padding: 0; } .mc-print .card { border: 0; box-shadow: none; } }
