/* Thème « Repas de la semaine » — services de repas préparés livrés à jour fixe.
   Mobile d'abord. Couleurs pilotées par les variables posées dans base.html. */

:root {
    --rp-accent: #1f5a3d;
    --rp-accent-ink: #143d29;
    --rp-accent-soft: #e4eee6;
    --rp-highlight: #e8a33d;
    --rp-bg: #f7f5ef;
    --rp-surface: #ffffff;
    --rp-ink: #18201b;
    --rp-muted: #56605a;
    --rp-line: #e2dfd5;
    --rp-danger: #a8321f;
    --rp-danger-soft: #fbe9e5;
    --rp-ok: #1f6b3f;
    --rp-ok-soft: #e3f2e8;
    --rp-radius: 20px;
    /* Marge latérale commune du contenu (les fonds restent bord à bord). */
    --rp-gutter: clamp(16px, 5vw, 24px);
    --rp-radius-sm: 12px;
    --rp-shadow: 0 1px 2px rgba(24, 32, 27, .06), 0 8px 24px rgba(24, 32, 27, .07);
    --rp-display: 'Fraunces', Georgia, 'Times New Roman', serif;
    --rp-body: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
    /* Univers séparé (ex. Saveurs d'Afrique) */
    --rp-u-bg: #2b1a10;
    --rp-u-bg2: #4a2614;
    --rp-u-accent: #e9a23b;
    --rp-u-terra: #c0582c;
    --rp-u-ink: #fbf3e7;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: 90px; }
body.rp {
    margin: 0;
    font-family: var(--rp-body);
    font-size: 16px;
    line-height: 1.55;
    color: var(--rp-ink);
    background: var(--rp-bg);
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}
.rp main { flex: 1 0 auto; }
.rp img { max-width: 100%; display: block; }
.rp a { color: inherit; }
.rp h1, .rp h2, .rp h3, .rp h4 { font-family: var(--rp-display); font-weight: 600; letter-spacing: -.015em; line-height: 1.12; margin: 0 0 .5em; }
.rp h1 { font-size: clamp(2.1rem, 5.6vw, 3.6rem); }
.rp h2 { font-size: clamp(1.7rem, 3.8vw, 2.5rem); }
.rp h3 { font-size: 1.2rem; }
.rp p { margin: 0 0 1em; }
.rp :focus-visible { outline: 3px solid var(--rp-ink); outline-offset: 2px; border-radius: 6px; }
.rp-hero :focus-visible, .rp-universe :focus-visible, .rp-footer :focus-visible, .rp-contact :focus-visible, .rp-cartbar:focus-visible { outline-color: #ffd38a; }
.rp-sr { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.rp-skip { position: absolute; left: 12px; top: -60px; z-index: 100; background: var(--rp-ink); color: #fff; padding: 10px 16px; border-radius: 10px; text-decoration: none; }
.rp-skip:focus { top: 12px; }
.rp-wrap { width: 100%; max-width: 1200px; margin: 0 auto; padding-inline: var(--rp-gutter); }
/* Aucune classe combinée à .rp-wrap (padding raccourci, style en ligne) ne
   doit retirer la marge latérale : sur mobile le contenu toucherait les bords. */
.rp .rp-wrap { padding-left: var(--rp-gutter); padding-right: var(--rp-gutter); }
.rp-section { padding: 64px 0; }
.rp-section--tight { padding: 40px 0; }
.rp-eyebrow { display: inline-flex; align-items: center; gap: 8px; font-size: .78rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--rp-accent); margin-bottom: 14px; }
.rp-eyebrow::before { content: ""; width: 22px; height: 2px; background: currentColor; }
.rp-lead { font-size: 1.12rem; color: var(--rp-muted); max-width: 60ch; }
.rp-muted { color: var(--rp-muted); }
.rp-head { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: 16px; margin-bottom: 28px; }
.rp-head h2 { margin: 0; }

/* Boutons */
.rp-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    min-height: 48px; padding: 12px 24px; border-radius: 999px; border: 2px solid var(--rp-accent);
    background: var(--rp-accent); color: #fff !important; font: 600 1rem/1.2 var(--rp-body);
    text-decoration: none; cursor: pointer; transition: transform .15s ease, background .15s ease, box-shadow .15s ease;
}
.rp-btn:hover { background: var(--rp-accent-ink); border-color: var(--rp-accent-ink); transform: translateY(-1px); box-shadow: 0 8px 20px rgba(20, 61, 41, .22); }
.rp-btn[disabled], .rp-btn.is-disabled { opacity: .55; cursor: not-allowed; transform: none; box-shadow: none; }
.rp-btn--ghost { background: transparent; color: var(--rp-accent) !important; }
.rp-btn--ghost:hover { background: var(--rp-accent-soft); color: var(--rp-accent-ink) !important; }
.rp-btn--light { background: #fff; border-color: #fff; color: var(--rp-accent-ink) !important; }
.rp-btn--light:hover { background: #f1efe7; border-color: #f1efe7; }
.rp-btn--outline-light { background: transparent; border-color: rgba(255, 255, 255, .7); color: #fff !important; }
.rp-btn--outline-light:hover { background: rgba(255, 255, 255, .12); border-color: #fff; }
.rp-btn--sm { min-height: 40px; padding: 8px 16px; font-size: .92rem; }
.rp-btn--block { width: 100%; }
.rp-icon-btn { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--rp-line); background: #fff; color: var(--rp-ink); cursor: pointer; }
.rp-icon-btn:hover { border-color: var(--rp-accent); color: var(--rp-accent); }

/* Barre d'annonce + en-tête */
.rp-announce { background: var(--rp-accent-ink); color: #fff; font-size: .9rem; text-align: center; padding: 9px 16px; }
.rp-announce strong { color: #ffd38a; font-weight: 700; }
.rp-header { position: sticky; top: 0; z-index: 40; background: rgba(255, 255, 255, .94); backdrop-filter: saturate(1.4) blur(10px); border-bottom: 1px solid var(--rp-line); }
.rp-bar { display: flex; align-items: center; gap: 16px; min-height: 72px; }
.rp-brand { display: inline-flex; align-items: center; gap: 10px; text-decoration: none; font: 600 1.3rem/1 var(--rp-display); color: var(--rp-ink); margin-right: auto; }
.rp-brand img { height: 40px; width: auto; }
.rp-mark { display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; border-radius: 12px; background: var(--rp-accent); color: #fff; font-size: 1.1rem; }
.rp-nav { display: none; align-items: center; gap: 4px; }
.rp-nav a { text-decoration: none; padding: 10px 14px; border-radius: 999px; font-weight: 500; color: var(--rp-ink); }
.rp-nav a:hover, .rp-nav a[aria-current="page"] { background: var(--rp-accent-soft); color: var(--rp-accent-ink); }
.rp-nav a.rp-nav-universe { color: #a3441d; }
.rp-nav a.rp-nav-universe:hover, .rp-nav a.rp-nav-universe[aria-current="page"] { background: #f8e7da; color: #8a3a17; }
.rp-cart-link { position: relative; display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 8px 16px; border-radius: 999px; background: var(--rp-accent); color: #fff !important; text-decoration: none; font-weight: 600; }
.rp-cart-link b { display: inline-flex; min-width: 22px; height: 22px; padding: 0 6px; align-items: center; justify-content: center; border-radius: 999px; background: #fff; color: var(--rp-accent-ink); font-size: .78rem; }
.rp-cart-link .rp-cart-label { display: none; }
.rp-menu-toggle { display: inline-flex; }
.rp-mobile-nav { display: none; border-top: 1px solid var(--rp-line); background: #fff; }
.rp-mobile-nav.is-open { display: block; }
.rp-mobile-nav a { display: block; padding: 14px 20px; border-bottom: 1px solid var(--rp-line); text-decoration: none; font-weight: 500; }
.rp-mobile-nav a.rp-nav-universe { color: #a3441d; }

/* Alertes */
.rp-alert { display: flex; gap: 10px; align-items: flex-start; padding: 14px 16px; border-radius: var(--rp-radius-sm); border: 1px solid transparent; margin: 0 0 16px; font-size: .95rem; }
.rp-alert--warn { background: #fff4e0; border-color: #f1d29a; color: #6b4300; }
.rp-alert--ok { background: var(--rp-ok-soft); border-color: #b7dcc4; color: var(--rp-ok); }
.rp-alert--error { background: var(--rp-danger-soft); border-color: #efc1b7; color: var(--rp-danger); }
.rp-alert--info { background: var(--rp-accent-soft); border-color: #c7dccd; color: var(--rp-accent-ink); }
.rp-flashes { padding-top: 16px; }

/* Hero */
.rp-hero { position: relative; overflow: hidden; background: radial-gradient(120% 120% at 0% 0%, #2b6a48 0%, var(--rp-accent-ink) 60%); color: #fff; }
.rp-hero-grid { display: grid; gap: 32px; padding-block: 40px 48px; align-items: center; }
.rp-hero h1 { color: #fff; }
.rp-hero .rp-eyebrow { color: #ffd38a; }
.rp-hero-sub { font-size: 1.15rem; color: rgba(255, 255, 255, .86); max-width: 52ch; }
.rp-hero-actions { display: flex; flex-wrap: wrap; gap: 12px; margin: 26px 0; }
.rp-hero-media { position: relative; }
.rp-hero-media img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 28px; box-shadow: 0 30px 60px rgba(0, 0, 0, .35); }
.rp-hero-chip { position: absolute; left: 16px; bottom: -18px; display: flex; gap: 12px; align-items: center; background: #fff; color: var(--rp-ink); border-radius: 18px; padding: 12px 16px; box-shadow: var(--rp-shadow); max-width: calc(100% - 32px); }
.rp-hero-chip i { font-size: 1.5rem; color: var(--rp-accent); }
.rp-hero-chip small { display: block; color: var(--rp-muted); font-size: .8rem; }
.rp-hero-chip strong { display: block; font-size: .98rem; }
.rp-hero-facts { display: flex; flex-wrap: wrap; gap: 8px 18px; margin: 0; padding: 0; list-style: none; color: rgba(255, 255, 255, .85); font-size: .92rem; }
.rp-hero-facts i { color: #ffd38a; margin-right: 6px; }

/* Vérificateur de code postal */
.rp-postal { background: #fff; color: var(--rp-ink); border-radius: var(--rp-radius); padding: 18px; box-shadow: var(--rp-shadow); max-width: 520px; }
.rp-postal label { display: block; font-weight: 600; margin-bottom: 8px; }
.rp-postal-row { display: flex; gap: 8px; }
.rp-postal-row input { flex: 1; min-width: 0; text-transform: uppercase; }
.rp-postal-result { margin-top: 10px; font-size: .93rem; min-height: 1.2em; }
.rp-postal-result.is-ok { color: var(--rp-ok); }
.rp-postal-result.is-error { color: var(--rp-danger); }

/* Formulaires */
.rp-field { margin-bottom: 16px; }
.rp-field label, .rp-label { display: block; font-weight: 600; font-size: .93rem; margin-bottom: 6px; color: var(--rp-ink); }
.rp-field .rp-hint { font-size: .85rem; color: var(--rp-muted); margin-top: 6px; }
.rp-input, .rp select, .rp textarea, .rp input[type="text"], .rp input[type="email"], .rp input[type="tel"], .rp input[type="password"], .rp input[type="search"], .rp input[type="number"] {
    width: 100%; min-height: 48px; padding: 11px 14px; border: 1.5px solid #c9cfc8; border-radius: var(--rp-radius-sm);
    background: #fff; color: var(--rp-ink); font: 400 1rem/1.4 var(--rp-body);
}
.rp textarea { min-height: 96px; resize: vertical; }
.rp input:focus, .rp select:focus, .rp textarea:focus { outline: none; border-color: var(--rp-accent); box-shadow: 0 0 0 4px rgba(31, 90, 61, .16); }
.rp input[aria-invalid="true"] { border-color: var(--rp-danger); }
.rp-grid-2 { display: grid; gap: 0 16px; }
.rp-choice { display: flex; gap: 12px; align-items: flex-start; padding: 14px 16px; border: 1.5px solid #c9cfc8; border-radius: var(--rp-radius-sm); background: #fff; cursor: pointer; margin-bottom: 10px; }
.rp-choice input { margin-top: 3px; accent-color: var(--rp-accent); width: 18px; height: 18px; }
.rp-choice:has(input:checked) { border-color: var(--rp-accent); background: var(--rp-accent-soft); }
.rp-choice small { display: block; color: var(--rp-muted); }

/* Cartes produit */
.rp-grid { display: grid; gap: 18px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr)); }
.rp-card { position: relative; display: flex; flex-direction: column; background: var(--rp-surface); border-radius: var(--rp-radius); overflow: hidden; box-shadow: var(--rp-shadow); transition: transform .2s ease, box-shadow .2s ease; }
.rp-card:hover { transform: translateY(-4px); box-shadow: 0 14px 34px rgba(24, 32, 27, .12); }
.rp-card-media { position: relative; display: block; aspect-ratio: 4 / 3; background: #ece8dc; overflow: hidden; }
.rp-card-media img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; }
.rp-card:hover .rp-card-media img { transform: scale(1.04); }
.rp-card-empty { display: flex; width: 100%; height: 100%; align-items: center; justify-content: center; font-size: 2.4rem; color: #b5ae9b; }
.rp-tags { position: absolute; top: 12px; left: 12px; display: flex; flex-wrap: wrap; gap: 6px; }
.rp-tag { display: inline-flex; align-items: center; gap: 4px; padding: 4px 10px; border-radius: 999px; font-size: .75rem; font-weight: 700; background: #fff; color: var(--rp-ink); }
.rp-tag--meal { background: var(--rp-accent); color: #fff; }
.rp-tag--hl { background: var(--rp-highlight); color: #2a1c05; }
.rp-tag--promo { background: var(--rp-danger); color: #fff; }
.rp-card-body { display: flex; flex-direction: column; gap: 6px; padding: 16px 18px 18px; flex: 1; }
.rp-card-title { font: 600 1.08rem/1.25 var(--rp-display); text-decoration: none; color: var(--rp-ink); }
.rp-card-title::after { content: ""; position: absolute; inset: 0; }
.rp-card-desc { font-size: .9rem; color: var(--rp-muted); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; margin: 0; }
.rp-card-meta { font-size: .82rem; color: var(--rp-muted); display: flex; flex-wrap: wrap; gap: 4px 12px; }
.rp-card-foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: auto; padding-top: 8px; }
.rp-price { font-weight: 700; font-size: 1.1rem; color: var(--rp-ink); }
.rp-price small { font-weight: 500; font-size: .8rem; color: var(--rp-muted); margin-right: 4px; }
.rp-price s { font-weight: 400; color: var(--rp-muted); font-size: .9rem; margin-left: 6px; }
.rp-add { position: relative; z-index: 2; display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 42px; padding: 8px 16px; border-radius: 999px; border: 0; background: var(--rp-accent); color: #fff; font: 600 .92rem/1 var(--rp-body); cursor: pointer; text-decoration: none; }
.rp-add:hover { background: var(--rp-accent-ink); }
.rp-out { font-size: .85rem; font-weight: 600; color: var(--rp-danger); }

/* Concept, étapes, zones, FAQ, contact */
.rp-split { display: grid; gap: 32px; align-items: center; }
.rp-split img { width: 100%; aspect-ratio: 5 / 4; object-fit: cover; border-radius: 28px; box-shadow: var(--rp-shadow); }
.rp-checks { list-style: none; padding: 0; margin: 18px 0 0; display: grid; gap: 10px; }
.rp-checks li { display: flex; gap: 10px; align-items: flex-start; }
.rp-checks i { color: var(--rp-accent); font-size: 1.2rem; line-height: 1.3; }
.rp-steps { display: grid; gap: 16px; counter-reset: step; list-style: none; padding: 0; margin: 0; }
.rp-step { background: #fff; border-radius: var(--rp-radius); padding: 24px; box-shadow: var(--rp-shadow); }
.rp-step-num { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 50%; background: var(--rp-accent-soft); color: var(--rp-accent-ink); font: 700 1.1rem/1 var(--rp-display); margin-bottom: 14px; }
.rp-step p { margin: 0; color: var(--rp-muted); font-size: .95rem; }
.rp-band { background: var(--rp-accent-soft); }
.rp-zones { display: grid; gap: 24px; align-items: start; }
.rp-zone-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.rp-zone-list li { background: #fff; border-radius: var(--rp-radius-sm); padding: 14px 16px; display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.rp-zone-codes { color: var(--rp-muted); font-size: .88rem; }
.rp-faq { display: grid; gap: 10px; max-width: 820px; }
.rp-faq details { background: #fff; border-radius: var(--rp-radius-sm); padding: 0 18px; box-shadow: var(--rp-shadow); }
.rp-faq summary { cursor: pointer; list-style: none; padding: 18px 28px 18px 0; font-weight: 600; position: relative; }
.rp-faq summary::-webkit-details-marker { display: none; }
.rp-faq summary::after { content: "+"; position: absolute; right: 0; top: 14px; font-size: 1.4rem; color: var(--rp-accent); }
.rp-faq details[open] summary::after { content: "–"; }
.rp-faq details p { color: var(--rp-muted); padding-bottom: 18px; margin: 0; }
.rp-contact { background: var(--rp-accent); color: #fff; border-radius: 28px; padding: 36px 24px; display: grid; gap: 20px; }
.rp-contact h2 { color: #fff; }
.rp-contact p { color: rgba(255, 255, 255, .86); }
.rp-contact-links { display: flex; flex-wrap: wrap; gap: 10px; }

/* Univers séparé (ex. Saveurs d'Afrique) */
.rp-universe { position: relative; color: var(--rp-u-ink); background: linear-gradient(160deg, var(--rp-u-bg2), var(--rp-u-bg) 65%); overflow: hidden; }
.rp-universe::before { content: ""; position: absolute; inset: 0 0 auto 0; height: 10px; background: repeating-linear-gradient(90deg, var(--rp-u-accent) 0 28px, var(--rp-u-terra) 28px 56px, #1d5b3a 56px 84px, #f4e3c3 84px 112px); }
.rp-universe h1, .rp-universe h2, .rp-universe h3 { color: var(--rp-u-ink); }
.rp-universe .rp-eyebrow { color: var(--rp-u-accent); }
.rp-universe .rp-lead, .rp-universe .rp-muted { color: rgba(251, 243, 231, .8); }
.rp-universe .rp-card { background: #3a2316; box-shadow: 0 10px 30px rgba(0, 0, 0, .25); }
.rp-universe .rp-card-title, .rp-universe .rp-price { color: var(--rp-u-ink); }
.rp-universe .rp-card-desc, .rp-universe .rp-card-meta { color: rgba(251, 243, 231, .78); }
.rp-universe .rp-add { background: var(--rp-u-accent); color: #2a1503; }
.rp-universe .rp-add:hover { background: #f3b75b; }
.rp-universe .rp-btn { background: var(--rp-u-accent); border-color: var(--rp-u-accent); color: #2a1503 !important; }
.rp-universe .rp-btn:hover { background: #f3b75b; border-color: #f3b75b; }
.rp-universe .rp-chip { background: rgba(255, 255, 255, .08); color: var(--rp-u-ink); border-color: rgba(255, 255, 255, .2); }
.rp-universe .rp-chip[aria-current="page"], .rp-universe .rp-chip:hover { background: var(--rp-u-accent); color: #2a1503; border-color: var(--rp-u-accent); }
.rp-universe-hero { padding-block: 48px 28px; display: grid; gap: 24px; align-items: center; }
.rp-universe-hero img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; border-radius: 28px; }
.rp-scroller { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(250px, 78%); gap: 16px; overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: 12px; }
.rp-scroller > * { scroll-snap-align: start; }

/* Menu : en-tête de page, onglets, recherche */
.rp-pagehead { padding-block: 40px 8px; }
.rp-chips { display: flex; gap: 8px; overflow-x: auto; padding: 4px 2px 12px; scrollbar-width: thin; }
.rp-chip { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 6px; min-height: 42px; padding: 8px 16px; border-radius: 999px; border: 1.5px solid var(--rp-line); background: #fff; color: var(--rp-ink); text-decoration: none; font-weight: 500; white-space: nowrap; }
.rp-chip:hover, .rp-chip[aria-current="page"] { border-color: var(--rp-accent); background: var(--rp-accent); color: #fff; }
.rp-chip--universe { border-color: #e6b394; color: #8a3a17; background: #fdf3ec; }
.rp-sticky-tabs { position: sticky; top: 72px; z-index: 30; background: var(--rp-bg); padding-top: 10px; }
.rp-search { display: flex; gap: 8px; max-width: 460px; margin: 8px 0 20px; }
.rp-menu-section { padding: 28px 0 8px; }
.rp-menu-section h2 { font-size: 1.6rem; }
.rp-delivery-strip { display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: center; background: #fff; border-radius: var(--rp-radius-sm); padding: 12px 16px; box-shadow: var(--rp-shadow); font-size: .93rem; }
.rp-delivery-strip i { color: var(--rp-accent); }
.rp-universe .rp-delivery-strip { background: rgba(255, 255, 255, .08); box-shadow: none; color: var(--rp-u-ink); }
.rp-universe .rp-delivery-strip i { color: var(--rp-u-accent); }
.rp-empty { text-align: center; padding: 56px 16px; }
.rp-empty i { font-size: 3rem; color: #b5ae9b; }

/* Fiche produit */
.rp-product { display: grid; gap: 32px; padding: 28px 0 56px; }
.rp-gallery-main { aspect-ratio: 1 / 1; border-radius: 28px; overflow: hidden; background: #ece8dc; }
.rp-gallery-main img { width: 100%; height: 100%; object-fit: cover; }
.rp-thumbs { display: flex; gap: 10px; margin-top: 12px; }
.rp-thumbs button { width: 72px; height: 72px; padding: 0; border-radius: 14px; overflow: hidden; border: 2px solid transparent; background: none; cursor: pointer; }
.rp-thumbs button[aria-pressed="true"] { border-color: var(--rp-accent); }
.rp-thumbs img { width: 100%; height: 100%; object-fit: cover; }
.rp-crumbs { font-size: .88rem; color: var(--rp-muted); margin-bottom: 12px; }
.rp-crumbs a { color: var(--rp-muted); }
.rp-product-price { font-size: 1.8rem; font-weight: 700; margin: 8px 0 4px; }
.rp-product-price s { font-size: 1.1rem; color: var(--rp-muted); font-weight: 400; margin-left: 8px; }
.rp-variants { border: 0; padding: 0; margin: 20px 0 6px; }
.rp-variants legend { font-weight: 600; margin-bottom: 10px; padding: 0; }
.rp-variant-opts { display: flex; flex-wrap: wrap; gap: 10px; }
.rp-variant { position: relative; }
.rp-variant input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.rp-variant span { display: inline-flex; flex-direction: column; align-items: center; min-width: 96px; padding: 10px 16px; border: 1.5px solid #c9cfc8; border-radius: 14px; background: #fff; cursor: pointer; font-weight: 600; }
.rp-variant span small { font-weight: 500; color: var(--rp-muted); font-size: .82rem; }
.rp-variant input:checked + span { border-color: var(--rp-accent); background: var(--rp-accent-soft); box-shadow: inset 0 0 0 1px var(--rp-accent); }
.rp-variant input:focus-visible + span { outline: 3px solid var(--rp-ink); outline-offset: 2px; }
.rp-variant input:disabled + span { opacity: .45; text-decoration: line-through; cursor: not-allowed; }
.rp-buy { display: flex; gap: 12px; flex-wrap: wrap; margin: 18px 0; }
.rp-qty { display: inline-flex; align-items: center; border: 1.5px solid #c9cfc8; border-radius: 999px; background: #fff; }
.rp-qty button { width: 44px; height: 46px; border: 0; background: none; font-size: 1.25rem; cursor: pointer; color: var(--rp-ink); border-radius: 999px; }
.rp-qty input { width: 48px; min-height: 44px !important; border: 0 !important; text-align: center; padding: 0 !important; box-shadow: none !important; font-weight: 600; -moz-appearance: textfield; }
.rp-qty input::-webkit-outer-spin-button, .rp-qty input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.rp-buy .rp-btn { flex: 1 1 220px; }
.rp-facts { display: grid; gap: 10px; margin: 18px 0; padding: 0; list-style: none; }
.rp-facts li { display: flex; gap: 10px; align-items: flex-start; font-size: .95rem; }
.rp-facts i { color: var(--rp-accent); font-size: 1.1rem; }
.rp-panel { background: #fff; border-radius: var(--rp-radius); padding: 20px; box-shadow: var(--rp-shadow); margin-top: 16px; }
.rp-panel h2, .rp-panel h3 { font-size: 1.15rem; }
.rp-allergens { background: #fff4e0; border: 1px solid #f1d29a; color: #5f3c00; border-radius: var(--rp-radius-sm); padding: 12px 14px; font-size: .93rem; }
.rp-nutrition { width: 100%; border-collapse: collapse; font-size: .95rem; }
.rp-nutrition th, .rp-nutrition td { text-align: left; padding: 8px 0; border-bottom: 1px solid var(--rp-line); }
.rp-nutrition td { text-align: right; font-weight: 600; }
.rp-description { color: #2d362f; }

/* Panier & commande */
.rp-cart { display: grid; gap: 24px; padding: 28px 0 64px; align-items: start; }
.rp-lines { list-style: none; margin: 0; padding: 0; background: #fff; border-radius: var(--rp-radius); box-shadow: var(--rp-shadow); }
.rp-line { display: grid; grid-template-columns: 76px 1fr; gap: 14px; padding: 16px; border-bottom: 1px solid var(--rp-line); }
.rp-line:last-child { border-bottom: 0; }
.rp-line-img { width: 76px; height: 76px; border-radius: 14px; overflow: hidden; background: #ece8dc; }
.rp-line-img img { width: 100%; height: 100%; object-fit: cover; }
.rp-line-title { font-weight: 600; text-decoration: none; }
.rp-line-sub { font-size: .87rem; color: var(--rp-muted); }
.rp-line-actions { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 10px; flex-wrap: wrap; }
.rp-line-actions .rp-qty button { width: 38px; height: 38px; }
.rp-line-actions .rp-qty input { width: 40px; min-height: 38px !important; }
.rp-link-btn { border: 0; background: none; color: var(--rp-danger); font: 500 .88rem/1 var(--rp-body); cursor: pointer; text-decoration: underline; padding: 8px 4px; }
.rp-summary { background: #fff; border-radius: var(--rp-radius); padding: 22px; box-shadow: var(--rp-shadow); }
.rp-summary h2 { font-size: 1.35rem; }
.rp-summary-row { display: flex; justify-content: space-between; gap: 12px; padding: 7px 0; font-size: .97rem; }
.rp-summary-row.is-total { border-top: 1px solid var(--rp-line); margin-top: 8px; padding-top: 14px; font-size: 1.2rem; font-weight: 700; }
.rp-summary-row .is-free { color: var(--rp-ok); font-weight: 600; }
.rp-delivery-card { display: flex; gap: 14px; align-items: flex-start; background: var(--rp-accent-soft); border-radius: var(--rp-radius-sm); padding: 14px 16px; margin-bottom: 16px; }
.rp-delivery-card i { font-size: 1.6rem; color: var(--rp-accent); line-height: 1; }
.rp-delivery-card strong { display: block; font-size: 1.05rem; }
.rp-delivery-card small { color: var(--rp-muted); }
.rp-progress-box { border: 1px dashed #b7c9bb; border-radius: var(--rp-radius-sm); padding: 12px 14px; margin-bottom: 16px; font-size: .93rem; }
.rp-progress { height: 10px; background: #e7ebe5; border-radius: 999px; overflow: hidden; margin-top: 8px; }
.rp-progress span { display: block; height: 100%; background: linear-gradient(90deg, var(--rp-accent), #3f9a63); border-radius: inherit; transition: width .3s ease; }
.rp-progress-box.is-done { border-style: solid; border-color: #b7dcc4; background: var(--rp-ok-soft); color: var(--rp-ok); }
.rp-checkout { display: grid; gap: 24px; padding: 20px 0 64px; align-items: start; }
.rp-form-card { background: #fff; border-radius: var(--rp-radius); padding: 22px; box-shadow: var(--rp-shadow); margin-bottom: 18px; }
.rp-form-card h2 { font-size: 1.3rem; display: flex; align-items: center; gap: 10px; }
.rp-form-card h2 .rp-step-num { width: 32px; height: 32px; font-size: .95rem; margin: 0; }
.rp-saved { display: flex; gap: 12px; align-items: flex-start; background: var(--rp-accent-soft); border-radius: var(--rp-radius-sm); padding: 14px; margin-bottom: 14px; }
.rp-hidden { display: none !important; }
.rp-confirm { text-align: center; padding-block: 40px 16px; }
.rp-confirm-icon { display: inline-flex; width: 72px; height: 72px; align-items: center; justify-content: center; border-radius: 50%; background: var(--rp-ok-soft); color: var(--rp-ok); font-size: 2.2rem; margin-bottom: 14px; }
.rp-narrow { max-width: 760px; margin: 0 auto; }
.rp-timeline { list-style: none; padding: 0; margin: 0; display: grid; gap: 10px; }
.rp-timeline li { display: flex; gap: 10px; align-items: center; color: var(--rp-muted); }
.rp-timeline li.is-done { color: var(--rp-ok); font-weight: 600; }
.rp-timeline li.is-current { color: var(--rp-accent-ink); font-weight: 700; }
.rp-orders { width: 100%; border-collapse: collapse; font-size: .95rem; }
.rp-orders th, .rp-orders td { padding: 10px 8px; border-bottom: 1px solid var(--rp-line); text-align: left; }

/* Barre panier mobile */
.rp-cartbar { position: fixed; left: 12px; right: 12px; bottom: 12px; z-index: 45; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 10px 10px 18px; border-radius: 999px; background: var(--rp-ink); color: #fff; text-decoration: none; box-shadow: 0 12px 30px rgba(0, 0, 0, .3); }
.rp-cartbar strong { font-weight: 700; }
.rp-cartbar span.rp-btn { min-height: 40px; padding: 8px 16px; }
body.has-cartbar { padding-bottom: 84px; }

/* Pied de page */
.rp-footer { background: var(--rp-accent-ink); color: rgba(255, 255, 255, .82); padding: 48px 0 24px; margin-top: 40px; }
.rp-footer a { color: #fff; }
.rp-footer h2 { color: #fff; font: 600 1rem/1.2 var(--rp-body); letter-spacing: .04em; text-transform: uppercase; margin-bottom: 12px; }
.rp-footer-grid { display: grid; gap: 28px; }
.rp-footer ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.rp-footer-legal { border-top: 1px solid rgba(255, 255, 255, .15); margin-top: 28px; padding-top: 18px; font-size: .85rem; display: flex; flex-wrap: wrap; justify-content: space-between; gap: 10px; }
.rp-pre { white-space: pre-line; }

/* Toast */
.rp-toast { position: fixed; left: 50%; bottom: 96px; transform: translateX(-50%); z-index: 60; background: var(--rp-ink); color: #fff; padding: 12px 18px; border-radius: 14px; box-shadow: 0 10px 30px rgba(0, 0, 0, .3); font-size: .95rem; max-width: calc(100% - 32px); }
.rp-toast.is-error { background: var(--rp-danger); }

/* WhatsApp */
.rp-wa { position: fixed; right: 16px; bottom: 16px; z-index: 44; width: 54px; height: 54px; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; background: #1f8f4e; color: #fff !important; font-size: 1.6rem; box-shadow: 0 10px 24px rgba(0, 0, 0, .25); text-decoration: none; }
body.has-cartbar .rp-wa { bottom: 88px; }

@media (min-width: 640px) {
    .rp-grid-2 { grid-template-columns: 1fr 1fr; }
    .rp-steps { grid-template-columns: repeat(2, 1fr); }
    .rp-scroller { grid-auto-columns: minmax(260px, 42%); }
    .rp-cart-link .rp-cart-label { display: inline; }
}
@media (min-width: 960px) {
    .rp-section { padding: 88px 0; }
    .rp-nav { display: flex; }
    .rp-menu-toggle { display: none; }
    .rp-mobile-nav, .rp-mobile-nav.is-open { display: none; }
    .rp-hero-grid { grid-template-columns: 1.05fr 1fr; gap: 56px; padding-block: 72px 88px; }
    .rp-split { grid-template-columns: 1fr 1fr; gap: 64px; }
    .rp-steps { grid-template-columns: repeat(4, 1fr); }
    .rp-zones { grid-template-columns: 1fr 1fr; gap: 48px; }
    .rp-contact { grid-template-columns: 1.4fr 1fr; align-items: center; padding: 48px; }
    .rp-universe-hero { grid-template-columns: 1fr 1fr; gap: 48px; padding-block: 64px 36px; }
    .rp-scroller { grid-auto-flow: row; grid-template-columns: repeat(3, 1fr); overflow: visible; }
    .rp-product { grid-template-columns: 1.05fr 1fr; gap: 56px; padding: 40px 0 72px; }
    .rp-cart { grid-template-columns: 1.5fr 1fr; }
    .rp-checkout { grid-template-columns: 1.5fr 1fr; }
    .rp-summary { position: sticky; top: 92px; }
    .rp-footer-grid { grid-template-columns: 1.5fr 1fr 1fr; }
    .rp-cartbar { display: none; }
    body.has-cartbar { padding-bottom: 0; }
    body.has-cartbar .rp-wa { bottom: 16px; }
}
@media (prefers-reduced-motion: reduce) {
    .rp *, .rp *::before, .rp *::after { transition: none !important; scroll-behavior: auto !important; }
}
@media print {
    .rp-header, .rp-announce, .rp-footer, .rp-cartbar, .rp-wa { display: none !important; }
}
.rp-universe .rp-price small, .rp-universe .rp-price s { color: rgba(251, 243, 231, .75); }

/* ════════════════════════════════════════════════════════════════════════
   Couche créative et animations (v1.1)
   Décor statique ici ; tout mouvement est déclaré plus bas dans
   @media (prefers-reduced-motion: no-preference). Seuls transform /
   translate / scale / opacity sont animés.
   ════════════════════════════════════════════════════════════════════════ */

/* Formes organiques du bandeau d'accueil */
.rp-hero > .rp-wrap { position: relative; z-index: 1; }
.rp-blob { position: absolute; z-index: 0; pointer-events: none; border-radius: 42% 58% 63% 37% / 41% 44% 56% 59%; }
.rp-blob--a { width: 520px; height: 520px; left: -180px; top: -200px; background: radial-gradient(circle at 30% 30%, rgba(255, 211, 138, .22), rgba(255, 211, 138, 0) 70%); }
.rp-blob--b { width: 460px; height: 460px; right: -160px; bottom: -120px; background: radial-gradient(circle at 60% 40%, rgba(120, 190, 140, .28), rgba(120, 190, 140, 0) 70%); }
.rp-blob--c { width: 90px; height: 90px; right: 46%; top: 12%; border: 2px dashed rgba(255, 211, 138, .35); background: none; }

/* Trait « dessiné à la main » sous le titre d'accueil */
.rp-squiggle { display: block; width: 180px; height: 18px; margin: -6px 0 14px; color: #ffd38a; overflow: visible; }
.rp-squiggle path { fill: none; stroke: currentColor; stroke-width: 4; stroke-linecap: round; }

/* Image d'accueil : vapeur et mini-assiettes en orbite */
.rp-hero-media { isolation: isolate; }
.rp-hero-plate { position: relative; }
.rp-steam { position: absolute; left: 50%; top: -9%; width: 140px; height: 140px; margin-left: -70px; pointer-events: none; color: rgba(255, 255, 255, .8); }
.rp-steam path { fill: none; stroke: currentColor; stroke-width: 6; stroke-linecap: round; opacity: 0; }
.rp-orbit { position: absolute; z-index: 2; width: 92px; height: 92px; border-radius: 50%; overflow: hidden; border: 4px solid #fff; box-shadow: 0 14px 30px rgba(0, 0, 0, .3); background: #ece8dc; }
.rp-orbit img { width: 100%; height: 100%; object-fit: cover; aspect-ratio: auto; border-radius: 0; box-shadow: none; }
.rp-orbit--1 { right: -18px; top: -22px; }
.rp-orbit--2 { left: -26px; top: 38%; width: 74px; height: 74px; }
.rp-hero-chip [data-rp-countdown] { display: block; color: var(--rp-accent); font-weight: 600; font-size: .8rem; }

/* Vagues de séparation */
.rp-wave { display: block; width: 100%; height: 56px; color: var(--rp-bg); }
.rp-wave--hero { position: relative; z-index: 1; margin-top: -1px; }
.rp-universe .rp-wave { position: relative; z-index: 1; }
.rp-wave--flip { transform: scaleY(-1); }

/* Bandeau défilant (infos de livraison) */
.rp-ticker { position: relative; display: flex; align-items: center; gap: 10px; padding-inline: var(--rp-gutter); background: var(--rp-bg); border-bottom: 1px solid var(--rp-line); overflow: hidden; }
.rp-ticker-viewport { flex: 1; overflow: hidden; mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent); -webkit-mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent); }
.rp-ticker-track { display: flex; width: max-content; }
.rp-ticker ul { display: flex; flex-shrink: 0; margin: 0; padding: 14px 0; list-style: none; }
.rp-ticker li { display: inline-flex; align-items: center; gap: 14px; padding-right: 14px; white-space: nowrap; font: 600 1.02rem/1.2 var(--rp-display); color: var(--rp-accent-ink); }
.rp-ticker li::after { content: ""; width: 16px; height: 16px; background: var(--rp-highlight); clip-path: polygon(50% 0, 61% 39%, 100% 50%, 61% 61%, 50% 100%, 39% 61%, 0 50%, 39% 39%); }
.rp-ticker-toggle { flex: 0 0 auto; width: 36px; height: 36px; border-radius: 50%; border: 1px solid var(--rp-line); background: #fff; color: var(--rp-ink); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }

/* Étapes reliées par un pointillé (desktop) */
.rp-steps { position: relative; }
.rp-step { position: relative; }
.rp-step-num { position: relative; z-index: 1; }

/* Cartes : inclinaison au pointeur (variables posées par repas.js) */
.rp-card { transform: perspective(900px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg)) translateY(var(--lift, 0)); }
.rp-card:hover { transform: perspective(900px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg)) translateY(-6px); }
.rp-card-media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(115deg, rgba(255, 255, 255, 0) 40%, rgba(255, 255, 255, .28) 50%, rgba(255, 255, 255, 0) 60%); translate: -120% 0; pointer-events: none; }

/* Bouton d'ajout : confirmation visuelle */
.rp-add, #rpAddBtn { position: relative; overflow: hidden; }
.rp-add-done { position: absolute; inset: 0; display: inline-flex; align-items: center; justify-content: center; gap: 6px; background: var(--rp-ok); color: #fff; opacity: 0; translate: 0 100%; border-radius: inherit; pointer-events: none; }
.rp-universe .rp-add-done { background: #f3b75b; color: #2a1503; }
.is-added .rp-add-done { opacity: 1; translate: 0 0; }

/* Univers séparé : motif inspiré du wax / bogolan */
.rp-universe::after {
    content: ""; position: absolute; inset: -160px; z-index: 0; pointer-events: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160' viewBox='0 0 160 160'%3E%3Cg fill='none' stroke='%23e9a23b' stroke-opacity='.13' stroke-width='3'%3E%3Ccircle cx='40' cy='40' r='22'/%3E%3Ccircle cx='40' cy='40' r='11'/%3E%3Cpath d='M88 18l12 12-12 12-12-12z'/%3E%3Cpath d='M0 92l20-14 20 14 20-14 20 14 20-14 20 14 20-14 20 14'/%3E%3Cpath d='M112 112h28v28h-28z'/%3E%3Cpath d='M118 118h16v16h-16z'/%3E%3C/g%3E%3Cg fill='%23f4e3c3' fill-opacity='.12'%3E%3Ccircle cx='96' cy='128' r='3'/%3E%3Ccircle cx='24' cy='128' r='3'/%3E%3Ccircle cx='60' cy='142' r='3'/%3E%3Ccircle cx='140' cy='40' r='4'/%3E%3C/g%3E%3C/svg%3E");
}
.rp-universe > * { position: relative; z-index: 1; }
.rp-universe--wavy::before { display: none; }
.rp-universe--wavy { padding: 0; }
.rp-universe--wavy > .rp-wrap { padding-top: 32px; padding-bottom: 40px; }
.rp-universe-hero img { box-shadow: 0 30px 60px rgba(0, 0, 0, .35); }

/* Indicateur d'étapes du tunnel (panier → coordonnées → confirmation) */
.rp-progress-steps { --done: 0; position: relative; display: grid; grid-template-columns: repeat(3, 1fr); list-style: none; margin: 0 0 22px; padding: 0; max-width: 560px; }
.rp-progress-steps::before, .rp-progress-steps::after { content: ""; position: absolute; left: 16.66%; right: 16.66%; top: 15px; height: 4px; border-radius: 4px; background: #dcdfd8; }
.rp-progress-steps::after { background: var(--rp-accent); transform-origin: left center; transform: scaleX(var(--done)); }
.rp-progress-steps li { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center; font-size: .82rem; color: var(--rp-muted); }
.rp-progress-steps .rp-dot { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 50%; background: #fff; border: 3px solid #dcdfd8; font-weight: 700; color: var(--rp-muted); }
.rp-progress-steps li.is-done .rp-dot { background: var(--rp-accent); border-color: var(--rp-accent); color: #fff; }
.rp-progress-steps li.is-current { color: var(--rp-accent-ink); font-weight: 700; }
.rp-progress-steps li.is-current .rp-dot { border-color: var(--rp-accent); color: var(--rp-accent-ink); box-shadow: 0 0 0 6px color-mix(in srgb, var(--rp-accent) 18%, transparent); }

/* Confirmation : coche dessinée et confettis */
.rp-celebrate { position: relative; display: inline-flex; width: 96px; height: 96px; margin-bottom: 14px; }
.rp-celebrate svg { width: 96px; height: 96px; }
.rp-celebrate circle { fill: var(--rp-ok-soft); stroke: var(--rp-ok); stroke-width: 4; }
.rp-celebrate path { fill: none; stroke: var(--rp-ok); stroke-width: 7; stroke-linecap: round; stroke-linejoin: round; }
.rp-confetti { position: absolute; left: 50%; top: 50%; width: 10px; height: 10px; margin: -5px; border-radius: 3px; opacity: 0; pointer-events: none; }
.rp-confetti:nth-child(3n) { background: var(--rp-highlight); }
.rp-confetti:nth-child(3n+1) { background: var(--rp-accent); border-radius: 50%; }
.rp-confetti:nth-child(3n+2) { background: #c0582c; }

/* Toast et barre panier mobile : entrée */
.rp-toast { translate: -50% 0; transform: none; }

@media (min-width: 960px) {
    .rp-steps::before { content: ""; position: absolute; left: 12%; right: 12%; top: 46px; border-top: 2px dashed color-mix(in srgb, var(--rp-accent) 35%, transparent); }
}
@media (max-width: 639px) {
    .rp-orbit--1 { right: -6px; top: -16px; width: 70px; height: 70px; }
    .rp-orbit--2 { left: -8px; width: 58px; height: 58px; }
    .rp-blob--a { width: 340px; height: 340px; }
    .rp-blob--c { display: none; }
    .rp-wave { height: 32px; }
    .rp-ticker li { font-size: .92rem; }
}

/* ── Mouvement : uniquement si l'utilisateur ne demande pas à le réduire ── */
@media (prefers-reduced-motion: no-preference) {
    @keyframes rp-rise { from { opacity: 0; translate: 0 26px; } to { opacity: 1; translate: 0 0; } }
    @keyframes rp-pop { from { opacity: 0; scale: .88; rotate: -6deg; } to { opacity: 1; scale: 1; rotate: 0deg; } }
    @keyframes rp-float { 0%, 100% { translate: 0 0; } 50% { translate: 0 -10px; } }
    @keyframes rp-orbit-float { 0%, 100% { translate: 0 0; rotate: 0deg; } 50% { translate: 0 -12px; rotate: 6deg; } }
    @keyframes rp-steam { 0% { opacity: 0; transform: translateY(14px) scaleY(.8); } 35% { opacity: .85; } 100% { opacity: 0; transform: translateY(-46px) scaleY(1.15); } }
    @keyframes rp-drift { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
    @keyframes rp-draw { from { stroke-dashoffset: 260; } to { stroke-dashoffset: 0; } }
    @keyframes rp-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
    @keyframes rp-pattern { from { transform: translate(0, 0); } to { transform: translate(160px, 160px); } }
    @keyframes rp-shine { from { translate: -120% 0; } to { translate: 120% 0; } }
    @keyframes rp-fill { from { transform: scaleX(0); } }
    @keyframes rp-bar { from { transform: scaleX(0); } to { transform: scaleX(1); } }
    @keyframes rp-pulse { 0%, 100% { box-shadow: 0 0 0 6px color-mix(in srgb, var(--rp-accent) 18%, transparent); } 50% { box-shadow: 0 0 0 11px color-mix(in srgb, var(--rp-accent) 6%, transparent); } }
    @keyframes rp-wiggle { 0%, 100% { rotate: 0deg; } 25% { rotate: -14deg; } 75% { rotate: 14deg; } }
    @keyframes rp-confetti { 0% { opacity: 1; transform: translate(0, 0) rotate(0deg) scale(.6); } 100% { opacity: 0; transform: translate(var(--x), var(--y)) rotate(var(--r)) scale(1); } }
    @keyframes rp-slide-up { from { opacity: 0; translate: 0 120%; } to { opacity: 1; translate: 0 0; } }
    @keyframes rp-toast { from { opacity: 0; translate: -50% 20px; } to { opacity: 1; translate: -50% 0; } }

    /* Entrée du bandeau d'accueil, en cascade */
    .rp-enter { animation: rp-rise .8s cubic-bezier(.2, .7, .2, 1) both; animation-delay: calc(var(--d, 0) * 110ms + 80ms); }
    .rp-hero-plate { animation: rp-pop 1s cubic-bezier(.2, .8, .2, 1) .25s both, rp-float 7s ease-in-out 1.4s infinite; }
    .rp-orbit--1 { animation: rp-pop .8s ease .7s both, rp-orbit-float 6s ease-in-out 1.5s infinite; }
    .rp-orbit--2 { animation: rp-pop .8s ease .9s both, rp-orbit-float 7.5s ease-in-out 1.8s infinite reverse; }
    .rp-hero-chip { animation: rp-rise .8s ease 1s both; }
    .rp-steam path { animation: rp-steam 3.6s ease-out infinite; }
    .rp-steam path:nth-child(2) { animation-delay: 1.2s; }
    .rp-steam path:nth-child(3) { animation-delay: 2.4s; }
    .rp-squiggle path { stroke-dasharray: 260; animation: rp-draw 1.1s ease-out .6s both; }
    .rp-blob--a { animation: rp-drift 38s linear infinite; }
    .rp-blob--b { animation: rp-drift 46s linear infinite reverse; }
    .rp-blob--c { animation: rp-drift 22s linear infinite; }
    .rp-hero-media [data-depth] { transition: transform .5s cubic-bezier(.2, .7, .2, 1); }

    /* Bandeau défilant (pause au survol, au focus ou au bouton) */
    .rp-ticker-track { animation: rp-marquee 38s linear infinite; }
    .rp-ticker:hover .rp-ticker-track, .rp-ticker:focus-within .rp-ticker-track, .rp-ticker.is-paused .rp-ticker-track { animation-play-state: paused; }

    /* Apparition au défilement (activée par repas.js, sinon tout est visible) */
    .rp-motion-ready [data-reveal]:not(.is-visible) { opacity: 0; translate: 0 28px; }
    /* La transition ne joue qu'à l'apparition (pas de fondu sortant à l'activation). */
    .rp-motion-ready [data-reveal].is-visible {
        transition: opacity .7s ease, translate .7s cubic-bezier(.2, .7, .2, 1), transform .35s cubic-bezier(.2, .7, .2, 1), box-shadow .35s ease;
        transition-delay: calc(var(--i, 0) * 75ms), calc(var(--i, 0) * 75ms), 0s, 0s;
    }

    /* Cartes */
    .rp-card { transition: transform .35s cubic-bezier(.2, .7, .2, 1), box-shadow .35s ease; }
    .rp-card:hover .rp-card-media::after { animation: rp-shine .9s ease; }
    .rp-add, #rpAddBtn { transition: background .2s ease, transform .15s ease; }
    .rp-add:active, #rpAddBtn:active { transform: scale(.95); }
    .rp-add-done { transition: opacity .25s ease, translate .35s cubic-bezier(.3, 1.4, .5, 1); }

    /* Univers : motif qui dérive lentement */
    .rp-universe::after { animation: rp-pattern 70s linear infinite; }
    .rp-universe-hero img { animation: rp-float 8s ease-in-out infinite; }

    /* Panier, tunnel, confirmation */
    .rp-progress span { transform-origin: left center; animation: rp-bar 1.1s cubic-bezier(.2, .7, .2, 1) .2s both; }
    .rp-progress-box.is-done i { display: inline-block; animation: rp-wiggle .6s ease .9s 2; }
    .rp-progress-steps::after { animation: rp-fill 1s cubic-bezier(.2, .7, .2, 1) .2s both; }
    .rp-progress-steps li.is-current .rp-dot { animation: rp-pulse 2.4s ease-in-out infinite; }
    .rp-celebrate circle { stroke-dasharray: 300; animation: rp-draw 1s ease-out both; }
    .rp-celebrate path { stroke-dasharray: 260; animation: rp-draw .7s ease-out .55s both; }
    .rp-confetti { animation: rp-confetti 1.3s cubic-bezier(.2, .7, .3, 1) .7s both; }
    .rp-cartbar { animation: rp-slide-up .5s cubic-bezier(.2, .8, .2, 1) both; }
    .rp-toast { animation: rp-toast .35s cubic-bezier(.2, .8, .2, 1) both; }
    .rp-chip { transition: background .2s ease, color .2s ease, border-color .2s ease, transform .2s ease; }
    .rp-chip:hover { transform: translateY(-2px); }
    .rp-faq details[open] p { animation: rp-rise .4s ease both; }
}

/* Réduction des animations demandée : rien ne bouge, tout est visible. */
@media (prefers-reduced-motion: reduce) {
    .rp *, .rp *::before, .rp *::after { animation: none !important; transition: none !important; }
    .rp [data-reveal] { opacity: 1 !important; translate: none !important; }
    .rp-card, .rp-card:hover { transform: none !important; }
    /* Bandeau défilant : liste statique qui passe à la ligne, sans doublons. */
    .rp-ticker-viewport { mask-image: none; -webkit-mask-image: none; }
    .rp-ticker-track { display: block; width: auto; }
    .rp-ticker-track ul { flex-wrap: wrap; flex-shrink: 1; row-gap: 6px; }
    .rp-ticker-track ul[aria-hidden="true"], .rp-ticker li[aria-hidden="true"], .rp-ticker-toggle, .rp-steam, .rp-confetti { display: none !important; }
    .rp-ticker li { white-space: normal; }
}
