Expédition gratuite 📦

Par les passionnés, pour les passionnés ❤️

Accueil blog

:root { --mh-primary: #ae2500; --mh-secondary: #dda245; --mh-companion: #17100a; --mh-background: #fff7e8; --mh-surface: #ffffff; --mh-text: #221611; --mh-muted: #706152; --mh-radius: 14px; --mh-shadow: 0 26px 72px rgba(56, 24, 10, 0.16); } * { box-sizing: border-box; } ’html { scroll-behavior: smooth; } body { margin: 0 !important; font-family: "IBM Plex Sans", "Avenir Next", "Segoe UI", sans-serif; color: var(--mh-text) !important; background: radial-gradient(circle at top left, rgba(221,162,69,0.2), transparent 32%), linear-gradient(180deg, var(--mh-background) 0%, #ffffff 58%, #fff3df 100%); } body, body * { color: inherit; } ’a { color: inherit; } ’img { display: block; max-width: 100%; } .mh-page { width: 100vw; max-width: 100vw; margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); ’overflow-x: clip; background: transparent; } .entry-content .mh-page, .site-content .mh-page, .elementor-widget-container .mh-page { width: 100vw !important; max-width: 100vw !important; margin-left: calc(50% - 50vw) !important; margin-right: calc(50% - 50vw) !important; margin-top: 0 !important; margin-bottom: 0 !important; padding: 0 !important; } .entry-content .mh-page h1, .entry-content .mh-page h2, .entry-content .mh-page h3, .entry-content .mh-page p, .entry-content .mh-page figure, .entry-content .mh-page ul, .entry-content .mh-page ol { margin-top: 0; } .entry-content .mh-page a, .entry-content .mh-page a:hover, .entry-content .mh-page a:focus { text-décoration: none !important; } .entry-content .mh-page img { max-width: 100% !important; ’height: auto; border: 0 !important; box-shadow: none !important; } body.page-id-23419 .site-content > .col-full, body.page-id-23419 .content-area, body.page-id-23419 .entry-content, body.page-id-23419 .elementor-widget-container { width: 100% !important; max-width: none !important; float: none !important; padding-left: 0 !important; padding-right: 0 !important; margin-left: 0 !important; margin-right: 0 !important; } body.page-id-23419 .woocommerce-breadcrumb, body.page-id-23419 .entry-header, body.page-id-23419 .page-title { display: none !important; } .mh-section { position: relative; padding: 56px clamp(20px, 5vw, 64px); } .mh-shell { width: min(1320px, 100%); margin: 0 auto; } .mh-kicker { margin: 0 0 12px; font-size: 12px; font-weight: 800; letter-spacing: 0.18em; text-transform: uppercase; color: rgba(255,255,255,0.74) !important; } .mh-title { margin: 0; font-family: "Cormorant Garamond", Georgia, serif; font-size: clamp(4.2rem, 10vw, 8.8rem); line-height: 0.88; letter-spacing: -0.04em; color: #ffffff !important; text-wrap: balance; text-shadow: 0 12px 34px rgba(0,0,0,0.24); } .mh-copy, .mh-copy p, .mh-faq-answer, .mh-card-copy, .mh-metric-label, .mh-reading-note, .mh-quiz-copy { color: var(--mh-muted) !important; line-height: 1.7; } .mh-hero { min-height: 95svh; max-height: 95svh; display: grid; ’align-items: stretch; padding: 0; background: linear-gradient(115deg, rgba(23,16,10,0.96) 0%, rgba(23,16,10,0.88) 48%, rgba(174,37,0,0.52) 100%), ’url("https://www.mandarinoriental.fr/wp-content/uploads/2024/04/store-mandarin.png") center/cover no-repeat; ’isolation: isolate; ’overflow: clip; } .mh-hero::before, .mh-hero::after { content: ""; position: absolute; ’inset: auto; pointer-events: none; z-index: 0; } .mh-hero::before { top: -16%; right: -8%; width: min(48vw, 720px); ’height: min(48vw, 720px); border-radius: 50%; background: radial-gradient(circle, rgba(255,255,255,0.22), rgba(255,255,255,0.08) 34%, transparent 72%); filter: blur(10px); ’opacity: 0.9; ’animation: mhPulseGlow 12s ease-in-out infinite alternate; } .mh-hero::after { ’inset: 0; background: linear-gradient(122deg, rgba(255,255,255,0.08) 0%, transparent 28%), repeating-linear-gradient(90deg, rgba(255,255,255,0.045) 0 1px, transparent 1px 120px), repeating-linear-gradient(0deg, rgba(255,255,255,0.02) 0 1px, transparent 1px 120px); mix-blend-mode: soft-light; } .mh-hero-grid { min-height: 95svh; display: grid; grid-template-columns: minmax(0, 1.02fr) minmax(0, 0.98fr); position: relative; z-index: 1; } .mh-scene-scoreboard .mh-hero-copy { justify-content: flex-start; padding-top: clamp(44px, 8vw, 88px); } .mh-scene-scoreboard .mh-hero-media { clip-path: polygon(12% 0, 100% 0, 100% 100%, 0 100%, 0 16%); transform: translateY(8px); } .mh-scene-scoreboard .mh-hero-media::before { background: linear-gradient(180deg, rgba(6,10,16,0.14), rgba(6,10,16,0.42)), linear-gradient(0deg, rgba(255,255,255,0.08) 0 2px, transparent 2px 112px), linear-gradient(90deg, rgba(255,255,255,0.08) 0 2px, transparent 2px 112px); } .mh-scene-dossier .mh-hero-grid, .mh-scene-clinical .mh-hero-grid { grid-template-columns: minmax(0, 0.96fr) minmax(0, 1.04fr); } .mh-scene-dossier .mh-hero-copy, .mh-scene-clinical .mh-hero-copy { background: linear-gradient(90deg, rgba(8,11,16,0.18), transparent); } .mh-scene-dossier .mh-hero-media, .mh-scene-clinical .mh-hero-media { border-radius: 36px 0 0 120px; margin: 18px 0 18px 0; } .mh-scene-atlas .mh-hero-grid { grid-template-columns: 1fr; } .mh-scene-atlas .mh-hero-copy { position: absolute; left: 0; top: 0; bottom: 0; width: min(44rem, 58vw); z-index: 2; background: linear-gradient(90deg, rgba(12,16,22,0.84) 0%, rgba(12,16,22,0.56) 54%, rgba(12,16,22,0.04) 100%); } .mh-scene-atlas .mh-hero-media { min-height: 95svh; } .mh-scene-atlas .mh-hero-media::before { background: linear-gradient(180deg, rgba(7,10,16,0.08), rgba(7,10,16,0.42)), radial-gradient(circle at 72% 34%, rgba(255,255,255,0.22), transparent 18%), radial-gradient(circle at 82% 52%, rgba(255,255,255,0.16), transparent 14%), radial-gradient(circle at 60% 68%, rgba(255,255,255,0.14), transparent 12%); } .mh-scene-stage .mh-hero-grid, .mh-scene-gallery .mh-hero-grid, .mh-scene-darkroom .mh-hero-grid { grid-template-columns: 1fr; } .mh-scene-stage .mh-hero-copy, .mh-scene-gallery .mh-hero-copy, .mh-scene-darkroom .mh-hero-copy { position: relative; z-index: 2; min-height: 95svh; max-width: min(52rem, 64vw); background: linear-gradient(90deg, rgba(12,14,18,0.8) 0%, rgba(12,14,18,0.46) 48%, rgba(12,14,18,0.06) 100%); } .mh-scene-stage .mh-hero-media, .mh-scene-gallery .mh-hero-media, .mh-scene-darkroom .mh-hero-media { position: absolute; ’inset: 0; min-height: 100%; } .mh-scene-stage .mh-title, .mh-scene-gallery .mh-title, .mh-scene-darkroom .mh-title { max-width: 9ch; } .mh-scene-ledger .mh-hero-media, .mh-scene-signal .mh-hero-media { border-radius: 120px 0 0 32px; margin-top: 18px; margin-bottom: 18px; } .mh-scene-ledger .mh-hero-media::before { background: linear-gradient(180deg, rgba(7,10,16,0.08), rgba(7,10,16,0.4)), repeating-linear-gradient(0deg, rgba(255,255,255,0.06) 0 1px, transparent 1px 80px); } .mh-scene-signal .mh-hero-media::before { background: linear-gradient(180deg, rgba(7,10,16,0.08), rgba(7,10,16,0.46)), linear-gradient(135deg, rgba(255,255,255,0.15), transparent 28%), radial-gradient(circle at 78% 22%, rgba(255,255,255,0.2), transparent 22%); } .mh-hero--poster .mh-hero-grid { grid-template-columns: 1fr; position: relative; } .mh-hero--poster .mh-hero-media { position: absolute; ’inset: 0; min-height: 100%; ’opacity: 0.96; } .mh-hero--poster .mh-hero-copy { position: relative; z-index: 2; min-height: 95svh; max-width: 760px; background: linear-gradient(90deg, rgba(14,16,20,0.78) 0%, rgba(14,16,20,0.48) 55%, rgba(14,16,20,0.04) 100%); } .mh-hero--band .mh-hero-grid { grid-template-columns: 0.95fr 1.05fr; } .mh-hero--band .mh-hero-media { border-left: 1px solid rgba(255,255,255,0.12); } .mh-hero--frame .mh-hero-media { margin: 26px 26px 26px 0; min-height: auto; border-radius: 34px 34px 34px 120px; ’overflow: hidden; box-shadow: 0 44px 90px rgba(0,0,0,0.3); transform: translateY(20px); } .mh-hero-copy { display: flex; flex-direction: column; justify-content: center; padding: clamp(34px, 7vw, 90px); gap: 18px; position: relative; } .mh-hero-copy .mh-copy { max-width: 580px; font-size: clamp(1.04rem, 1.4vw, 1.18rem); color: rgba(255,255,255,0.84) !important; } .mh-hero-meta { display: flex; ’align-items: center; gap: 16px; margin-bottom: 10px; color: rgba(255,255,255,0.78) !important; font-size: 0.92rem; font-weight: 700; letter-spacing: 0.02em; } .mh-hero-edition { display: inline-flex; min-height: 34px; ’align-items: center; padding: 0 12px; border-radius: 999px; background: rgba(255,255,255,0.1); border: 1px solid rgba(255,255,255,0.16); } .mh-hero-rule { width: 72px; ’height: 1px; background: linear-gradient(90deg, rgba(255,255,255,0.7), rgba(255,255,255,0)); } .mh-hero-focus { max-width: 360px; text-transform: uppercase; letter-spacing: 0.14em; font-size: 0.76rem; color: rgba(255,255,255,0.62) !important; } .mh-hero-media { position: relative; min-height: 420px; background: linear-gradient(180deg, rgba(17,17,17,0.02), rgba(17,17,17,0.36)), ’url("https://www.mandarinoriental.fr/wp-content/uploads/2024/04/store-mandarin.png") center/cover no-repeat; ’overflow: hidden; } .mh-hero-media::before, .mh-hero-media::after { content: ""; position: absolute; pointer-events: none; } .mh-hero-media::before { ’inset: 0; background: linear-gradient(180deg, rgba(7,10,16,0.08), rgba(7,10,16,0.4)), linear-gradient(135deg, rgba(255,255,255,0.12), transparent 34%), linear-gradient(0deg, rgba(0,0,0,0.14), transparent 38%); } .mh-hero-media::after { ’inset: auto 24px 24px auto; width: min(48vw, 360px); ’height: min(48vw, 360px); border-radius: 50%; background: radial-gradient(circle, rgba(255,255,255,0.26), rgba(255,255,255,0.1) 32%, transparent 70%); mix-blend-mode: screen; ’animation: mhFloatOrb 10s ease-in-out infinite; } .mh-actions { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 6px; } .mh-hero-topics { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; } .mh-hero-topic { display: inline-flex; ’align-items: center; min-height: 34px; padding: 0 13px; border-radius: 999px; background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.18); color: #ffffff !important; font-size: 0.83rem; font-weight: 800; } .mh-hero-strap { position: absolute; left: clamp(24px, 4vw, 44px); bottom: clamp(24px, 4vw, 40px); z-index: 2; display: grid; gap: 10px; max-width: min(420px, calc(100% - 48px)); } .mh-hero-panel { display: inline-flex; flex-direction: column; gap: 6px; padding: 14px 16px 16px; border-radius: 22px; background: rgba(10,14,20,0.52); border: 1px solid rgba(255,255,255,0.14); backdrop-filter: blur(12px); box-shadow: 0 16px 36px rgba(0,0,0,0.22); } .mh-hero-ribbon { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; display: flex; ’align-items: center; min-height: 42px; padding: 0 clamp(18px, 3vw, 34px); background: rgba(255,255,255,0.12); border-top: 1px solid rgba(255,255,255,0.14); color: rgba(255,255,255,0.86) !important; text-transform: uppercase; letter-spacing: 0.18em; font-size: 0.68rem; font-weight: 800; backdrop-filter: blur(10px); } .mh-hero-note { position: absolute; z-index: 2; display: grid; gap: 4px; min-width: 152px; max-width: 220px; padding: 12px 14px 14px; border-radius: 20px; background: rgba(10,14,20,0.54); border: 1px solid rgba(255,255,255,0.14); box-shadow: 0 16px 36px rgba(0,0,0,0.22); backdrop-filter: blur(12px); } .mh-hero-note small { color: rgba(255,255,255,0.62) !important; text-transform: uppercase; letter-spacing: 0.18em; font-size: 0.62rem; font-weight: 800; } .mh-hero-note strong { color: #ffffff !important; font-size: 0.96rem; line-height: 1.22; } .mh-hero-note span { color: rgba(255,255,255,0.74) !important; font-size: 0.8rem; line-height: 1.45; } .mh-hero-note-a { left: clamp(18px, 3vw, 34px); top: clamp(20px, 3vw, 30px); } .mh-hero-note-b { right: clamp(20px, 3vw, 36px); bottom: clamp(84px, 9vw, 128px); } .mh-hero-panel small { color: rgba(255,255,255,0.62) !important; text-transform: uppercase; letter-spacing: 0.18em; font-size: 0.68rem; font-weight: 800; } .mh-hero-panel strong { color: #ffffff !important; font-size: 1rem; line-height: 1.2; } .mh-hero-panel span { color: rgba(255,255,255,0.76) !important; line-height: 1.45; font-size: 0.88rem; } .mh-hero-stamp { position: absolute; right: clamp(14px, 2.2vw, 28px); top: clamp(20px, 2.8vw, 32px); z-index: 2; writing-mode: vertical-rl; transform: rotate(180deg); font-size: clamp(1rem, 1.6vw, 1.18rem); letter-spacing: 0.26em; text-transform: uppercase; color: rgba(255,255,255,0.44) !important; font-weight: 800; text-shadow: 0 8px 18px rgba(0,0,0,0.18); } .mh-hero-ghost { position: absolute; right: -2%; bottom: -2%; z-index: 1; font-family: "Cormorant Garamond", Georgia, serif; font-size: clamp(5.2rem, 14vw, 13rem); line-height: 0.82; letter-spacing: -0.06em; color: rgba(255,255,255,0.16) !important; text-transform: uppercase; max-width: 76%; text-align: right; pointer-events: none; } .mh-scene-mandarin-shop::before { top: 0; left: 0; right: 0; width: auto; ’height: 74px; border-radius: 0; background: linear-gradient(90deg, var(--mh-secondary), #e7ba62, var(--mh-secondary)); ’opacity: 0.92; filter: none; ’animation: none; } .mh-scene-mandarin-shop::after { ’inset: 74px 0 auto; ’height: 58px; background: var(--mh-primary); mix-blend-mode: normal; } .mh-scene-mandarin-shop .mh-hero-grid { grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr); padding-top: 132px; } .mh-scene-mandarin-shop .mh-hero-copy { padding-top: clamp(34px, 5vw, 68px); padding-bottom: clamp(30px, 5vw, 60px); } .mh-mandarin-logo { width: clamp(210px, 24vw, 340px); margin-bottom: 12px; filter: drop-shadow(0 18px 30px rgba(0,0,0,0.42)); } .mh-mandarin-vitrine { position: relative; min-height: 100%; padding: clamp(28px, 5vw, 72px); display: grid; ’align-content: center; } .mh-mandarin-vitrine::before { content: ""; position: absolute; ’inset: 7% 7% 9% 0; border: 1px solid rgba(221,162,69,0.34); border-right: 0; pointer-events: none; } .mh-mandarin-products { position: relative; z-index: 2; display: grid; grid-template-columns: 1fr 1fr; gap: 12px; max-width: 680px; margin-left: auto; } .mh-mandarin-product { min-height: 230px; padding: 14px; display: flex; flex-direction: column; justify-content: flex-end; gap: 6px; border-radius: 8px; ’overflow: hidden; position: relative; background: var(--product-image) center/cover no-repeat; box-shadow: 0 24px 60px rgba(0,0,0,0.32); } .mh-mandarin-product::before { content: ""; position: absolute; ’inset: 0; background: linear-gradient(180deg, rgba(0,0,0,0.06), rgba(23,16,10,0.82)); } .mh-mandarin-product > * { position: relative; z-index: 1; } .mh-mandarin-product small { color: var(--mh-secondary) !important; letter-spacing: 0.14em; text-transform: uppercase; font-weight: 900; } .mh-mandarin-product strong, .mh-mandarin-product span { color: #ffffff !important; } .mh-mandarin-product strong { font-size: 1.05rem; line-height: 1.2; } .mh-mandarin-seal { position: absolute; right: clamp(24px, 4vw, 58px); top: clamp(24px, 4vw, 54px); z-index: 3; width: 82px; ’height: 82px; border-radius: 50%; display: grid; place-items: center; background: var(--mh-primary); border: 2px solid var(--mh-secondary); color: #fff7df !important; font-size: 0.78rem; font-weight: 900; text-align: center; line-height: 1.2; box-shadow: 0 18px 38px rgba(0,0,0,0.28); } .mh-scene-mandarin-shop .mh-hero-stats { display: none; } .mh-scene-mandarin-media.mh-hero { display: block; min-height: 100vh; ’height: 100vh; max-height: 100vh; padding: 0; color: #fff8e9 !important; background: linear-gradient(180deg, rgba(12,0,0,0.94) 0%, rgba(28,10,5,0.94) 52%, rgba(8,6,4,0.98) 100%), linear-gradient(105deg, #0c0000 0%, #6f1504 48%, #dda245 130%); ’overflow-x: clip; ’overflow-y: visible; } .mh-scene-mandarin-media::before { ’inset: 0; width: auto; ’height: auto; border-radius: 0; ’opacity: 0.44; filter: none; ’animation: none; background: repeating-linear-gradient(90deg, rgba(255,248,233,0.08) 0 1px, transparent 1px 104px), repeating-linear-gradient(0deg, rgba(255,248,233,0.045) 0 1px, transparent 1px 104px), linear-gradient(90deg, rgba(221,162,69,0.2), transparent 24%, rgba(174,37,0,0.22) 78%, transparent); } .mh-scene-mandarin-media::after { ’inset: auto 0 0; ’height: 42%; background: linear-gradient(180deg, transparent 0%, rgba(174,37,0,0.18) 34%, rgba(12,0,0,0.88) 100%), repeating-linear-gradient(120deg, rgba(221,162,69,0.18) 0 2px, transparent 2px 18px); mix-blend-mode: normal; } .mh-media-shell { position: relative; z-index: 3; width: min(1480px, 100%); min-height: 0; ’height: 100%; max-height: 100%; margin: 0 auto; padding: clamp(18px, 3vw, 42px) clamp(18px, 5vw, 72px) clamp(48px, 4.5vw, 78px); display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); grid-template-rows: auto minmax(0, 1fr) auto; gap: clamp(12px, 1.5vw, 22px); ’align-items: end; ’overflow: visible; } .mh-media-dragon { position: absolute; right: min(-8vw, -58px); top: clamp(188px, 22vw, 300px); width: min(42vw, 600px); max-width: none; ’opacity: 0.11; filter: sepia(1) saturate(1.45) brightness(1.15); mix-blend-mode: screen; transform: rotate(-5deg); pointer-events: none; ’animation: mhDragonDrift 14s ease-in-out infinite alternate; } .mh-temple-line { position: absolute; left: 0; right: 0; bottom: 0; z-index: 1; ’height: min(24vh, 260px); pointer-events: none; background: linear-gradient(180deg, rgba(174,37,0,0.08), rgba(12,0,0,0.88)); clip-path: polygon(0 70%, 6% 61%, 12% 65%, 18% 43%, 25% 62%, 33% 55%, 41% 66%, 50% 44%, 58% 66%, 67% 56%, 77% 63%, 85% 45%, 92% 64%, 100% 58%, 100% 100%, 0 100%); ’opacity: 0.9; } .mh-temple-line::after { content: ""; position: absolute; left: 8%; right: 8%; bottom: 0; ’height: 54%; background: repeating-linear-gradient(90deg, rgba(221,162,69,0.22) 0 2px, transparent 2px 62px), linear-gradient(180deg, rgba(221,162,69,0.08), transparent); } .mh-hat-mark { position: absolute; left: clamp(16px, 5vw, 74px); top: clamp(190px, 34vh, 370px); z-index: 2; width: clamp(120px, 15vw, 220px); ’height: clamp(54px, 6vw, 86px); border-bottom: 2px solid rgba(221,162,69,0.48); border-radius: 50% 50% 4px 4px / 100% 100% 4px 4px; transform: rotate(-10deg); ’opacity: 0.72; pointer-events: none; } .mh-hat-mark::before { content: ""; position: absolute; left: 12%; right: 12%; bottom: 10px; ’height: 86%; background: linear-gradient(135deg, transparent 0 48%, rgba(221,162,69,0.34) 49% 51%, transparent 52%), linear-gradient(45deg, transparent 0 48%, rgba(255,248,233,0.16) 49% 51%, transparent 52%); clip-path: polygon(50% 0, 100% 100%, 0 100%); } .mh-media-brand { grid-column: 1 / 13; grid-row: 1; ’align-self: start; position: relative; z-index: 5; max-width: 1120px; margin: 0 auto; text-align: center; padding-top: clamp(8px, 2.4vh, 24px); } .mh-media-edition { display: inline-flex; ’align-items: center; gap: 10px; margin: 0 0 10px; color: rgba(255,248,233,0.78) !important; font-size: 0.82rem; font-weight: 800; letter-spacing: 0.16em; text-transform: uppercase; } .mh-media-edition::before, .mh-media-edition::after { content: ""; width: 54px; ’height: 1px; background: rgba(221,162,69,0.58); } .mh-scene-mandarin-media .mh-title { margin: 0 auto; max-width: 12ch; font-family: "IBM Plex Sans", "Avenir Next", "Segoe UI", sans-serif; font-size: clamp(3.6rem, 8.9vw, 8.6rem); font-weight: 800; line-height: 0.82; letter-spacing: 0; text-transform: uppercase; color: #fff8e9 !important; text-shadow: 0 20px 54px rgba(0,0,0,0.38); } .mh-scene-mandarin-media .mh-title span { display: block; } .mh-media-dek { width: min(720px, 100%); margin: 14px auto 0; padding: 4px 12px; color: rgba(255,248,233,0.9) !important; font-size: clamp(1rem, 1.5vw, 1.18rem); line-height: 1.62; background: linear-gradient(90deg, transparent, rgba(12,0,0,0.5) 14%, rgba(12,0,0,0.5) 86%, transparent); text-shadow: 0 2px 14px rgba(0,0,0,0.72); } .mh-media-feature { grid-column: 2 / 9; grid-row: 2; ’height: clamp(260px, 34vh, 410px); min-height: 260px; position: relative; display: block; ’overflow: hidden; color: #ffffff !important; text-décoration: none !important; clip-path: polygon(0 15%, 100% 0, 94% 100%, 6% 94%); box-shadow: 0 32px 90px rgba(0,0,0,0.38); ’isolation: isolate; } .mh-media-feature img { width: 100%; ’height: 100%; ’object-fit: cover; filter: saturate(0.9) contrast(1.05); transform: scale(1.02); transition: transform .7s ease, filter .7s ease; } .mh-media-feature::before { content: ""; position: absolute; ’inset: 0; z-index: 1; background: linear-gradient(90deg, rgba(12,0,0,0.86) 0%, rgba(12,0,0,0.36) 46%, transparent 100%), linear-gradient(0deg, rgba(12,0,0,0.72), transparent 54%); } .mh-media-feature:hover img { transform: scale(1.07); filter: saturate(1.04) contrast(1.1); } .mh-media-feature-text { position: absolute; left: clamp(22px, 4vw, 58px); bottom: clamp(22px, 4vw, 52px); z-index: 2; width: min(560px, calc(100% - 48px)); } .mh-media-feature small { display: block; margin-bottom: 8px; color: var(--mh-secondary) !important; font-size: 0.72rem; font-weight: 900; letter-spacing: 0.18em; text-transform: uppercase; } .mh-media-feature strong { display: block; color: #ffffff !important; font-size: clamp(1.35rem, 2.75vw, 2.58rem); line-height: 1.08; letter-spacing: 0; text-wrap: balance; ’overflow-wrap: break-word; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; ’overflow: hidden; } .mh-media-feature-text > span { display: block; margin-top: 12px; color: rgba(255,255,255,0.78) !important; line-height: 1.55; } .mh-media-index { grid-column: 9 / 13; grid-row: 2 / 4; ’align-self: end; justify-self: center; width: min(390px, 100%); ’height: clamp(420px, 56vh, 590px); position: relative; ’overflow: hidden; border: 1px solid rgba(221,162,69,0.32); box-shadow: 0 34px 82px rgba(0,0,0,0.34); ’isolation: isolate; background: #1c0803; } .mh-media-index::before { content: ""; position: absolute; ’inset: 0; z-index: 1; background: linear-gradient(180deg, rgba(8,0,0,0.04) 0%, rgba(8,0,0,0.16) 38%, rgba(8,0,0,0.82) 100%), linear-gradient(90deg, rgba(8,0,0,0.34), transparent 32%, rgba(8,0,0,0.2)); pointer-events: none; } .mh-media-index::after { content: ""; position: absolute; ’inset: 12px; z-index: 2; border: 1px solid rgba(255,231,158,0.26); pointer-events: none; } .mh-temple-photo { width: 100%; ’height: 100%; ’object-fit: cover; ’object-position: 50% 48%; filter: saturate(1.02) contrast(1.06) brightness(0.8); transform: scale(1.02); } .mh-temple-floor { position: absolute; left: clamp(16px, 2vw, 28px); right: clamp(16px, 2vw, 28px); z-index: 3; display: grid; grid-template-columns: auto 1fr; gap: 12px; ’align-items: center; min-height: 60px; padding: 10px 14px; color: #fff8e9 !important; text-décoration: none !important; background: linear-gradient(90deg, rgba(12,0,0,0.86), rgba(12,0,0,0.56)), rgba(31,8,3,0.72); border-left: 3px solid var(--mh-secondary); backdrop-filter: blur(6px); box-shadow: 0 16px 30px rgba(0,0,0,0.28); transition: transform .26s ease, background-color .26s ease, border-color .26s ease; } .mh-temple-floor:nth-of-type(1) { bottom: 172px; } .mh-temple-floor:nth-of-type(2) { bottom: 96px; } .mh-temple-floor:nth-of-type(3) { bottom: 20px; } .mh-temple-floor em { color: var(--mh-secondary) !important; font-style: normal; font-weight: 900; font-size: 1rem; line-height: 1; letter-spacing: 0.08em; text-shadow: 0 12px 24px rgba(0,0,0,0.26); } .mh-temple-floor span { color: #fff8e9 !important; font-size: clamp(0.92rem, 1vw, 1.02rem); font-weight: 800; line-height: 1.2; ’overflow-wrap: break-word; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; ’overflow: hidden; } .mh-temple-floor:hover { transform: translateX(5px); background-color: rgba(69,16,5,0.88); border-color: rgba(221,162,69,0.72); } .mh-media-actions { grid-column: 2 / 9; grid-row: 3; display: flex; flex-wrap: wrap; gap: 10px; ’align-items: center; ’align-self: start; } .mh-scene-mandarin-media .mh-button { min-height: 48px; border-radius: 4px; padding: 0 18px; letter-spacing: 0; } .mh-scene-mandarin-media .mh-button-primary { background: var(--mh-secondary); color: #170a04 !important; box-shadow: 0 18px 44px rgba(0,0,0,0.24); } .mh-scene-mandarin-media .mh-button-secondary { background: transparent; color: #fff8e9 !important; border-color: rgba(221,162,69,0.44); backdrop-filter: none; } .mh-media-vertical { position: absolute; left: clamp(18px, 2.6vw, 42px); bottom: clamp(28px, 5vw, 72px); z-index: 4; writing-mode: vertical-rl; transform: rotate(180deg); color: rgba(255,248,233,0.52) !important; font-size: 0.78rem; font-weight: 800; letter-spacing: 0.2em; text-transform: uppercase; } @keyframes mhDragonDrift { from { transform: rotate(-5deg) translate3d(0, 0, 0); opacity: 0.11; } to { transform: rotate(-3deg) translate3d(-16px, 12px, 0); opacity: 0.18; } } .mh-button { display: inline-flex; ’align-items: center; justify-content: center; min-height: 50px; padding: 0 20px; border-radius: 999px; border: 1px solid transparent; text-décoration: none !important; font-weight: 800; transition: transform .24s ease, background-color .24s ease, border-color .24s ease; } .mh-button:hover { transform: translateY(-1px); } .mh-button-primary { background: #ae2500; color: #ffffff !important; box-shadow: 0 18px 42px rgba(0,0,0,0.18); } .mh-button-secondary { background: rgba(255,255,255,0.08); color: #ffffff !important; border-color: rgba(255,255,255,0.22); backdrop-filter: blur(8px); } .mh-hero-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-top: 14px; max-width: 720px; } .mh-stat { padding: 16px 16px 18px; border-radius: 20px; background: rgba(255,255,255,0.07); border: 1px solid rgba(255,255,255,0.16); backdrop-filter: blur(14px); } .mh-stat strong { display: block; margin-bottom: 8px; font-size: 1.55rem; color: #ffffff !important; } .mh-stat span { display: block; color: rgba(255,255,255,0.78) !important; line-height: 1.5; } @keyframes mhPulseGlow { from { transform: scale(0.96) translate3d(0, 0, 0); opacity: 0.72; } to { transform: scale(1.08) translate3d(-18px, 22px, 0); opacity: 1; } } @keyframes mhFloatOrb { 0% { transform: translate3d(0, 0, 0); } 50% { transform: translate3d(-14px, -10px, 0); } 100% { transform: translate3d(0, 0, 0); } } .mh-block { background: rgba(255,255,255,0.78); border: 1px solid rgba(16,24,40,0.08); border-radius: var(--mh-radius); box-shadow: var(--mh-shadow); backdrop-filter: blur(12px); } .mh-section-heading { margin-bottom: 22px; } .mh-section-heading p { margin: 10px 0 0; max-width: 760px; } .mh-section-heading h2, .mh-quiz-title, .mh-reading-title { margin: 0; font-family: "Cormorant Garamond", Georgia, serif; font-size: clamp(2.2rem, 4vw, 3.4rem); line-height: 0.98; color: var(--mh-text) !important; } .mh-metrics, .mh-trust, .mh-testimonials, .mh-benefits { display: grid; gap: 18px; grid-template-columns: repeat(4, minmax(0, 1fr)); } .mh-metric, .mh-trust-card, .mh-testimonial, .mh-benefit { padding: 22px; border-radius: 24px; background: rgba(255,255,255,0.9); border: 1px solid rgba(15,23,42,0.08); } .mh-metric strong { display: block; margin-bottom: 8px; font-size: 1.9rem; color: var(--mh-primary) !important; } .mh-catégories { display: grid; gap: 18px; } .mh-catégories--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .mh-catégories--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } .mh-catégories--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } .mh-category { min-height: 260px; padding: 18px; border-radius: 26px; text-décoration: none !important; background: linear-gradient(180deg, rgba(0,0,0,0.04), rgba(0,0,0,0.62)), var(--category-image) center/cover no-repeat; display: flex; flex-direction: column; justify-content: flex-end; gap: 8px; ’overflow: hidden; position: relative; color: #ffffff !important; box-shadow: 0 24px 48px rgba(15, 23, 42, 0.18); } .mh-category::before { content: ""; position: absolute; ’inset: 0; border: 1px solid rgba(255,255,255,0.14); border-radius: inherit; pointer-events: none; } .mh-category small, .mh-category p { color: rgba(255,255,255,0.86) !important; margin: 0; line-height: 1.5; } .mh-category strong { font-size: 1.2rem; } .mh-reading { display: grid; gap: 24px; grid-template-columns: 1.05fr 0.95fr; padding: clamp(24px, 4vw, 40px); background: radial-gradient(circle at top right, rgba(255,255,255,0.8), transparent 28%), linear-gradient(135deg, #fefcfa 0%, #ffffff 100%); } .mh-reading-panel { padding: 24px; border-radius: 24px; background: rgba(255,255,255,0.9); border: 1px solid rgba(15,23,42,0.08); } .mh-reading-list { display: grid; gap: 12px; margin: 18px 0 0; padding: 0; list-style: none; } .mh-reading-list li { padding: 14px 16px; border-radius: 18px; background: #f1dad4; color: var(--mh-text) !important; font-weight: 700; } .mh-form { display: grid; gap: 12px; margin-top: 20px; } .mh-form input { min-height: 52px; border-radius: 16px; border: 1px solid rgba(15,23,42,0.14); padding: 0 16px; font: inherit; color: var(--mh-text) !important; background: #ffffff !important; } .mh-about { display: grid; gap: 24px; grid-template-columns: 1fr 1fr; ’align-items: stretch; } .mh-about-copy, .mh-about-media { border-radius: 28px; ’overflow: hidden; min-height: 420px; } .mh-about-copy { padding: clamp(24px, 4vw, 38px); background: rgba(255,255,255,0.9); border: 1px solid rgba(15,23,42,0.08); } .mh-quote { padding-left: 18px; border-left: 3px solid #ae2500; font-size: 1.2rem; line-height: 1.6; color: var(--mh-text) !important; } .mh-about-media { background: linear-gradient(180deg, rgba(0,0,0,0.06), rgba(0,0,0,0.18)), ’url("https://www.mandarinoriental.fr/wp-content/uploads/2024/04/store-mandarin.png") center/cover no-repeat; position: relative; } .mh-about-stats { display: grid; gap: 12px; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 24px; } .mh-about-stat { padding: 16px; border-radius: 18px; background: #fcf8f0; border: 1px solid rgba(15,23,42,0.06); } .mh-about-stat strong { display: block; color: var(--mh-primary) !important; font-size: 1.3rem; margin-bottom: 4px; } .mh-featured { display: grid; gap: 20px; grid-template-columns: 1.2fr 0.8fr; ’align-items: stretch; } .mh-featured-main, .mh-featured-list { min-height: 440px; } .mh-featured-main { position: relative; border-radius: 28px; ’overflow: hidden; background: linear-gradient(180deg, rgba(0,0,0,0.06), rgba(0,0,0,0.68)); min-height: 440px; } .mh-featured-main .mh-featured-image { position: absolute; ’inset: 0; background: linear-gradient(180deg, rgba(0,0,0,0.08), rgba(0,0,0,0.48)), url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201200%20800%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20x2%3D%221%22%20y1%3D%220%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23dda245%22%2F%3E%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23ae2500%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%221200%22%20height%3D%22800%22%20fill%3D%22url(%23g)%22%2F%3E%3Ccircle%20cx%3D%22930%22%20cy%3D%22170%22%20r%3D%22190%22%20fill%3D%22rgba(255%2C255%2C255%2C0.12)%22%2F%3E%3Ccircle%20cx%3D%22210%22%20cy%3D%22650%22%20r%3D%22230%22%20fill%3D%22rgba(255%2C255%2C255%2C0.10)%22%2F%3E%3Ctext%20x%3D%2280%22%20y%3D%22680%22%20fill%3D%22rgba(255%2C255%2C255%2C0.82)%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2272%22%20font-weight%3D%22700%22%3EA%20la%20une%3C%2Ftext%3E%3C%2Fsvg%3E") center/cover no-repeat; } .mh-featured-overlay { position: relative; z-index: 1; display: flex; flex-direction: column; justify-content: flex-end; ’height: 100%; padding: 28px; color: #ffffff !important; } .mh-featured-overlay h3, .mh-featured-mini h3 { margin: 0; font-size: clamp(1.5rem, 3vw, 2.4rem); line-height: 1.04; color: inherit !important; } .mh-featured-overlay p { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; ’overflow: hidden; } .mh-featured-overlay p, .mh-featured-mini p, .mh-featured-overlay small, .mh-featured-mini small { color: rgba(255,255,255,0.84) !important; line-height: 1.6; } .mh-featured-list { display: grid; gap: 16px; grid-template-rows: repeat(3, minmax(0, 1fr)); } .mh-featured-mini { display: grid; grid-template-columns: 128px 1fr; gap: 14px; padding: 16px; border-radius: 24px; background: rgba(255,255,255,0.9); border: 1px solid rgba(15,23,42,0.08); min-height: 0; ’align-items: center; } .mh-featured-mini-media { border-radius: 18px; background: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201200%20800%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20x2%3D%221%22%20y1%3D%220%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23dda245%22%2F%3E%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23ae2500%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%221200%22%20height%3D%22800%22%20fill%3D%22url(%23g)%22%2F%3E%3Ccircle%20cx%3D%22930%22%20cy%3D%22170%22%20r%3D%22190%22%20fill%3D%22rgba(255%2C255%2C255%2C0.12)%22%2F%3E%3Ccircle%20cx%3D%22210%22%20cy%3D%22650%22%20r%3D%22230%22%20fill%3D%22rgba(255%2C255%2C255%2C0.10)%22%2F%3E%3Ctext%20x%3D%2280%22%20y%3D%22680%22%20fill%3D%22rgba(255%2C255%2C255%2C0.82)%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2272%22%20font-weight%3D%22700%22%3EPost%3C%2Ftext%3E%3C%2Fsvg%3E") center/cover no-repeat; min-height: 112px; } .mh-featured-mini h3 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; ’overflow: hidden; } .mh-featured-mini p { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; ’overflow: hidden; color: var(--mh-muted) !important; } .mh-trust-layout, .mh-testimonials-layout { display: grid; gap: 24px; grid-template-columns: 0.92fr 1.08fr; ’align-items: stretch; } .mh-trust-intro, .mh-testimonials-intro { padding: clamp(24px, 4vw, 36px); } .mh-trust-stack, .mh-testimonials-stack { display: grid; gap: 16px; } .mh-trust-card, .mh-testimonial { padding: 22px; border-radius: 24px; background: rgba(255,255,255,0.92); border: 1px solid rgba(15,23,42,0.08); } .mh-press { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 16px; } .mh-pill { padding: 10px 14px; border-radius: 999px; background: rgba(255,255,255,0.9); border: 1px solid rgba(15,23,42,0.08); font-weight: 700; } .mh-rating { padding: 20px 22px; border-radius: 24px; background: linear-gradient(135deg, #e0a954 0%, #d79280 100%); color: #ffffff !important; min-width: 220px; box-shadow: 0 24px 56px rgba(15,23,42,0.18); } .mh-rating strong, .mh-rating span, .mh-rating small { display: block; color: inherit !important; } .mh-testimonial p { margin: 0 0 14px; line-height: 1.75; font-size: 1.02rem; } .mh-testimonial strong { display: block; margin-bottom: 6px; color: var(--mh-text) !important; } .mh-faq { display: grid; gap: 12px; } .mh-faq details { padding: 18px 22px; border-radius: 22px; background: rgba(255,255,255,0.9); border: 1px solid rgba(15,23,42,0.08); } .mh-faq summary { cursor: pointer; font-weight: 800; color: var(--mh-text) !important; } .mh-benefits-flow { display: grid; gap: 22px; } .mh-benefit-row { display: grid; grid-template-columns: 0.92fr 1.08fr; ’align-items: stretch; ’overflow: hidden; } .mh-benefit-row:nth-child(even) { grid-template-columns: 1.08fr 0.92fr; } .mh-benefit-media { min-height: 280px; background: linear-gradient(180deg, rgba(0,0,0,0.06), rgba(0,0,0,0.18)), var(--benefit-image) center/cover no-repeat; } .mh-benefit-copy { padding: clamp(24px, 4vw, 36px); } .mh-benefit ul { padding-left: 18px; margin: 14px 0 0; color: var(--mh-muted) !important; line-height: 1.7; } .mh-quiz-wrap { ’overflow: hidden; background: linear-gradient(135deg, #dda245 0%, #bc8a3b 55%, #cf7d30 100%); color: #ffffff !important; } .mh-quiz-inner { display: grid; gap: 24px; grid-template-columns: 0.8fr 1.2fr; padding: clamp(24px, 4vw, 40px); } .mh-quiz-copy, .mh-quiz-copy p, .mh-quiz-panel, .mh-quiz-panel * { color: #ffffff !important; } .mh-quiz-panel { padding: 24px; border-radius: 26px; background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.12); backdrop-filter: blur(12px); } .mh-quiz-options { display: grid; gap: 12px; margin-top: 18px; } .mh-quiz-option { width: 100%; text-align: left; padding: 14px 16px; border-radius: 18px; background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.12); font: inherit; cursor: pointer; } .mh-quiz-option:hover { background: rgba(255,255,255,0.16); } .mh-quiz-option.is-correct { background: rgba(124, 255, 163, 0.18); border-color: rgba(124,255,163,0.62); } .mh-quiz-option.is-wrong { background: rgba(255, 142, 142, 0.16); border-color: rgba(255,142,142,0.52); } .mh-quiz-option.is-muted { ’opacity: 0.48; } .mh-quiz-feedback { display: none; margin-top: 16px; padding: 16px 18px; border-radius: 18px; background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.12); line-height: 1.6; } .mh-quiz-feedback.is-visible { display: block; } .mh-quiz-feedback strong, .mh-quiz-feedback span { color: #ffffff !important; } .mh-quiz-next { display: none; margin-top: 14px; } .mh-quiz-next.is-visible { display: inline-flex; } .mh-result { display: none; gap: 10px; } .mh-result.is-visible { display: grid; } .mh-inline-link { font-weight: 800; color: var(--mh-primary) !important; text-décoration: none !important; } .mh-footer-cta { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 16px; } @media (max-width: 1100px) { .mh-hero-grid, .mh-reading, .mh-about, .mh-featured, .mh-quiz-inner, .mh-trust-layout, .mh-testimonials-layout, .mh-benefit-row, .mh-benefit-row:nth-child(even) { grid-template-columns: 1fr; } .mh-metrics, .mh-catégories { grid-template-columns: repeat(2, minmax(0, 1fr)); } .mh-scene-mandarin-shop { max-height: none; } .mh-scene-mandarin-shop .mh-hero-grid { grid-template-columns: 1fr; padding-top: 112px; } .mh-mandarin-vitrine { min-height: 360px; padding-top: 8px; } } @media (max-width: 720px) { .mh-title { font-size: clamp(3.2rem, 14vw, 5rem); } .mh-section { padding: 38px 18px; } .mh-hero-grid { min-height: auto; } .mh-hero-copy { padding: 28px 18px; } .mh-hero-media { min-height: 340px; } .mh-hero--poster .mh-hero-copy { min-height: auto; background: linear-gradient(180deg, rgba(14,16,20,0.72) 0%, rgba(14,16,20,0.32) 100%); } .mh-hero-meta { gap: 10px; flex-wrap: wrap; } .mh-hero-rule { width: 42px; } .mh-hero-ghost { right: 6%; bottom: 6%; max-width: 88%; font-size: clamp(3.8rem, 16vw, 6.8rem); } .mh-hero-stamp { right: 12px; top: 14px; font-size: 0.82rem; } .mh-hero-strap { left: 14px; right: 14px; max-width: none; } .mh-hero-note { min-width: 0; max-width: 180px; } .mh-hero-note-a { left: 12px; top: 12px; } .mh-hero-note-b { right: 12px; bottom: 74px; } .mh-scene-stage .mh-hero-copy, .mh-scene-gallery .mh-hero-copy, .mh-scene-darkroom .mh-hero-copy, .mh-scene-atlas .mh-hero-copy { width: auto; max-width: none; background: linear-gradient(180deg, rgba(12,14,18,0.78) 0%, rgba(12,14,18,0.46) 56%, rgba(12,14,18,0.08) 100%); } .mh-hero-stats, .mh-about-stats, .mh-metrics, .mh-catégories { grid-template-columns: 1fr; } .mh-featured-mini { grid-template-columns: 1fr; } .mh-featured-main, .mh-featured-list { min-height: auto; } .mh-rating { min-width: 0; } .mh-scene-mandarin-shop { min-height: 95svh; max-height: 95svh; } .mh-scene-mandarin-shop::before { ’height: 42px; } .mh-scene-mandarin-shop::after { top: 42px; ’height: 34px; } .mh-scene-mandarin-shop .mh-hero-grid { min-height: 95svh; padding-top: 76px; display: block; } .mh-scene-mandarin-shop .mh-hero-copy { min-height: calc(95svh - 76px); padding: 20px 22px 22px; } .mh-mandarin-logo { width: min(180px, calc(100vw - 56px)); margin-bottom: 8px; } .mh-scene-mandarin-shop .mh-title { font-size: clamp(3.2rem, 13.5vw, 4rem); } .mh-scene-mandarin-shop .mh-kicker { margin-bottom: 8px; } .mh-scene-mandarin-shop .mh-copy { line-height: 1.55; } .mh-scene-mandarin-shop .mh-button { min-height: 44px; } .mh-mandarin-vitrine, .mh-mandarin-seal { display: none; } .mh-scene-mandarin-shop .mh-copy, .mh-scene-mandarin-shop .mh-actions, .mh-scene-mandarin-shop .mh-hero-topics { width: min(312px, calc(100vw - 56px)); max-width: min(312px, calc(100vw - 56px)); } .mh-scene-mandarin-shop .mh-actions .mh-button { flex: 1 1 100%; } .mh-scene-mandarin-shop .mh-actions .mh-button-secondary { display: none; } .mh-scene-mandarin-shop .mh-hero-topics { display: none; } } @media (max-width: 1100px) { .mh-media-shell { grid-template-columns: repeat(6, minmax(0, 1fr)); grid-template-rows: auto minmax(0, 1fr) auto; min-height: 0; } .mh-media-brand { grid-column: 1 / 7; } .mh-media-feature, .mh-media-actions { grid-column: 1 / 4; } .mh-media-index { grid-column: 4 / 7; grid-row: 2 / 4; } .mh-media-feature { grid-row: 2; ’height: clamp(180px, 32vh, 300px); min-height: 0; } .mh-media-index { width: min(360px, 100%); ’height: clamp(280px, 48vh, 430px); } .mh-media-dragon { width: min(52vw, 500px); } .mh-media-vertical, .mh-hat-mark { display: none; } } @media (max-height: 920px) and (min-width: 721px) { .mh-media-shell { padding-top: 18px; padding-bottom: 18px; gap: clamp(10px, 1.2vw, 16px); } .mh-media-brand { padding-top: 4px; } .mh-scene-mandarin-media .mh-title { font-size: clamp(3.4rem, 8vw, 7.2rem); line-height: 0.84; } .mh-media-dek { margin-top: 10px; line-height: 1.48; } .mh-media-feature { ’height: clamp(190px, 29vh, 310px); min-height: 0; } .mh-media-feature-text { bottom: clamp(18px, 2.4vw, 30px); } .mh-media-feature strong { font-size: clamp(1.35rem, 2.5vw, 2.2rem); line-height: 1.08; } .mh-media-feature-text > span { display: none; } .mh-media-actions { grid-column: 2 / 5; } .mh-media-index { ’height: clamp(270px, 38vh, 360px); width: min(330px, 100%); } .mh-temple-floor { min-height: 52px; padding: 8px 12px; } .mh-temple-floor:nth-of-type(1) { bottom: 130px; } .mh-temple-floor:nth-of-type(2) { bottom: 72px; } .mh-temple-floor:nth-of-type(3) { bottom: 14px; } .mh-temple-floor span { font-size: 0.84rem; } } @media (max-width: 720px) { .mh-scene-mandarin-media.mh-hero { min-height: 100vh; ’height: 100vh; max-height: 100vh; } .mh-media-shell { min-height: 0; ’height: 100%; max-height: 100%; padding: clamp(10px, 1.8vh, 16px) 18px; display: grid; grid-template-columns: 1fr; grid-template-rows: auto minmax(96px, 18vh) minmax(188px, 36vh) auto; ’align-items: stretch; gap: clamp(6px, 1.05vh, 9px); } .mh-media-brand { grid-column: 1; padding-top: 0; } .mh-media-edition { font-size: 0.68rem; letter-spacing: 0.12em; } .mh-media-edition::before, .mh-media-edition::after { width: 28px; } .mh-scene-mandarin-media .mh-title { font-size: clamp(2.6rem, 13vw, 3.35rem); line-height: 0.9; } .mh-media-dek { margin-top: 10px; font-size: 0.95rem; line-height: 1.5; } .mh-media-feature { grid-column: 1; grid-row: 2; width: 100%; ’height: auto; min-height: 0; clip-path: polygon(0 8%, 100% 0, 100% 100%, 0 94%); } .mh-media-feature-text { left: 16px; right: 16px; bottom: 14px; width: auto; } .mh-media-feature strong { font-size: clamp(1.18rem, 6.3vw, 1.72rem); line-height: 1.06; } .mh-media-feature-text > span { display: none; } .mh-media-index { grid-column: 1; grid-row: 3; ’align-self: stretch; width: min(86vw, 300px); ’height: auto; min-height: 0; } .mh-temple-floor { left: 14px; right: 14px; min-height: 48px; padding: 8px 10px; gap: 10px; } .mh-temple-floor:nth-of-type(1) { bottom: 106px; } .mh-temple-floor:nth-of-type(2) { bottom: 58px; } .mh-temple-floor:nth-of-type(3) { bottom: 10px; } .mh-temple-floor span { font-size: 0.8rem; } .mh-media-actions { grid-column: 1; grid-row: 4; width: 100%; } .mh-scene-mandarin-media .mh-button { flex: 1 1 calc(50% - 6px); min-height: 46px; white-space: nowrap; } .mh-media-dragon { right: -148px; top: 172px; width: 260px; ’opacity: 0.06; } .mh-temple-line { ’height: 18vh; } } @media (max-width: 720px) and (max-height: 760px) { .mh-media-shell { padding: 10px 16px; grid-template-rows: auto minmax(84px, 16vh) minmax(160px, 32vh) auto; gap: 6px; } .mh-media-edition { margin-bottom: 6px; font-size: 0.62rem; } .mh-media-edition::before, .mh-media-edition::after { width: 22px; } .mh-scene-mandarin-media .mh-title { font-size: clamp(2.15rem, 11.2vw, 2.85rem); line-height: 0.88; } .mh-media-dek { margin-top: 7px; font-size: 0.83rem; line-height: 1.34; } .mh-media-feature { ’height: auto; min-height: 0; } .mh-media-feature-text { left: 14px; right: 14px; bottom: 12px; } .mh-media-feature small { margin-bottom: 5px; font-size: 0.62rem; } .mh-media-feature strong { font-size: clamp(1rem, 5.5vw, 1.42rem); } .mh-media-index { width: min(84vw, 270px); ’height: auto; min-height: 0; } .mh-temple-floor { left: 12px; right: 12px; min-height: 40px; padding: 6px 8px; gap: 8px; } .mh-temple-floor:nth-of-type(1) { bottom: 88px; } .mh-temple-floor:nth-of-type(2) { bottom: 48px; } .mh-temple-floor:nth-of-type(3) { bottom: 8px; } .mh-temple-floor em { font-size: 0.84rem; } .mh-temple-floor span { font-size: 0.7rem; line-height: 1.12; } .mh-scene-mandarin-media .mh-button { min-height: 40px; padding: 0 12px; } } @supports (height: 100dvh) { .mh-scene-mandarin-media.mh-hero { min-height: 100dvh; ’height: 100dvh; max-height: 100dvh; } } .mo-section { position: relative; padding: clamp(58px, 7vw, 96px) clamp(20px, 5vw, 68px); ’overflow-x: clip; } .mo-section--dark { background: #150805; color: #fff8e9 !important; } .mo-section--red { background: linear-gradient(120deg, rgba(12,0,0,0.92), rgba(95,16,5,0.95)), ’url("https://cdn.pixabay.com/photo/2019/03/25/20/17/kaohsiung-4081256_1280.jpg") center/cover no-repeat; color: #fff8e9 !important; } .mo-shell { width: min(1240px, 100%); margin: 0 auto; } .mo-eyebrow { margin: 0 0 12px; font-size: 0.76rem; font-weight: 800; letter-spacing: 0.16em; text-transform: uppercase; color: var(--mh-primary) !important; } .mo-section--dark .mo-eyebrow, .mo-section--red .mo-eyebrow { color: var(--mh-secondary) !important; } .mo-heading { margin: 0; font-family: "Cormorant Garamond", Georgia, serif; font-size: clamp(2.55rem, 5.4vw, 5.9rem); line-height: 0.93; color: inherit !important; text-wrap: balance; } .mo-heading--compact { font-size: clamp(2.15rem, 4vw, 3.8rem); } .mo-lead { margin: 18px 0 0; max-width: 680px; color: var(--mh-muted) !important; font-size: clamp(1rem, 1.6vw, 1.18rem); line-height: 1.72; } .mo-section--dark .mo-lead, .mo-section--red .mo-lead, .mo-section--dark .mo-card p, .mo-section--red .mo-card p { color: rgba(255,248,233,0.78) !important; } .mo-topline { display: flex; justify-content: space-between; gap: 28px; ’align-items: end; margin-bottom: clamp(28px, 4vw, 48px); } .mo-topline .mo-lead { max-width: 510px; margin-top: 0; } .mo-grid { display: grid; gap: clamp(18px, 2.4vw, 30px); } .mo-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .mo-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } .mo-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } .mo-split { display: grid; grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr); gap: clamp(26px, 5vw, 68px); ’align-items: center; } .mo-split > * { min-width: 0; } .mo-split--reverse { grid-template-columns: minmax(0, 1.08fr) minmax(0, 0.92fr); } .mo-panel { min-width: 0; padding: clamp(24px, 4vw, 46px); background: rgba(255,255,255,0.86); border: 1px solid rgba(56,24,10,0.1); border-radius: 8px; box-shadow: 0 22px 60px rgba(56,24,10,0.1); } .mo-section--dark .mo-panel, .mo-section--red .mo-panel { background: rgba(255,248,233,0.08); border-color: rgba(255,248,233,0.16); box-shadow: none; } .mo-media { min-height: min(58vh, 560px); border-radius: 8px; ’overflow: hidden; background: #ddd center/cover no-repeat; box-shadow: 0 28px 80px rgba(56,24,10,0.18); } .mo-media--lantern { background-image: url("https://images.unsplash.com/photo-1528181304800-259b08848526?auto=format&fit=crop&w=1200&q=82"); } .mo-media--tea { background-image: url("https://cdn.pixabay.com/photo/2018/07/23/23/18/tee-3558098_1280.jpg"); } .mo-media--gate { background-image: url("https://cdn.pixabay.com/photo/2022/03/10/12/25/pagoda-7059762_1280.jpg"); } .mo-media--silk { background-image: url("https://cdn.pixabay.com/photo/2017/10/25/00/20/chinese-calligraphy-brushes-2886644_1280.jpg"); } .mo-media--portrait { background-image: url("https://images.unsplash.com/photo-1544717305-2782549b5136?auto=format&fit=crop&w=1200&q=82"); } .mo-card { min-width: 0; padding: clamp(20px, 2.5vw, 30px); border-radius: 8px; background: rgba(255,255,255,0.9); border: 1px solid rgba(56,24,10,0.1); text-décoration: none !important; box-shadow: 0 18px 48px rgba(56,24,10,0.08); } .mo-section--dark .mo-card, .mo-section--red .mo-card { background: rgba(255,248,233,0.08); border-color: rgba(255,248,233,0.15); box-shadow: none; } .mo-card h3, .mo-article h3 { margin: 0; font-family: "Cormorant Garamond", Georgia, serif; font-size: clamp(1.55rem, 2.6vw, 2.25rem); line-height: 1.02; color: inherit !important; text-wrap: balance; ’overflow-wrap: anywhere; } .mo-card p, .mo-article p { margin: 12px 0 0; color: var(--mh-muted) !important; line-height: 1.64; } .mo-icon { width: 38px; ’height: 38px; margin-bottom: 18px; color: var(--mh-primary); stroke-width: 1.6; } .mo-section--dark .mo-icon, .mo-section--red .mo-icon { color: var(--mh-secondary); } .mo-article { display: grid; min-width: 0; min-height: 100%; ’height: 100%; ’overflow: hidden; border-radius: 8px; background: #fff; border: 1px solid rgba(56,24,10,0.1); text-décoration: none !important; box-shadow: 0 18px 48px rgba(56,24,10,0.09); } .mo-section--dark .mo-article, .mo-section--red .mo-article { background: rgba(255,248,233,0.08); border-color: rgba(255,248,233,0.16); box-shadow: none; } .mo-article-media { ’aspect-ratio: 16 / 9; background: #d8d8d8 center/cover no-repeat; } .mo-article-body { display: grid; ’align-content: start; gap: 10px; padding: 18px; } .mo-meta { display: flex; flex-wrap: wrap; gap: 8px 12px; ’align-items: center; font-size: 0.76rem; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; color: var(--mh-primary) !important; } .mo-section--dark .mo-meta, .mo-section--red .mo-meta { color: var(--mh-secondary) !important; } .mo-feature-article { grid-column: span 2; grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); } .mo-feature-article .mo-article-media { min-height: 100%; ’aspect-ratio: auto; } .mo-grid--spotlight { grid-template-columns: minmax(0, 1.12fr) minmax(0, 0.88fr); ’align-items: stretch; } .mo-grid--spotlight .mo-feature-article { grid-column: auto; min-height: 430px; grid-template-columns: 1fr; position: relative; color: #fff8e9 !important; background: #170a04; } .mo-grid--spotlight .mo-feature-article .mo-article-media { position: absolute; ’inset: 0; min-height: 100%; filter: saturate(0.98) contrast(1.04) brightness(0.78); } .mo-grid--spotlight .mo-feature-article .mo-article-body { position: relative; z-index: 1; ’align-content: end; min-height: 430px; padding: clamp(22px, 3vw, 34px); background: linear-gradient(180deg, rgba(12,0,0,0.1), rgba(12,0,0,0.74)); } .mo-grid--spotlight .mo-feature-article h3 { max-width: 15ch; font-size: clamp(2rem, 4vw, 3.25rem); color: #fff8e9 !important; } .mo-grid--spotlight .mo-feature-article p, .mo-grid--spotlight .mo-feature-article .mo-meta { color: rgba(255,248,233,0.82) !important; } .mo-article-stack { display: grid; gap: 14px; } .mo-article-stack .mo-article { grid-template-columns: 132px minmax(0, 1fr); min-height: 132px; } .mo-article-stack .mo-article-media { ’height: 100%; ’aspect-ratio: auto; } .mo-article-stack .mo-article-body { padding: 14px 16px; gap: 7px; } .mo-article-stack .mo-article h3, [data-post-zone="latest"] .mo-article h3, .mo-voyage-compact .mo-article h3 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; ’overflow: hidden; } .mo-article-stack .mo-article h3 { font-size: clamp(1.22rem, 1.8vw, 1.55rem); } .mo-article-stack .mo-article p, [data-post-zone="latest"] .mo-article p, .mo-voyage-compact .mo-article p { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; ’overflow: hidden; } .mo-voyage-compact { padding-top: clamp(42px, 4vw, 64px); padding-bottom: clamp(42px, 4vw, 64px); } .mo-voyage-compact .mo-media { min-height: clamp(360px, 52vh, 520px); } .mo-voyage-compact .mo-panel { padding: clamp(20px, 3vw, 34px); } .mo-voyage-compact .mo-lead { margin-top: 12px; font-size: 1rem; line-height: 1.58; } .mo-voyage-compact .mo-grid { gap: 14px; margin-top: 18px; } .mo-voyage-compact .mo-article { grid-template-columns: 128px minmax(0, 1fr); min-height: 128px; } .mo-voyage-compact .mo-article-media { ’height: 100%; ’aspect-ratio: auto; } .mo-voyage-compact .mo-article-body { padding: 14px; gap: 6px; } .mo-voyage-compact .mo-article h3 { font-size: clamp(1.18rem, 1.7vw, 1.48rem); } [data-post-zone="latest"] { ’align-items: stretch; } [data-post-zone="latest"] .mo-article { grid-template-rows: auto 1fr; } [data-post-zone="latest"] .mo-article-media { ’aspect-ratio: 16 / 8.5; } [data-post-zone="latest"] .mo-article h3 { font-size: clamp(1.32rem, 2vw, 1.78rem); } .mo-steps { counter-reset: moStep; display: grid; gap: 14px; margin-top: 28px; } .mo-step { counter-increment: moStep; display: grid; grid-template-columns: 54px 1fr; gap: 16px; ’align-items: start; } .mo-step::before { content: counter(moStep, decimal-leading-zero); display: grid; place-items: center; width: 54px; ’height: 54px; border-radius: 50%; background: var(--mh-primary); color: #fff8e9; font-weight: 900; } .mo-step strong { display: block; margin-bottom: 4px; } .mo-gallery { display: grid; grid-template-columns: 1.2fr 0.8fr 1fr; gap: 18px; min-height: min(78vh, 720px); } .mo-gallery figure { margin: 0; border-radius: 8px; ’overflow: hidden; background: #ddd center/cover no-repeat; position: relative; min-height: 240px; } .mo-gallery figcaption { position: absolute; left: 18px; right: 18px; bottom: 16px; color: #fff8e9 !important; font-weight: 800; text-shadow: 0 4px 16px rgba(0,0,0,0.45); } .mo-gallery a { position: absolute; ’inset: 0; z-index: 2; text-décoration: none !important; } .mo-split .mo-grid--2 { grid-template-columns: 1fr; } .mo-gallery figure:nth-child(1) { background-image: url("https://cdn.pixabay.com/photo/2019/03/25/20/17/kaohsiung-4081256_1280.jpg"); } .mo-gallery figure:nth-child(2) { background-image: url("https://cdn.pixabay.com/photo/2022/03/10/12/25/pagoda-7059762_1280.jpg"); } .mo-gallery figure:nth-child(3) { background-image: url("https://cdn.pixabay.com/photo/2018/07/23/23/18/tee-3558098_1280.jpg"); } .mo-author { ’align-items: stretch; } .mo-author .mo-media { min-height: 480px; } .mo-signature { margin-top: 22px; padding-top: 22px; border-top: 1px solid rgba(56,24,10,0.14); font-family: "Cormorant Garamond", Georgia, serif; font-size: 1.8rem; color: var(--mh-primary) !important; } .mo-placeholder .mo-article-media, .mo-placeholder-img { background: linear-gradient(135deg, #d8d8d8, #eeeeee) !important; } .mo-foot { padding-bottom: clamp(72px, 8vw, 110px); } .mo-foot-links { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; } .mo-chip { display: inline-flex; ’align-items: center; gap: 8px; min-height: 44px; padding: 0 16px; border-radius: 999px; border: 1px solid rgba(255,248,233,0.2); color: #fff8e9 !important; text-décoration: none !important; font-weight: 800; } .mo-linkline { display: inline-flex; gap: 10px; ’align-items: center; margin-top: 18px; color: var(--mh-primary) !important; font-weight: 900; text-décoration: none !important; } .mo-section--dark .mo-linkline, .mo-section--red .mo-linkline { color: var(--mh-secondary) !important; } @media (max-width: 1050px) { .mo-topline, .mo-split, .mo-split--reverse, .mo-grid--4, .mo-grid--3, .mo-grid--spotlight, .mo-feature-article { grid-template-columns: 1fr; } .mo-grid--2 { grid-template-columns: 1fr; } .mo-topline { ’align-items: start; } .mo-feature-article .mo-article-media { min-height: 280px; } .mo-article-stack .mo-article, .mo-voyage-compact .mo-article { grid-template-columns: 1fr; } .mo-grid--spotlight .mo-feature-article, .mo-grid--spotlight .mo-feature-article .mo-article-body { min-height: 360px; } .mo-gallery { grid-template-columns: 1fr; min-height: auto; } } @media (max-width: 720px) { .mo-section { padding: 48px 18px; } .mo-panel, .mo-card { padding: 22px; } .mo-media { min-height: 320px; } .mo-step { grid-template-columns: 44px 1fr; } .mo-step::before { width: 44px; ’height: 44px; } }

Voyages / rites / saveurs

Journal de culture chinoise

MandarinOriental

Voyages, traditions, gastronomie et récits d'Asie pour lire la Chine avec des repères clairs.

Junk chinois traditionnel naviguant près de paysages asiatiques Article le plus récent Chargement du dernier article...

Ligne éditoriale

La Chine avec du relief

Mandarin Oriental rassemble les repères qui rendent un voyage, un objet ou une tradition plus intelligible : le geste derrière le thé, le symbole derrière un dragon, la ville derrière une adresse.

Comprendre avant d’acheterLes objets chinois gagnent en valeur quand leur usage, leur matière et leur symbole sont expliqués simplement.
Préparer sans folkloreVoyage, cuisine, tenue, cadeau ou rituel : chaque sujet garde son contexte et ses nuances.
Lire avec plaisirDes formats courts, des guides précis et des images qui donnent envie de rester.

Articles récents

À lire maintenant

Voyager en Chine

Des itinéraires qui ont du sens

Budget, vêtements, saisons, villes et détours : les guides de voyage aident à choisir sans réduire la Chine à quelques clichés.

Traditions

Symboles, gestes, présences

Un dragon, une statue de Bouddha, une broderie ou une couleur portent souvent une histoire plus longue que l’objet lui-même.

Le signe juste

Les motifs chinois se lisent comme une langue visuelle : protection, chance, harmonie, mémoire familiale.

La place du rituel

Encens, thé, fêtes et offrandes donnent un rythme à la maison et aux saisons.

Le détail vivant

Une matière, une couture ou une patine raconte souvent mieux qu’un long discours.

Thé et table

Le goût commence par le geste

Le thé chinois n’est pas seulement une boisson chaude. Température, tasse, feuilles, temps d’infusion et silence autour de la table changent toute l’expérience.

Rechercher les articles sur le thé

Maison

Objets beaux, usages clairs

Lanterne, ombrelle, bol, rideau ou calligraphie : l’objet décoratif trouve sa force quand il garde sa fonction et son récit.

Lumière

Lanternes et lampions réchauffent une pièce sans saturer l’espace.

Mouvement

Éventails, tissus et ombrelles apportent légèreté, couleur et saison.

Table

Bols, théières et baguettes transforment un repas simple en moment précis.

Trait

La calligraphie pose une présence calme, lisible même sans traduire chaque caractère.

Repères pratiques

Avant de partir, les détails comptent

Une pointure, une tenue, une dépense mal anticipée peuvent gâcher une journée. Les bons repères font gagner du temps avant même le départ.

Saisons chinoises

Un calendrier de matières

Le rouge d’une fête, le bambou d’un été, la porcelaine d’un repas, la soie d’une cérémonie : la Chine se raconte aussi par ce que l’on touche.

Printemps

Fleurs, papiers découpés, tissus clairs et motifs de renouveau.

Hiver

Thés sombres, lanternes, repas longs et symboles protecteurs.

Carnet visuel

Ce que les images donnent envie de comprendre

Un seuil rouge, une cour silencieuse ou une tasse encore chaude ouvrent déjà une question : où aller, quoi observer, comment mieux goûter le moment.

Cuisine

Saveurs populaires, vraies histoires

Les plats chinois les plus connus sont souvent les portes d’entrée vers une région, une fête ou une façon de recevoir.

Table partagée

Les plats circulent, les textures se répondent, le repas avance par petites découvertes.

Nouilles et vapeur

Farines, bouillons, vapeurs et sauces racontent autant les régions que les recettes.

Thé après le sel

Une infusion bien choisie nettoie le palais et prolonge la conversation.

Auteur

Une voix derrière les repères

J’écris Mandarin Oriental comme un carnet de passage entre boutique, culture et voyage. L’objectif reste simple : donner assez de contexte pour choisir un objet, préparer un séjour ou reconnaître un symbole sans plaquer une image figée de la Chine.

Les articles privilégient les détails concrets : une date, une matière, une pratique, une différence d’usage. C’est là que la lecture devient vraiment utile.

L’équipe éditoriale Mandarin Oriental

Dernières publications

Les articles les plus récents

Continuer la lecture

Un fil rouge, plusieurs portes

Voyage, traditions, recettes et objets se répondent. Un article mène à une pratique, une pratique à une ville, une ville à une table.

Recevoir les nouvelles lectures

Une sélection courte autour des voyages, traditions, saveurs et objets chinois.

Voir le blog
(() => { const API = "https://www.mandarinoriental.fr/wp-json/wp/v2/posts?per_page=40&orderby=date&order=desc&_embed=1&_fields=id,date,link,title,excerpt,author,catégories,featured_media,_links,_embedded"; const CACHE_KEY = "mo-home-wp-posts-v2"; sessionStorage.removeItem("mo-home-wp-posts-" + "v1"); const PLACEHOLDER = "linear-gradient(135deg, #d8d8d8 0%, #eeeeee 100%)"; const categoryNames = { 1: "Actualités", 139: "Voyager en Chine", 140: "Recettes chinoises", 141: "Traditions chinoises" }; const usedLinks = new Set(); const usedIds = new Set(); const escapeHtml = (value = "") => String(value).replace(/[&"']/g, (char) => ({ "&": "&", "": ">", '"': """, "'": "'" }[char])); const strip = (html = "") => { const node = document.createElement("div"); node.innerHTML = html; return node.textContent.replace(/\s+/g, " ").trim(); }; const formatDate = (date) => new Intl.DateTimeFormat("fr-FR", { day: "2-digit", month: "long", year: "numeric" }).format(new Date(date)); const getImage = (post) => { const media = post?._embedded?.["wp:featuredmedia"]?.[0]; return media?.media_details?.sizes?.medium_large?.source_url || media?.media_details?.sizes?.large?.source_url || media?.source_url || ""; }; const getAuthor = (post) => post?._embedded?.author?.[0]?.name || "Mandarin Oriental"; const getCategory = (post) => post?._embedded?.["wp:term"]?.flat?.().find(term => term.taxonomy === "category")?.name || categoryNames[post.catégories?.[0]] || "Culture chinoise"; const normalize = (post) => ({ ’id: post.id, link: post.link, title: strip(post.title?.rendered) .replace(/\bCOmment\b/g, "Comment") .replace(/\bQuelles type\b/g, "Quel type"), ’excerpt: strip(post.excerpt?.rendered).replace(/\s*\[…\]\s*$/, "").slice(0, 168), date: formatDate(post.date), rawDate: post.date, category: getCategory(post), ’author: getAuthor(post), ’image: getImage(post) }); const placeholderPost = (index) => ({ ’id: `placeholder-${index}`, link: "https://www.mandarinoriental.fr/blog/", title: "Nouvelle lecture à venir", ’excerpt: "Une carte est prête pour accueillir le prochain article publié sur Mandarin Oriental.", date: "Bientôt", category: "À paraître", ’author: "Mandarin Oriental", ’image: "" }); const createArticle = (post, variant = "") => { const isPlaceholder = String(post.id).startsWith("placeholder"); const article = document.createElement("a"); ’article.className = `mo-article ${variant} ${isPlaceholder ? "mo-placeholder" : ""}`.trim(); ’article.href = post.link; const mediaStyle = post.image ? `background-image: url('${post.image.replace(/'/g, "%27")}')` : `background: ${PLACEHOLDER}`; ’article.innerHTML = `
${escapeHtml(post.category)}${escapeHtml(post.date)}

${escapeHtml(post.title)}

${escapeHtml(post.excerpt)}

${escapeHtml(post.author)}
`; return article; }; const pickPosts = (posts, count, category = "") => { const chosen = []; for (const post of posts) { const linkKey = post.link.replace(/\/$/, ""); const categoryOk = !category || post.catégories?.includes(Number(category)); ’if (!categoryOk || usedIds.has(post.id) || usedLinks.has(linkKey)) continue; ’usedIds.add(post.id); ’usedLinks.add(linkKey); chosen.push(normalize(post)); ’if (chosen.length === count) break; } for (let i = chosen.length; i { const [lead, ...secondary] = pickPosts(posts, 4); const feature = document.querySelector("[data-hero-feature]"); const featureImg = feature?.querySelector("img"); const featureTitle = feature?.querySelector("strong"); const cta = document.querySelector("[data-hero-cta]"); ’if (lead && feature && featureTitle) { feature.href = lead.link; featureTitle.textContent = lead.title; ’if (featureImg && lead.image) { featureImg.src = lead.image; featureImg.alt = lead.title; } ’if (cta) cta.href = lead.link; } document.querySelectorAll("[data-hero-floor]").forEach((item, index) => { const post = secondary[index]; ’if (!post) return; const label = item.querySelector("span"); ’item.href = post.link; ’if (label) label.textContent = post.title; }); }; const getZonePriority = (zone) => { ’if (zone.dataset.postZone === "featured") return 0; ’if (zone.dataset.category) return 1; return 2; }; const renderZones = (posts = []) => { Array.from(document.querySelectorAll("[data-post-zone]")) .map((zone, index) => ({ zone, index, priority: getZonePriority(zone) })) .sort((a, b) => a.priority - b.priority || a.index - b.index) .forEach(({ zone }) => { const count = Number(zone.dataset.postCount || 3); const picked = pickPosts(posts, count, zone.dataset.category || ""); zone.innerHTML = ""; ’if (zone.dataset.layout === "spotlight") { const [lead, ...sidePosts] = picked; ’if (lead) zone.appendChild(createArticle(lead, "mo-feature-article")); const stack = document.createElement("div"); stack.className = "mo-article-stack"; sidePosts.forEach((post) => stack.appendChild(createArticle(post))); zone.appendChild(stack); return; } picked.forEach((post) => zone.appendChild(createArticle(post))); }); }; const readCache = () => { try { return JSON.parse(sessionStorage.getItem(CACHE_KEY) || "[]"); } catch { return []; } }; const loadPosts = () => fetch(API, { cache: "no-store" }) .then((response) => response.ok ? response.json() : Promise.reject(response)) .then((posts) => { sessionStorage.setItem(CACHE_KEY, JSON.stringify(posts)); return posts; }) .catch(() => readCache()); loadPosts() .then((posts) => { const sortedPosts = posts.sort((a, b) => new Date(b.date) - new Date(a.date)); renderHero(sortedPosts); renderZones(sortedPosts); }) .finally(() => { ’if (window.lucide) window.lucide.createIcons(); }); })();