/* Page d'accueil — Global Communications Convention 2027 (Thales)
   Design « Convention Thales 2027 » (Claude Design), design system Business Profilers
   avec la teinte profonde remplacée par le bleu Thales. */

:root {
    --bp-turquoise: #00FFD3;
    --bp-blue: #33A0BE;
    --bp-ice: #E4F7FC;
    --bp-green: #32BA55;
    --bp-red: #D33E36;
    --bp-white: #FFFFFF;

    --bp-deep: #242B75;
    --deep-80: #505591;
    --deep-60: #7C80AC;
    --deep-40: #A7AAC8;
    --deep-20: #D3D5E3;
    --deep-08: #EDEEF4;
    --th-accent: #5DBFD5;

    --gradient-brand: linear-gradient(90deg, var(--bp-blue) 0%, var(--bp-turquoise) 100%);

    --text-body: var(--bp-deep);
    --text-muted: var(--deep-60);

    --font-display: "Ubuntu", "Lato", system-ui, sans-serif;
    --font-body: "Lato", system-ui, sans-serif;

    --shadow-card: 0 4px 20px rgba(36, 43, 117, .08);
    --shadow-raised: 0 10px 32px rgba(36, 43, 117, .14);
    --ease: cubic-bezier(.22, 1, .36, 1);

    --gutter: clamp(20px, 4vw, 48px);
    --section-y: clamp(56px, 8vw, 96px);
}

html { scroll-behavior: smooth; }

body.th-page {
    margin: 0;
    background: #fff;
    font-family: var(--font-body);
    font-weight: 300;
    font-size: 16px;
    line-height: 1.55;
    color: var(--text-body);
    -webkit-font-smoothing: antialiased;
}

.th-page *, .th-page *::before, .th-page *::after { box-sizing: border-box; }
.th-page h1, .th-page h2, .th-page h3 { font-family: var(--font-display); font-weight: 500; color: var(--bp-deep); margin: 0; }
.th-page p { margin: 0; }
:where(.th-page) a { color: inherit; text-decoration: none; transition: color .15s var(--ease); }
:where(.th-page) a:hover { opacity: 1; }
.th-page strong { font-weight: 700; }

@keyframes th-rise { from { opacity: 0; transform: translateY(22px); } to { opacity: 1; transform: none; } }

.th-container { max-width: 1280px; margin: 0 auto; }
.th-section { padding: var(--section-y) var(--gutter); scroll-margin-top: 72px; background: #fff; }
.th-section--ice { background: var(--bp-ice); }

/* ---------- Typo commune ---------- */
.th-eyebrow {
    display: flex; align-items: center; gap: 10px;
    font-weight: 700; font-size: 12px; line-height: 1;
    letter-spacing: .14em; text-transform: uppercase; color: var(--bp-blue);
}
.th-eyebrow::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--th-accent); }
.th-eyebrow--green { color: var(--bp-green); }
.th-eyebrow--green::before { display: none; }

.th-h2 { font-size: clamp(30px, 3.4vw, 44px); line-height: 1.12; letter-spacing: -.01em; }
.th-lead { font-size: 18px; font-weight: 300; line-height: 1.55; color: var(--text-muted); }
.th-lead--body { color: var(--text-body); }
.th-intro { display: flex; flex-direction: column; gap: 12px; max-width: 62ch; }

