body.page-itineraries,
body.page-itinerary-detail {
  --it-surface: #f8fbff;
  --it-card: #ffffff;
  --it-ink: #101b37;
  --it-soft: #50617e;
  --it-line: rgba(19, 43, 86, .17);
  --it-accent: #285cff;
  --it-accent-wash: rgba(40, 92, 255, .11);
  --it-map: #dde9e6;
  --it-map-country: #578ba6;
  --it-map-coast: #47758d;
  background: var(--page-bg, #e9f0ff);
  color: var(--it-ink);
}
html:has(body.page-itinerary-detail),
body.page-itinerary-detail { overflow-x:clip; overflow-y:visible; }
body.page-itineraries.theme-morning,
body.page-itinerary-detail.theme-morning {
  --it-surface: #fff7f3;
  --it-card: #fffdfb;
  --it-ink: #3d2031;
  --it-soft: #78596b;
  --it-line: rgba(146, 68, 94, .2);
  --it-accent: #de4f79;
  --it-accent-wash: rgba(222, 79, 121, .12);
  --it-map: #f2e7db;
  --it-map-country: #d78d81;
  --it-map-coast: #af716c;
  background:#fff0e8;
}
body.page-itineraries.theme-night,
body.page-itinerary-detail.theme-night {
  --it-surface: #0d192b;
  --it-card: #111e33;
  --it-ink: #f3f6ff;
  --it-soft: #bbc8df;
  --it-line: rgba(244, 207, 113, .29);
  --it-accent: #f7d572;
  --it-accent-wash: rgba(247, 213, 114, .13);
  --it-map: #1d2f3e;
  --it-map-country: #467c91;
  --it-map-coast: #77adbd;
  background: #071222;
}
body.page-itineraries .itinerary-list-stage { padding: clamp(64px, 9vw, 120px) 0 140px; }
body.page-itineraries .itinerary-list-inner { max-width: 1220px; margin: auto; }
.itinerary-eyebrow { display:block; color:var(--it-accent); font:800 .73rem/1.35 var(--font-ui); letter-spacing:.09em; text-transform:uppercase; }
.itinerary-list-intro { max-width: 820px; margin:0 0 clamp(34px,5vw,64px); }
.itinerary-list-intro h1 { margin:10px 0 18px; color:var(--it-ink); font:800 clamp(3.2rem,7vw,6.3rem)/.99 var(--font-ui); letter-spacing:-.055em; }
.itinerary-list-intro p { margin:0; color:var(--it-soft); font:400 clamp(1.1rem,1.7vw,1.42rem)/1.45 var(--font-body); }
.itinerary-list-card { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(0,.9fr); overflow:hidden; border:1px solid var(--it-line); border-radius:30px; background:var(--it-card); box-shadow:0 20px 55px rgba(12,25,52,.1); }
.itinerary-list-image { display:block; min-height:470px; overflow:hidden; }
.itinerary-list-image picture,.itinerary-list-image img { display:block; width:100%; height:100%; }
.itinerary-list-image img { object-fit:cover; object-position:center 45%; transition:transform .35s ease; }
.itinerary-list-card:hover .itinerary-list-image img { transform:scale(1.025); }
.itinerary-list-copy { display:flex; flex-direction:column; justify-content:center; align-items:flex-start; padding:clamp(30px,4vw,62px); }
.itinerary-list-copy h2 { margin:13px 0 17px; color:var(--it-ink); font:800 clamp(2rem,3.2vw,3.5rem)/1.04 var(--font-ui); letter-spacing:-.045em; }
.itinerary-list-copy h2 a { color:inherit; text-decoration:none; }
.itinerary-list-copy p { margin:0; color:var(--it-soft); font:400 1rem/1.55 var(--font-body); }
.itinerary-list-places { display:flex; flex-wrap:wrap; gap:7px; margin:23px 0 30px; }
.itinerary-list-places span { padding:7px 10px; border:1px solid var(--it-line); border-radius:999px; color:var(--it-ink); font:700 .72rem/1.2 var(--font-ui); }
.itinerary-list-cta { margin-top:auto; }

.itinerary-hero { position:relative; height:clamp(340px,39vw,510px); margin:0; overflow:hidden; background:#15263a; color:#fff; }
.itinerary-hero > picture,.itinerary-hero > picture img { position:absolute; inset:0; width:100%; height:100%; }
.itinerary-hero > picture img { object-fit:cover; object-position:center 46%; }
.itinerary-hero-back { position:absolute; z-index:2; inset:calc(var(--header-height) + 14px) 0 auto; }
/* Même traitement que le retour sur les fiches et les articles, sur photo. */
.itinerary-hero-back .place-rec-detail-back-link { display:inline-flex; align-items:center; gap:.62rem; min-height:2.75rem; padding:.38rem .9rem .38rem .42rem; border:1px solid rgba(255,255,255,.34); border-radius:999px; background:rgba(6,15,31,.34); color:rgba(255,255,255,.92); box-shadow:0 8px 24px rgba(2,8,20,.12); backdrop-filter:blur(12px) saturate(125%); -webkit-backdrop-filter:blur(12px) saturate(125%); font:750 .74rem/1.2 var(--font-ui); letter-spacing:.055em; text-decoration:none; text-transform:uppercase; transition:color .18s ease,background-color .18s ease,border-color .18s ease,box-shadow .18s ease,transform .18s ease; }
.itinerary-hero-back .place-rec-detail-back-link .template-arrow-circle { flex:0 0 24px; border-color:rgba(255,255,255,.38); color:#fff; background:rgba(255,255,255,.12); }
.itinerary-hero-back .place-rec-detail-back-link:hover,.itinerary-hero-back .place-rec-detail-back-link:focus-visible { border-color:rgba(255,255,255,.58); color:#fff; background:rgba(6,15,31,.52); box-shadow:0 12px 30px rgba(2,8,20,.2); transform:translateY(-1px); }
.theme-night .itinerary-hero-back .place-rec-detail-back-link { color:rgba(255,255,255,.94); background:rgba(0,0,0,.2); box-shadow:0 8px 24px rgba(0,0,0,.18); }
.theme-night .itinerary-hero-back .place-rec-detail-back-link:hover,.theme-night .itinerary-hero-back .place-rec-detail-back-link:focus-visible { background:rgba(0,0,0,.36); box-shadow:0 12px 30px rgba(0,0,0,.26); }
.itinerary-main { position:relative; z-index:2; padding-bottom:100px; }
body.page-itinerary-detail .itinerary-intro.template-hero { width:calc(100% - 552px); max-width:700px; margin:0; padding-top:clamp(38px,5vw,64px); }
.itinerary-intro h1 { margin:11px 0 18px; color:var(--it-ink); font:800 clamp(2.5rem,5vw,4.7rem)/1.04 var(--font-ui); letter-spacing:-.055em; text-wrap:balance; }
.itinerary-intro .lead { max-width:720px; margin:0; color:var(--it-soft); font:400 clamp(1.04rem,1.4vw,1.25rem)/1.48 var(--font-body); }
.itinerary-overview { display:flex; align-items:center; justify-content:space-between; gap:20px; width:calc(100% - 552px); max-width:700px; padding:30px 0 45px; }
.itinerary-facts { display:flex; flex-wrap:wrap; gap:9px; }
.itinerary-facts span { padding:11px 15px; border:1px solid var(--it-line); border-radius:999px; background:var(--it-card); color:var(--it-ink); font:750 .74rem/1.2 var(--font-ui); }
.itinerary-overview > p { margin:0; color:var(--it-soft); font:700 .78rem/1.2 var(--font-ui); }
.itinerary-layout { display:grid; grid-template-columns:minmax(0,1fr) minmax(420px,500px); align-items:start; gap:clamp(28px,4vw,64px); }
.itinerary-story { min-width:0; }
body.page-itinerary-detail .itinerary-stage.recommendation-rank-item { position:relative; grid-template-columns:66px minmax(0,1fr); gap:22px; border:0; padding:0 0 clamp(52px,7vw,90px); scroll-margin-top:calc(var(--header-height) + 18px); }
.itinerary-stage-rail { position:relative; display:flex; justify-content:center; }
.itinerary-stage:not(:last-child) .itinerary-stage-rail::after { content:""; position:absolute; top:54px; bottom:-40px; left:50%; width:1px; background:var(--it-line); }
.itinerary-stage-number { position:relative; z-index:1; display:grid; place-items:center; width:49px; height:49px; border:1px solid var(--it-line); border-radius:50%; background:var(--it-card); color:var(--it-ink); font:800 1rem/1 var(--font-ui); transition:background .25s,color .25s,transform .25s; }
.itinerary-stage.is-active .itinerary-stage-number { transform:scale(1.06); border-color:var(--it-accent); background:var(--it-accent); color:var(--it-surface); }
body.page-itinerary-detail.theme-night .itinerary-stage.is-active .itinerary-stage-number { color:#162036; }
.itinerary-stage-content { min-width:0; padding:5px 0 0; }
body.page-itinerary-detail .itinerary-stage-content h2 { margin:5px 0 12px; color:var(--it-ink); font:800 clamp(2rem,3.9vw,3.8rem)/1.04 var(--font-ui); letter-spacing:-.05em; }
body.page-itinerary-detail .itinerary-stage-summary { max-width:750px; margin:0 0 23px; color:var(--it-ink); font:500 clamp(1.02rem,1.45vw,1.23rem)/1.5 var(--font-body); }
.itinerary-stage-image { margin:0 0 22px; overflow:hidden; border-radius:24px; aspect-ratio:16 / 9; background:var(--it-map); }
.itinerary-stage-image picture,.itinerary-stage-image img { display:block; width:100%; height:100%; }
.itinerary-stage-image img { object-fit:cover; object-position:center 45%; }
body.page-itinerary-detail .itinerary-stage-note { margin:0 0 21px; color:var(--it-soft); font:400 1rem/1.55 var(--font-body); }
.itinerary-stage-link { display:inline-flex; margin:0 0 24px; }
.itinerary-stage-transfer { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:14px; margin-top:2px; }
.itinerary-stage-transfer p { display:grid; gap:4px; flex:1 1 190px; margin:0; padding:12px 15px; border:1px solid var(--it-line); border-radius:16px; background:var(--it-card); }
.itinerary-stage-transfer p span { color:var(--it-soft); font:750 .7rem/1.25 var(--font-ui); letter-spacing:.035em; text-transform:uppercase; }
.itinerary-stage-transfer p strong { color:var(--it-ink); font:800 .92rem/1.25 var(--font-ui); }
.itinerary-stage-transfer .template-article-link { display:inline-flex; }
.itinerary-stage-resources { margin:3px 0 23px; padding:19px 21px; border:1px solid var(--it-line); border-radius:19px; background:var(--it-card); }
.itinerary-stage-resources h3 { margin:0 0 14px; color:var(--it-ink); font:800 1rem/1.2 var(--font-ui); }
.itinerary-stage-resource-group + .itinerary-stage-resource-group { margin-top:13px; }
.itinerary-stage-resource-group > span { display:block; margin-bottom:7px; color:var(--it-soft); font:750 .69rem/1.2 var(--font-ui); letter-spacing:.05em; text-transform:uppercase; }
.itinerary-stage-resource-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; }
.itinerary-stage-resource-card { display:flex; align-items:center; gap:11px; min-width:0; min-height:81px; padding:7px; border:1px solid var(--it-line); border-radius:15px; color:var(--it-ink); background:var(--it-surface); text-decoration:none; transition:border-color .2s,transform .2s; }
html body.index2-page .itinerary-stage-resource-card .ms-responsive-picture { flex:0 0 76px; width:76px; height:66px; overflow:hidden; border-radius:10px; background:var(--it-map); }
.itinerary-stage-resource-card img { width:100%; height:100%; object-fit:cover; }
.itinerary-stage-resource-card strong { min-width:0; font:750 .78rem/1.28 var(--font-ui); overflow-wrap:anywhere; }
.itinerary-stage-resource-card:hover,.itinerary-stage-resource-card:focus-visible { border-color:var(--it-accent); transform:translateY(-2px); }
.itinerary-map-panel { position:sticky; top:104px; z-index:3; overflow:visible; margin-top:-720px; background:transparent; }
.itinerary-map-dock { position:relative; z-index:500; margin:0 10px; border:1px solid var(--it-line); border-radius:18px; background:color-mix(in srgb,var(--it-card) 80%,transparent); backdrop-filter:blur(12px); }
.itinerary-map-head { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 16px 8px; }
.itinerary-map-head strong { display:block; margin-top:5px; color:var(--it-ink); font:800 1.18rem/1.15 var(--font-ui); }
.itinerary-map-counter { color:var(--it-soft); font:800 .7rem/1 var(--font-ui); letter-spacing:.06em; }
.itinerary-map-viewport { position:relative; height:min(78vh,750px); min-height:640px; overflow:hidden; border:0; border-radius:0; background:transparent; }
.itinerary-map { position:absolute; inset:0; }
.itinerary-map-fallback { position:absolute; inset:auto 20px 20px; z-index:1; max-width:260px; margin:0; padding:10px; border-radius:12px; background:var(--it-card); color:var(--it-ink); font:600 .75rem/1.35 var(--font-body); }
.itinerary-map-panel.is-ready .itinerary-map-fallback { display:none; }
.itinerary-map-panel .leaflet-container { background:transparent; font-family:var(--font-body); }
.itinerary-map-panel .leaflet-control-attribution { background:color-mix(in srgb,var(--it-card) 86%,transparent); color:var(--it-soft); font-size:10px; }
.itinerary-map-panel .leaflet-control-attribution a { color:#174b76; }
body.page-itinerary-detail.theme-morning .leaflet-tile-pane { filter:sepia(.2) saturate(.8); }
body.page-itinerary-detail.theme-night .leaflet-tile-pane { filter:brightness(.66) saturate(.7); }
.itinerary-map-panel .leaflet-control-zoom { display:inline-flex; flex-direction:column; gap:6px; padding:4px; border:1px solid var(--it-line); border-radius:10px; overflow:visible; background:color-mix(in srgb,var(--it-card) 82%,transparent); backdrop-filter:blur(7px); box-shadow:0 10px 22px rgba(30,66,132,.16); }
.itinerary-map-panel .leaflet-bottom .leaflet-control-zoom { margin-bottom:18px; }
.itinerary-map-panel .leaflet-control-zoom a { width:30px; height:30px; line-height:30px; border:1px solid var(--it-line); border-radius:8px; color:var(--it-ink); background:var(--it-card); box-shadow:0 6px 14px rgba(30,66,132,.12); font:700 .9rem/30px var(--font-ui); }
.itinerary-map-panel .leaflet-control-zoom a:hover,.itinerary-map-panel .leaflet-control-zoom a:focus-visible { color:var(--it-accent); background:var(--it-card); }
.itinerary-map-close,.itinerary-map-fab,.itinerary-map-backdrop { display:none; }
.itinerary-marker { display:grid; place-items:center; width:25px; height:25px; border:3px solid #fff; border-radius:50%; background:#567686; box-shadow:0 2px 12px rgba(0,0,0,.25); color:#fff; font:800 .65rem/1 var(--font-ui); }
.itinerary-marker.is-active { width:31px; height:31px; background:#e16c48; box-shadow:0 0 0 5px rgba(225,108,72,.22),0 3px 15px rgba(0,0,0,.3); }
.itinerary-map-panel .leaflet-tooltip { border:0; border-radius:9px; padding:4px 8px; background:var(--it-card); color:var(--it-ink); box-shadow:0 2px 10px rgba(0,0,0,.15); font:750 .72rem/1.2 var(--font-ui); }
.itinerary-map-controls { display:grid; grid-template-columns:1fr 1fr; gap:7px; padding:5px 14px 0; }
.itinerary-map-controls button { min-height:38px; padding:8px 10px; border:1px solid var(--it-line); border-radius:999px; background:transparent; color:var(--it-ink); font:750 .72rem/1.1 var(--font-ui); cursor:pointer; }
.itinerary-map-controls button[aria-pressed="true"] { border-color:var(--it-accent); background:var(--it-accent); color:var(--it-card); }
body.page-itinerary-detail.theme-night .itinerary-map-controls button[aria-pressed="true"] { color:#162036; }
.itinerary-map-step-buttons { display:flex; justify-content:center; gap:7px; padding:8px 14px 12px; }
.itinerary-map-info-toggle { display:none; }
.itinerary-map-step-buttons button { width:29px; height:29px; border:1px solid var(--it-line); border-radius:50%; background:transparent; color:var(--it-soft); font:800 .68rem/1 var(--font-ui); cursor:pointer; }
.itinerary-map-step-buttons button[aria-current="step"] { border-color:var(--it-accent); background:var(--it-accent-wash); color:var(--it-accent); }
.itinerary-map-controls button:focus-visible,.itinerary-map-step-buttons button:focus-visible { outline:2px solid var(--it-accent); outline-offset:2px; }
.itinerary-bottom-nav { padding:22px 0 0; border-top:1px solid var(--it-line); }
.itinerary-bottom-nav a { color:var(--it-accent); }
.itinerary-more { margin:30px 0 55px; padding:clamp(24px,4vw,42px); border:1px solid var(--it-line); border-radius:27px; background:var(--it-card); }
.itinerary-more h2 { margin:8px 0 10px; color:var(--it-ink); font:800 clamp(1.8rem,3vw,2.7rem)/1.08 var(--font-ui); letter-spacing:-.045em; }
.itinerary-more > p { max-width:720px; margin:0; color:var(--it-soft); font:400 1rem/1.5 var(--font-body); }
.itinerary-more-links { display:flex; flex-wrap:wrap; gap:10px; margin-top:25px; }
.itinerary-more-links a { display:inline-flex; align-items:center; gap:10px; max-width:100%; min-height:45px; padding:8px 12px 8px 16px; border:1px solid var(--it-line); border-radius:999px; color:var(--it-ink); background:var(--it-accent-wash); font:750 .78rem/1.25 var(--font-ui); text-decoration:none; }
.itinerary-more-links a:hover,.itinerary-more-links a:focus-visible { border-color:var(--it-accent); }
.itinerary-more-links .template-arrow-circle { flex:none; }
@media (max-width:1000px) {
  .itinerary-layout { grid-template-columns:minmax(0,1fr) 330px; gap:28px; }
  body.page-itinerary-detail .itinerary-intro.template-hero,.itinerary-overview { width:calc(100% - 358px); }
  .itinerary-map-viewport { height:520px; min-height:0; }
  .itinerary-map-panel { margin-top:-600px; }
  body.page-itinerary-detail .itinerary-stage.recommendation-rank-item { grid-template-columns:52px minmax(0,1fr); gap:12px; }
}
@media (max-width:760px) {
  body.page-itineraries .itinerary-list-stage { padding:55px 0 90px; }
  .itinerary-list-card { grid-template-columns:1fr; border-radius:23px; }
  .itinerary-list-image { min-height:0; height:260px; }
  .itinerary-list-copy { padding:26px; }
  .itinerary-list-cta { margin-top:12px; }
  .itinerary-hero { height:310px; }
  .itinerary-hero-back { top:calc(var(--header-height) + 10px); }
  body.page-itinerary-detail .itinerary-intro.template-hero { width:100%; max-width:none; padding-top:35px; }
  .itinerary-intro h1 { font-size:clamp(2.35rem,9vw,3.3rem); }
  .itinerary-overview { display:block; width:100%; max-width:none; padding:23px 0 26px; }
  .itinerary-overview > p { margin:15px 0 0; }
  .itinerary-layout { display:flex; flex-direction:column-reverse; gap:29px; }
  .itinerary-map-panel { align-self:stretch; position:relative; top:auto; width:100%; margin-top:0; overflow:hidden; border-radius:20px; background:var(--it-card); }
  .itinerary-story { width:100%; }
  .itinerary-map-head { padding:10px 14px 8px; }
  .itinerary-map-head strong { font-size:.92rem; }
  .itinerary-map-head .itinerary-eyebrow { font-size:.55rem; }
  .itinerary-map-viewport { height:440px; min-height:0; }
  .itinerary-map-dock { margin:0; border:0; border-top:1px solid var(--it-line); border-radius:0; background:var(--it-card); box-shadow:0 -5px 16px rgba(15,30,55,.045); backdrop-filter:none; }
  .itinerary-map-info-toggle { display:block; max-width:115px; padding:6px 9px; border:1px solid var(--it-line); border-radius:999px; background:var(--it-accent-wash); color:var(--it-ink); font:750 .63rem/1.1 var(--font-ui); cursor:pointer; }
  .itinerary-map-panel.is-info-collapsed .itinerary-map-options { display:none; }
  .itinerary-map-controls { padding:8px 11px 2px; }
  .itinerary-map-controls button { min-height:32px; font-size:.63rem; }
  .itinerary-map-step-buttons { padding:6px 10px 10px; }
  .itinerary-map-step-buttons button { width:24px; height:24px; }
  .itinerary-map-fab { position:fixed; z-index:800; top:52%; right:0; display:flex; align-items:center; gap:5px; padding:12px 8px 12px 10px; border:1px solid var(--it-line); border-right:0; border-radius:14px 0 0 14px; background:var(--it-card); color:var(--it-ink); box-shadow:0 7px 24px rgba(13,29,58,.18); font:800 .68rem/1 var(--font-ui); cursor:pointer; transform:translateX(calc(100% + 4px)); transition:transform .24s ease; }
  .itinerary-map-fab svg { width:19px; height:19px; color:var(--it-accent); }
  body.itinerary-map-fab-visible:not(.itinerary-map-modal-open) .itinerary-map-fab { transform:translateX(0); }
  .itinerary-map-backdrop { position:fixed; z-index:9990; inset:0; width:100%; height:100%; border:0; background:rgba(7,18,35,.66); }
  body.itinerary-map-modal-open .itinerary-map-backdrop { display:block; }
  body.itinerary-map-modal-open .itinerary-main { z-index:10000; }
  body.itinerary-map-modal-open .itinerary-map-panel { position:fixed; z-index:9991; inset:clamp(12px,3vh,24px) 12px; display:flex; flex-direction:column; width:auto; max-height:none; margin:0; border-radius:20px; box-shadow:0 24px 65px rgba(3,12,28,.35); }
  body.itinerary-map-modal-open .itinerary-map-viewport { flex:1 1 auto; height:auto; min-height:0; }
  body.itinerary-map-modal-open .itinerary-map-dock { flex:none; }
  body.itinerary-map-modal-open .itinerary-map-close { position:absolute; z-index:1100; top:11px; right:11px; display:grid; place-items:center; width:38px; height:38px; border:1px solid var(--it-line); border-radius:50%; background:var(--it-card); color:var(--it-ink); font:400 1.55rem/1 var(--font-ui); cursor:pointer; }
  body.itinerary-map-modal-open .itinerary-map-head { padding-right:58px; }
  body.itinerary-map-modal-open { overflow:hidden; }
  body.page-itinerary-detail .itinerary-stage.recommendation-rank-item { grid-template-columns:43px minmax(0,1fr); gap:10px; padding-bottom:58px; }
  .itinerary-stage-number { width:37px; height:37px; font-size:.8rem; }
  .itinerary-stage:not(:last-child) .itinerary-stage-rail::after { top:42px; }
  body.page-itinerary-detail .itinerary-stage-content h2 { font-size:clamp(1.85rem,7vw,2.6rem); }
  .itinerary-stage-image { border-radius:17px; aspect-ratio:4 / 3; }
}
@media (max-width:500px) {
  .itinerary-stage-resource-grid { grid-template-columns:1fr; }
}
@media (prefers-reduced-motion:reduce) {
  .itinerary-list-image img,.itinerary-stage-number { transition:none; }
}