/* ---------- Boutons (Button du DS) ---------- */
.th-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 10px;
    font-family: var(--font-body); font-weight: 700; text-transform: uppercase;
    letter-spacing: .08em; line-height: 1; white-space: nowrap;
    border: 1px solid transparent; border-radius: 999px; cursor: pointer;
    padding: 13px 32px; font-size: 14px;
    transition: background .24s var(--ease), color .24s var(--ease), box-shadow .24s var(--ease), border-color .24s var(--ease), transform .15s var(--ease);
}
.th-btn:active { transform: translateY(1px); }
.th-btn--sm { padding: 8px 20px; font-size: 12px; }
.th-btn--lg { padding: 18px 44px; font-size: 16px; }
.th-btn--dark, .th-page a.th-btn--dark { background: var(--bp-deep); color: #fff; }
.th-btn--dark:hover { box-shadow: var(--shadow-raised); color: #fff; }
.th-btn--ghost { background: transparent; color: var(--bp-deep); }
.th-btn--ghost:hover { background: var(--bp-ice); }
.th-btn--outline, .th-page a.th-btn--outline { background: transparent; color: var(--bp-blue); border-color: var(--bp-blue); }
.th-btn--outline:hover { background: var(--gradient-brand); color: #fff; border-color: transparent; }

.th-link-arrow {
    display: inline-flex; align-items: center; gap: 8px;
    font-size: 14px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
    color: var(--bp-blue);
}
.th-link-arrow:hover { color: var(--bp-deep); }
.th-link-arrow i { font-size: 11px; }

/* ---------- Tags (Tag du DS) ---------- */
.th-tag {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 6px 14px; border-radius: 999px;
    font-weight: 700; font-size: 14px; line-height: 1.3; white-space: nowrap;
    background: #fff; color: var(--bp-deep); border: 1px solid var(--deep-20);
}
.th-tag--brand { background: var(--gradient-brand); color: #fff; border-color: transparent; padding: 4px 10px; font-size: 12px; }

/* ---------- En-tête ---------- */
.th-header {
    position: sticky; top: 0; z-index: 40;
    background: rgba(255, 255, 255, .92);
    backdrop-filter: saturate(140%) blur(12px);
    -webkit-backdrop-filter: saturate(140%) blur(12px);
    border-bottom: 1px solid var(--deep-08);
}
.th-header__inner {
    max-width: 1280px; margin: 0 auto; height: 72px;
    display: flex; align-items: center; gap: 28px;
    padding: 0 var(--gutter);
}
.th-brand { flex: none; display: flex; align-items: center; gap: 16px; }
.th-brand img { height: 18px; width: auto; display: block; }
.th-brand__sep { width: 1px; height: 24px; background: var(--deep-20); }
.th-brand__name { font-family: var(--font-display); font-weight: 500; font-size: 14px; color: var(--bp-deep); white-space: nowrap; }
.th-nav { margin-left: auto; display: flex; align-items: center; gap: 26px; }
.th-nav__link {
    font-size: 14px; font-weight: 400; color: var(--text-muted); white-space: nowrap;
    padding: 4px 0 2px; border-bottom: 2px solid transparent;
}
.th-nav__link:hover { color: var(--bp-deep); border-bottom-color: var(--th-accent); }
.th-header__actions { flex: none; display: flex; align-items: center; gap: 16px; padding-left: 26px; border-left: 1px solid var(--deep-08); }

.th-user { position: relative; }
.th-user__btn {
    width: 36px; height: 36px; border-radius: 50%; padding: 0; overflow: hidden; cursor: pointer;
    display: flex; align-items: center; justify-content: center;
    background: var(--bp-ice); color: var(--bp-deep); border: 1px solid var(--deep-20);
    font-family: var(--font-body); font-weight: 700; font-size: 13px;
    transition: border-color .15s var(--ease);
}
.th-user__btn:hover, .th-user__btn[aria-expanded="true"] { border-color: var(--bp-deep); }
.th-user__btn img { width: 100%; height: 100%; object-fit: cover; }
.th-user__menu {
    position: absolute; right: 0; top: calc(100% + 10px); min-width: 220px; z-index: 50;
    display: flex; flex-direction: column; padding: 8px; border-radius: 16px;
    background: #fff; border: 1px solid var(--deep-08); box-shadow: var(--shadow-raised);
}
.th-user__menu[hidden] { display: none; }
.th-user__name { padding: 8px 12px 10px; margin-bottom: 4px; border-bottom: 1px solid var(--deep-08); font-weight: 700; font-size: 14px; color: var(--bp-deep); }
.th-user__menu a { display: flex; align-items: center; gap: 10px; padding: 9px 12px; border-radius: 10px; font-size: 14px; font-weight: 400; color: var(--bp-deep); }
.th-user__menu a:hover { background: var(--bp-ice); }
.th-user__menu i { width: 16px; color: var(--bp-blue); font-size: 13px; }

/* ---------- Hero ---------- */
.th-hero {
    position: relative; min-height: 660px; display: flex; align-items: flex-end;
    background: var(--bp-deep) center/cover no-repeat; color: #fff; overflow: hidden;
}
.th-hero::before {
    content: ""; position: absolute; inset: 0;
    background: linear-gradient(180deg, rgba(36, 43, 117, .58) 0%, rgba(36, 43, 117, .30) 45%, rgba(36, 43, 117, .82) 100%);
}
.th-hero__inner {
    position: relative; z-index: 1; max-width: 1280px; margin: 0 auto; width: 100%;
    padding: clamp(80px, 10vw, 128px) var(--gutter) 48px;
    display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(min(100%, 260px), .65fr);
    gap: 40px 48px; align-items: end;
}
.th-hero__main { display: flex; flex-direction: column; gap: 24px; min-width: 0; }
.th-hero__main > *, .th-hero__card, .th-hero__pills { animation: th-rise .7s var(--ease) both; }
.th-hero__main > :nth-child(2) { animation-delay: .08s; }
.th-hero__main > :nth-child(3) { animation-delay: .16s; }
.th-hero__main > :nth-child(4) { animation-delay: .24s; }
.th-hero__card { animation-delay: .3s; }
.th-hero__pills { animation-delay: .38s; }
.th-hero .th-eyebrow { color: #fff; }
.th-hero h1 {
    font-size: clamp(40px, 5.2vw, 72px); line-height: 1.04; letter-spacing: -.015em;
    color: #fff; max-width: 14ch;
}
.th-hero__lead { font-size: clamp(17px, 1.4vw, 20px); font-weight: 300; line-height: 1.55; max-width: 50ch; color: rgba(255, 255, 255, .92); }
.th-hero__actions { display: flex; align-items: center; flex-wrap: wrap; gap: 16px 24px; }
.th-hero__more {
    display: inline-flex; align-items: center; gap: 8px; color: #fff;
    font-size: 14px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
    border-bottom: 1px solid rgba(255, 255, 255, .5); padding-bottom: 3px;
}
.th-page .th-hero__more:hover { color: #fff; border-bottom-color: var(--th-accent); }
.th-hero__more i { font-size: 10px; color: var(--th-accent); }

.th-hero__card {
    display: flex; flex-direction: column; gap: 14px; align-items: flex-start;
    padding: 28px; border-radius: 24px;
    background: rgba(36, 43, 117, .46); border: 1px solid rgba(255, 255, 255, .28);
}
.th-hero__label { font-size: 12px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--th-accent); }
.th-hero__dates {
    display: flex; align-items: baseline; gap: 14px;
    font-family: var(--font-display); font-weight: 500; font-size: clamp(44px, 4.6vw, 64px); line-height: 1; color: #fff;
}
.th-hero__dates i { font-size: .42em; color: var(--th-accent); }
.th-hero__month { font-size: 18px; font-weight: 300; color: #fff; }
.th-hero__rule { height: 1px; width: 100%; background: rgba(255, 255, 255, .28); margin: 6px 0; }
.th-hero__venue-logo { height: 34px; width: auto; display: block; }
.th-hero__venue { font-size: 14px; font-weight: 300; color: rgba(255, 255, 255, .88); }

.th-hero__pills { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 12px; }
.th-pill {
    display: flex; align-items: center; gap: 10px; padding: 10px 18px; border-radius: 999px;
    background: rgba(255, 255, 255, .14); border: 1px solid rgba(255, 255, 255, .3);
    font-size: 14px; color: #fff;
}
.th-pill i { color: var(--th-accent); font-size: 13px; }

/* ---------- Réservation ---------- */
.th-booking { display: flex; flex-wrap: wrap; gap: 40px 48px; align-items: flex-start; margin-top: 48px; }
.th-booking__main { flex: 1 1 520px; min-width: 0; display: flex; flex-direction: column; gap: 24px; }
.th-booking__head { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.th-booking__head h3 { font-size: 22px; }
.th-booking__hint { font-size: 14px; color: var(--text-muted); }
.th-booking__notice { display: flex; gap: 10px; align-items: flex-start; margin: 16px 0 0; padding: 14px 16px; border-radius: 12px; background: rgba(var(--primary-color-rgb), 0.06); font-size: 15px; line-height: 1.55; color: var(--text-body); }
.th-booking__notice i { margin-top: 4px; color: var(--primary-color); }

/* Jamais plus de colonnes que de nuitées : sinon le bloc dîner (pleine largeur)
   ajoute une colonne vide et toutes les cartes rétrécissent à la sélection. */
.th-nights {
    display: grid; gap: 20px;
    grid-template-columns: repeat(auto-fit, minmax(max(200px, (100% - (var(--nights, 3) - 1) * 20px) / var(--nights, 3)), 1fr));
}
.th-night {
    appearance: none; text-align: left; cursor: pointer; font: inherit; color: inherit;
    display: flex; flex-direction: column; gap: 16px; padding: 22px; border-radius: 24px;
    background: #fff; border: 1px solid var(--deep-20); box-shadow: 0 4px 20px rgba(36, 43, 117, .06);
    transition: all .24s var(--ease);
}
.th-night:hover { transform: translateY(-2px); box-shadow: var(--shadow-raised); }
.th-night:focus-visible { outline: 2px solid var(--bp-blue); outline-offset: 2px; }
.th-night[aria-checked="true"] { padding: 21px; background: var(--bp-ice); border: 2px solid var(--bp-deep); box-shadow: var(--shadow-raised); }
.th-night__top { display: flex; justify-content: space-between; align-items: flex-start; width: 100%; gap: 12px; }
/* Hiérarchie : la date d'abord, puis le prix, la disponibilité en information secondaire */
.th-night__day { display: block; font-size: 13px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--bp-blue); }
.th-night__date { display: block; margin-top: 4px; font-family: var(--font-display); font-weight: 700; font-size: 28px; line-height: 1.15; letter-spacing: -.01em; color: var(--bp-deep); }
.th-night__check {
    flex: none; width: 26px; height: 26px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    background: #fff; border: 1px solid var(--deep-20); color: #fff; font-size: 12px;
    transition: all .24s var(--ease);
}
.th-night__check i { opacity: 0; transition: opacity .15s; }
.th-night[aria-checked="true"] .th-night__check { background: var(--bp-deep); border-color: var(--bp-deep); }
.th-night[aria-checked="true"] .th-night__check i { opacity: 1; }
.th-night__rooms {
    align-self: flex-start; display: inline-flex; align-items: center; gap: 6px;
    padding: 4px 10px; border-radius: 999px; background: var(--bp-ice);
    font-size: 14px; font-weight: 400; color: var(--text-muted);
}
.th-night__rooms::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: #16a34a; }
/* Le chiffre garde la taille du texte, seulement en gras */
.th-night__rooms strong { font: inherit; font-weight: 700; color: var(--bp-deep); }
/* 10 chambres ou moins : point orange */
.th-night__rooms--low::before { background: #f59e0b; }
.th-night__rooms--out::before { background: var(--bp-red, #d92d20); }
.th-night[aria-checked="true"] .th-night__rooms { background: #fff; }
.th-night__price span { font-size: 14px; font-weight: 300; color: var(--text-muted); }
.th-night__price { font-family: var(--font-display); font-size: 20px; font-weight: 500; color: var(--bp-deep); }
.th-night__note { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 400; color: var(--text-muted); }
.th-night__note--dinner { color: var(--bp-deep); }
.th-night__note i { font-size: 12px; }
.th-night.is-soldout { cursor: not-allowed; opacity: .55; box-shadow: none; }
.th-night.is-soldout:hover { transform: none; box-shadow: none; }
.th-night.is-soldout .th-night__check { visibility: hidden; }
.th-night__tarifs { display: flex; flex-direction: column; gap: 8px; }
.th-night__tarif {
    appearance: none; font: inherit; cursor: pointer; text-align: left;
    display: flex; flex-direction: column; gap: 2px; padding: 10px 12px; border-radius: 12px;
    background: #fff; border: 1px solid var(--deep-20); color: var(--bp-deep);
    transition: border-color .15s var(--ease), background .15s var(--ease);
}
.th-night__tarif span { font-size: 13px; font-weight: 400; line-height: 1.35; }
.th-night__tarif strong { font-size: 14px; }
.th-night__tarif:hover { border-color: var(--deep-40); }
.th-night[aria-checked="true"] .th-night__tarif[aria-checked="true"] { border-color: var(--bp-deep); box-shadow: inset 0 0 0 1px var(--bp-deep); }

.th-dinner {
    display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
    border-radius: 24px; overflow: hidden; border: 1px solid var(--deep-20);
}
.th-dinner[hidden] { display: none; }
.th-dinner__img { min-height: 220px; background: var(--bp-deep) center/cover no-repeat; }
.th-dinner__body { padding: 28px; display: flex; flex-direction: column; gap: 16px; background: #fff; }
.th-dinner__body .th-eyebrow::before { display: none; }
.th-dinner__price { font-family: var(--font-display); font-weight: 500; font-size: 24px; color: var(--bp-deep); }
.th-dinner__price span { font-family: var(--font-body); font-weight: 300; font-size: 14px; color: var(--text-muted); }

.th-check { display: flex; gap: 12px; align-items: flex-start; cursor: pointer; }
.th-check input { position: absolute; opacity: 0; pointer-events: none; }
.th-check__box {
    flex: none; width: 22px; height: 22px; margin-top: 1px; border-radius: 6px;
    border: 1.5px solid var(--deep-40); background: #fff;
    display: flex; align-items: center; justify-content: center; color: #fff; font-size: 11px;
    transition: all .15s var(--ease);
}
.th-check__box i { opacity: 0; }
.th-check input:checked + .th-check__box { background: var(--bp-deep); border-color: var(--bp-deep); }
.th-check input:checked + .th-check__box i { opacity: 1; }
.th-check input:focus-visible + .th-check__box { outline: 2px solid var(--bp-blue); outline-offset: 2px; }
.th-check__label { display: block; font-weight: 700; font-size: 15px; color: var(--bp-deep); }
.th-check__desc { display: block; font-size: 13px; font-weight: 300; color: var(--text-muted); }

.th-booking__error { display: flex; align-items: center; gap: 8px; font-size: 14px; color: var(--bp-red); }
.th-booking__error[hidden] { display: none; }
.th-booking__actions { display: flex; justify-content: flex-end; }

.th-recap { flex: 0 1 360px; min-width: min(100%, 280px); position: sticky; top: 96px; }
.th-recap__card { display: flex; flex-direction: column; gap: 18px; padding: 28px; border-radius: 24px; background: #fff; border: 1px solid var(--deep-20); }
.th-recap__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.th-recap__head h3 { font-size: 20px; }
.th-recap__head i { color: var(--bp-blue); }
.th-recap__empty { font-size: 14px; font-weight: 300; color: var(--text-muted); }
.th-recap__lines { display: flex; flex-direction: column; gap: 18px; }
.th-recap__lines:empty { display: none; }
.th-recap__line { display: flex; justify-content: space-between; gap: 12px; font-size: 15px; }
.th-recap__line span:last-child { font-weight: 700; color: var(--bp-deep); }
.th-recap__rule { height: 1px; background: var(--deep-20); }
.th-recap__total { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.th-recap__total-label { font-size: 14px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--text-muted); }
.th-recap__total-value { font-family: var(--font-display); font-weight: 500; font-size: 30px; line-height: 1; color: var(--bp-deep); }
.th-recap__summary { font-size: 13px; font-weight: 300; line-height: 1.5; color: var(--text-muted); }
.th-recap__summary:empty { display: none; }
.th-recap__info {
    display: flex; align-items: center; gap: 10px; padding: 12px 14px; border-radius: 16px;
    background: var(--bp-ice); font-size: 13px; color: var(--bp-deep);
}
.th-recap__info i { color: var(--bp-blue); }

/* ---------- Le domaine ---------- */
.th-stack { display: flex; flex-direction: column; gap: 48px; }
.th-split { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); gap: 40px 64px; align-items: center; }
.th-split__text { display: flex; flex-direction: column; gap: 20px; }
.th-tags { display: flex; flex-wrap: wrap; gap: 10px; }
.th-photo { border-radius: 32px; overflow: hidden; min-height: 380px; background: var(--bp-deep) center/cover no-repeat; box-shadow: var(--shadow-raised); }

.th-gallery { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr)); gap: 20px; }
.th-gallery__pair { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
.th-tile { position: relative; height: 240px; border-radius: 24px; overflow: hidden; background: var(--bp-deep) center/cover no-repeat; }
.th-tile::before { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(36, 43, 117, 0) 40%, rgba(36, 43, 117, .78) 100%); }
.th-tile span { position: absolute; left: 20px; right: 20px; bottom: 16px; color: #fff; font-family: var(--font-display); font-weight: 500; font-size: 17px; }

.th-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); gap: 32px; padding-top: 8px; }
.th-stat { display: flex; flex-direction: column; gap: 8px; }
.th-stat__value {
    font-family: var(--font-display); font-weight: 700; font-size: 3.25rem; line-height: 1;
    background: var(--gradient-brand); -webkit-background-clip: text; background-clip: text; color: transparent;
    align-self: flex-start;
}
.th-stat__label { font-size: 18px; font-weight: 700; color: var(--bp-deep); }
.th-stat__caption { font-size: 14px; font-weight: 300; color: var(--text-muted); max-width: 32ch; }

/* ---------- Programme ---------- */
.th-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 20px; }
.th-card { display: flex; flex-direction: column; gap: 20px; padding: 28px; border-radius: 24px; background: #fff; box-shadow: var(--shadow-card); }
.th-day { display: flex; align-items: baseline; gap: 10px; font-family: var(--font-display); font-weight: 500; color: var(--bp-deep); }
.th-day strong { font-weight: 500; font-size: 40px; line-height: 1; }
.th-day span { font-size: 18px; }
.th-slots { display: flex; flex-direction: column; gap: 14px; font-size: 15px; }
.th-slot { display: flex; gap: 14px; }
.th-slot__time { flex: none; width: 92px; white-space: nowrap; font-weight: 700; color: var(--bp-deep); }
.th-slot__what { font-weight: 300; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }

/* ---------- Accès ---------- */
.th-access { display: flex; flex-direction: column; gap: 18px; }
.th-access__item { display: flex; gap: 16px; align-items: flex-start; }
.th-icon {
    flex: none; width: 44px; height: 44px; border-radius: 12px; background: #fff;
    display: flex; align-items: center; justify-content: center; color: var(--bp-blue); font-size: 18px;
}
.th-icon--green { background: rgba(50, 186, 85, .12); color: var(--bp-green); }
.th-access__item > div { display: flex; flex-direction: column; gap: 2px; font-size: 15px; }
.th-access__item strong { color: var(--bp-deep); }
.th-access__item a:hover { color: var(--bp-blue); }
.th-map { border-radius: 24px; overflow: hidden; background: #fff; box-shadow: var(--shadow-card); min-height: 380px; display: flex; }
.th-map iframe { border: 0; width: 100%; min-height: 380px; display: block; }

/* ---------- RSE ---------- */
.th-rse { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr)); gap: 20px; }
.th-rse__pair { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); gap: 20px; }
.th-rse .th-card { gap: 12px; }
.th-rse h3 { font-size: 18px; }
.th-rse p { font-size: 15px; font-weight: 300; line-height: 1.55; color: var(--text-muted); }

/* ---------- Contact ---------- */
.th-contacts { display: flex; flex-wrap: wrap; gap: 16px; }
.th-contacts > .th-contact { flex: 1 1 280px; min-width: 0; }
.th-contact { display: flex; flex-direction: column; gap: 22px; padding: 32px; }
.th-contact__who { display: flex; align-items: center; gap: 18px; }
.th-contact__avatar {
    font-family: var(--font-display); font-weight: 500; letter-spacing: 0.5px;
    flex: none; width: 64px; height: 64px; border-radius: 50%; background: var(--bp-deep); color: #fff;
    display: flex; align-items: center; justify-content: center; font-size: 24px; overflow: hidden;
}
.th-contact__avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }
.th-contact__name { display: block; font-family: var(--font-display); font-weight: 500; font-size: 20px; color: var(--bp-deep); }
.th-contact__role { display: block; font-size: 14px; font-weight: 300; color: var(--text-muted); }
.th-contact__lines { display: flex; flex-direction: column; gap: 10px; font-size: 15px; }
.th-contact__lines > * { display: flex; align-items: center; gap: 12px; overflow-wrap: anywhere; }
.th-contact__lines i { color: var(--bp-blue); width: 16px; }
.th-contact__lines a:hover { color: var(--bp-blue); }
.th-contact__lines span { color: var(--text-muted); }
.th-row { display: flex; gap: 12px; flex-wrap: wrap; }

/* ---------- Pied de page ---------- */
.th-footer { background: var(--bp-deep); color: #fff; padding: 56px var(--gutter) 32px; }
.th-footer__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); gap: 40px; align-items: start; }
.th-footer__col { display: flex; flex-direction: column; gap: 10px; }
.th-footer__logo { height: 24px; width: auto; display: block; align-self: flex-start; filter: brightness(0) invert(1); margin-bottom: 6px; }
.th-footer__text { font-size: 14px; font-weight: 300; color: rgba(255, 255, 255, .85); max-width: 34ch; }
.th-footer__title { font-family: var(--font-display); font-weight: 500; font-size: 13px; letter-spacing: .14em; text-transform: uppercase; color: var(--th-accent); }
.th-footer__col a { font-size: 14px; font-weight: 300; color: rgba(255, 255, 255, .85); }
.th-page .th-footer__col a:hover { color: #fff; }
.th-footer__bp { height: 34px; width: auto; display: block; filter: brightness(0) invert(1); margin: 4px 0; }
.th-footer__small { font-size: 13px; font-weight: 300; color: rgba(255, 255, 255, .75); max-width: 32ch; }
.th-footer__bottom {
    display: flex; flex-wrap: wrap; gap: 12px 28px; margin-top: 40px; padding-top: 20px;
    border-top: 1px solid rgba(255, 255, 255, .16);
    font-size: 12px; font-weight: 300; color: rgba(255, 255, 255, .7);
}
.th-footer__bottom a { color: rgba(255, 255, 255, .7); }
.th-page .th-footer__bottom a:hover { color: #fff; }
.th-footer__copy { margin-left: auto; }

/* ---------- Apparition au scroll ---------- */
.th-js [data-reveal] { opacity: 0; transform: translateY(18px); transition: opacity .5s var(--ease), transform .5s var(--ease); }
.th-js [data-reveal].is-visible { opacity: 1; transform: none; }

@media (max-width: 1080px) {
    .th-nav { display: none; }
    .th-header__actions { margin-left: auto; padding-left: 0; border-left: 0; }
}

@media (max-width: 640px) {
    .th-brand__sep, .th-brand__name { display: none; }
    .th-header__actions .th-btn { padding: 8px 14px; }
}

@media (max-width: 760px) {
    .th-hero__inner { grid-template-columns: 1fr; }
    .th-recap { position: static; }
    .th-footer__copy { margin-left: 0; }
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    .th-page *, .th-page *::before, .th-page *::after { animation: none !important; transition: none !important; }
    .th-js [data-reveal] { opacity: 1; transform: none; }
}

/* Options facultatives (ex. dîner) sur une carte de nuit : visibles une fois la nuit choisie */
.th-night__opts { display: none; flex-direction: column; gap: 10px; padding-top: 14px; border-top: 1px solid var(--deep-20); }
.th-night[aria-checked="true"] .th-night__opts:not([hidden]) { display: flex; }
.th-check--sm .th-check__label { font-size: 14px; }
.th-dinner__title { font-size: 22px; line-height: 1.2; }
.th-dinner { animation: th-rise .5s var(--ease) both; }
.th-contact a[aria-disabled="true"] { cursor: default; }

/* Encart dîner placé dans la grille des nuits : pleine largeur, après les nuits (ordinateur) */
.th-nights > .th-dinner { grid-column: 1 / -1; order: 1; }
/* Téléphone : nuits sur une colonne, chaque encart juste sous sa nuit */
@media (max-width: 640px) {
    .th-nights { grid-template-columns: 1fr; }
    .th-nights > .th-night { order: calc(var(--n) * 2); }
    .th-nights > .th-dinner { order: calc(var(--n) * 2 + 1); }
}
