/* Catalogue des voyages (/nos-voyages-personnalises/) et pages programme (/programme/<slug>/)
   Charte Adelante (tokens --ad-* de src/css/input.css) ; motif signature : le trajet en
   pointillés du logo. Un seul moment animé par page, coupé si prefers-reduced-motion. */
.pg { --ink:#1d1d1b; --text:#2b2824; --stone:#6b645c; --sand:#f7f1e8; --line:#e7ded1; --orange:#d86727; --orange-dark:#b9541b; --amber:#f2b45a;
  --photo-radius:28px 28px 28px 120px;
  background:var(--sand); color:var(--text); line-height:1.65; }
.pg a { text-decoration:none; color:inherit; }
.pg [id] { scroll-margin-top:100px; }
.pg [hidden] { display:none !important; }
.pg-wrap { max-width:72rem; margin:0 auto; padding:0 1.25rem; }
.pg h1, .pg h2, .pg h3 { color:var(--ink); font-weight:800; letter-spacing:-.03em; line-height:1.06; text-wrap:balance; margin:0; }
.pg h1 { font-size:clamp(2.6rem, 6vw, 5rem); max-width:12ch; }
.pg h2 { font-size:clamp(1.9rem, 3.4vw, 2.8rem); letter-spacing:-.025em; line-height:1.12; max-width:22ch; }
.pg h3 { font-size:1.3rem; letter-spacing:-.015em; line-height:1.25; }
.pg-lead { font-size:1.08rem; color:var(--stone); max-width:38rem; margin:1rem 0 0; }
.pg-note { font-size:.9rem; color:var(--stone); }
.pg-dark { background:var(--ink); color:#fff; }
.pg-dark h1, .pg-dark h2, .pg-dark h3 { color:#fff; }
.pg-dark .pg-lead { color:rgba(255,255,255,.78); }
.pg-section { padding-top:5.5rem; padding-bottom:5.5rem; }

.pg .av-btn i { font-size:.9em; }
.pg .av-btn:focus-visible, .pg-chip:focus-visible, .pg-search:focus-visible { outline:3px solid var(--amber); outline-offset:3px; }

/* ---------- Catalogue : héros ---------- */
.pg-hero { overflow:hidden; }
.pg-hero-grid { display:grid; grid-template-columns:minmax(0,7fr) minmax(0,5fr); gap:3rem; align-items:center; min-height:min(72vh, 38rem); padding-top:3.5rem; padding-bottom:3.5rem; }
.pg-hero-actions { display:flex; flex-wrap:wrap; gap:.85rem; margin-top:2rem; }
.pg-route { width:100%; height:auto; overflow:visible; }
.pg-route-path { fill:none; stroke:var(--amber); stroke-width:3; stroke-dasharray:2 11; stroke-linecap:round; }
.pg-route-mask { fill:none; stroke:#fff; stroke-width:14; stroke-dasharray:1; stroke-dashoffset:1; animation:pg-draw 2.4s .3s cubic-bezier(.65,0,.35,1) forwards; }
.pg-route-pin circle { fill:var(--orange); stroke:var(--ink); stroke-width:4; }
.pg-route-pin text { fill:#fff; font:600 16px Montserrat, sans-serif; }
.pg-route-pin { opacity:0; animation:pg-pop .5s cubic-bezier(.34,1.56,.64,1) forwards; transform-box:fill-box; transform-origin:center; }
.pg-route-pin.p1 { animation-delay:.35s; }
.pg-route-pin.p2 { animation-delay:1.45s; }
.pg-route-pin.p3 { animation-delay:2.55s; }
.pg-route-traveller { fill:#fff; offset-path:path('M40 350 C 150 330, 110 190, 240 190 S 390 150, 470 60'); offset-distance:0%; opacity:0; animation:pg-travel 2.4s .3s cubic-bezier(.65,0,.35,1) forwards; }
@keyframes pg-draw { to { stroke-dashoffset:0; } }
@keyframes pg-pop { from { opacity:0; transform:scale(.3); } to { opacity:1; transform:scale(1); } }
@keyframes pg-travel { 0% { offset-distance:0%; opacity:1; } 92% { opacity:1; } 100% { offset-distance:100%; opacity:0; } }

/* ---------- Catalogue : carte ---------- */
.pg-explore-head { display:flex; justify-content:space-between; align-items:end; gap:1.5rem; margin-bottom:1.75rem; }
.pg-map-shell { position:relative; isolation:isolate; border-radius:28px; overflow:hidden; border:1px solid var(--line); background:#fff; }
.pg-map { height:480px; width:100%; z-index:0; }
.pg-map-status { position:absolute; left:1rem; bottom:1rem; z-index:500; display:flex; align-items:center; gap:.75rem; background:var(--ink); color:#fff; border-radius:999px; padding:.55rem .6rem .55rem 1.1rem; font-size:.92rem; font-weight:600; box-shadow:0 10px 30px rgba(29,29,27,.25); }
.pg-map-status button { border:0; background:rgba(255,255,255,.14); color:#fff; border-radius:999px; padding:.35rem .8rem; font:600 .85rem Montserrat, sans-serif; cursor:pointer; }
.pg-map-status button:hover { background:var(--orange); }
.pg-pin { width:16px; height:16px; border-radius:50%; background:#d86727; border:3px solid #fff; box-shadow:0 2px 8px rgba(0,0,0,.35); transition:transform .25s ease, background .25s ease; }
.pg-pin.is-active { background:#1d1d1b; transform:scale(1.35); }

/* ---------- Catalogue : filtres + fiches ---------- */
.pg-toolbar { position:sticky; top:88px; z-index:20; display:flex; gap:.6rem; flex-wrap:wrap; align-items:center; padding:.85rem 0; margin:1.75rem 0 .25rem; background:var(--sand); border-bottom:1px solid var(--line); }
.pg-search { flex:1; min-width:220px; padding:.8rem 1.1rem; border:1.5px solid var(--line); border-radius:999px; background:#fff; color:var(--ink); font:500 .98rem Montserrat, sans-serif; }
.pg-search:focus { outline:none; border-color:var(--orange); box-shadow:0 0 0 3px rgba(216,103,39,.18); }
.pg-chip { padding:.7rem 1.15rem; background:transparent; border:1.5px solid var(--line); border-radius:999px; color:var(--ink); font:600 .92rem Montserrat, sans-serif; cursor:pointer; transition:background .2s ease, border-color .2s ease, color .2s ease; }
.pg-chip:hover { border-color:var(--ink); }
.pg-chip.is-active { background:var(--ink); border-color:var(--ink); color:#fff; }
.pg-count { font-size:.9rem; color:var(--stone); margin:.85rem 0 1.75rem; }
.pg-b2b-hint { margin:-1rem 0 1.75rem; padding:.9rem 1.1rem; border-left:3px solid var(--orange); background:#fff; border-radius:0 14px 14px 0; color:var(--text); max-width:46rem; }
.pg-b2b-hint a, .pg-band-alt a { font-weight:700; color:var(--orange) !important; text-decoration:underline !important; text-underline-offset:3px; }
.pg-band-alt { margin:1.25rem 0 0; font-size:.95rem; color:rgba(255,255,255,.75); }
.pg-band-alt a { color:var(--amber) !important; }

.pg-cards { display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:2.75rem 2rem; transition:opacity .22s ease, transform .22s ease; }
.pg-cards.is-swapping { opacity:0; transform:translateY(6px); }
.pg-card { display:flex; flex-direction:column; }
.pg-card-img { position:relative; display:block; aspect-ratio:4/3.3; border-radius:var(--photo-radius); overflow:hidden; background:var(--line); }
.pg-card-img img { width:100%; height:100%; object-fit:cover; transition:transform .6s cubic-bezier(.2,.7,.2,1); }
.pg-card:hover .pg-card-img img, .pg-card:focus-within .pg-card-img img { transform:scale(1.05); }
.pg-card-type { position:absolute; top:1rem; left:1rem; background:#fff; color:var(--ink); border-radius:999px; padding:.3rem .8rem; font-size:.8rem; font-weight:700; }
.pg-card-body { display:flex; flex-direction:column; flex:1; padding:1.25rem .25rem 0; }
.pg-card h3 a { background:linear-gradient(var(--orange), var(--orange)) 0 100% / 0 2px no-repeat; transition:background-size .35s ease; }
.pg-card:hover h3 a, .pg-card h3 a:focus-visible { background-size:100% 2px; }
.pg-card h3 a:focus-visible { outline:3px solid var(--amber); outline-offset:3px; }
.pg-card-route { display:flex; gap:.5rem; align-items:baseline; margin-top:.5rem; font-size:.9rem; color:var(--stone); }
.pg-card-route i { color:var(--orange); }
.pg-card p { color:var(--stone); margin:.6rem 0 0; font-size:.98rem; }
.pg-card-foot { display:flex; align-items:end; justify-content:space-between; gap:1rem; margin-top:auto; padding-top:1.25rem; }
.pg-price-from { font-size:.85rem; color:var(--stone); line-height:1.3; }
.pg-price-from strong { display:block; font-size:1.45rem; font-weight:800; color:var(--ink); letter-spacing:-.02em; }
.pg-card-cta { display:inline-flex; align-items:center; gap:.5rem; font-weight:700; color:var(--orange) !important; white-space:nowrap; }
.pg-card-cta i { transition:transform .25s ease; }
.pg-card:hover .pg-card-cta i { transform:translateX(4px); }
.pg-card-pdf { font-size:.85rem; font-weight:600; color:var(--stone); margin-top:.6rem; display:inline-flex; gap:.4rem; align-items:center; }
.pg-card-pdf:hover { color:var(--orange); }
.pg-empty { padding:3rem 1.5rem; text-align:center; border:1.5px dashed var(--line); border-radius:28px; }
.pg-empty p { margin:0 0 1.25rem; color:var(--stone); }

/* ---------- Bandeau de fin ---------- */
.pg-band { position:relative; overflow:hidden; border-radius:28px 28px 28px 120px; padding:4rem; display:grid; grid-template-columns:minmax(0,1fr) auto; gap:2rem; align-items:center; }
.pg-band > * { position:relative; }
.pg-band .pg-lead { max-width:34rem; }
.pg-band-route { position:absolute !important; right:-30px; top:-40px; width:380px; opacity:.45; pointer-events:none; }

/* ---------- Page programme ---------- */
.pg-cover { position:relative; min-height:min(82vh, 44rem); display:flex; align-items:end; color:#fff; background:var(--ink); overflow:hidden; }
.pg-cover-img { position:absolute; inset:0; background-size:cover; background-position:center; transform:scale(1.08); animation:pg-settle 2.4s cubic-bezier(.2,.7,.2,1) forwards; }
.pg-cover::after { content:''; position:absolute; inset:0; background:linear-gradient(0deg, rgba(29,29,27,.92) 0%, rgba(29,29,27,.45) 45%, rgba(29,29,27,.1) 100%); }
.pg-cover .pg-wrap { position:relative; z-index:1; width:100%; padding-bottom:4.5rem; }
.pg-cover h1 { color:#fff; max-width:15ch; }
.pg-cover-sub { max-width:36rem; font-size:1.15rem; color:rgba(255,255,255,.85); margin:1.25rem 0 0; }
.pg-crumb { display:inline-flex; align-items:center; gap:.5rem; font-size:.92rem; font-weight:600; color:rgba(255,255,255,.8); margin-bottom:1.25rem; }
.pg-crumb:hover { color:#fff; }
.pg-cover-type { display:inline-block; background:var(--orange); color:#fff; border-radius:999px; padding:.3rem .85rem; font-size:.85rem; font-weight:700; margin-bottom:1rem; }
@keyframes pg-settle { to { transform:scale(1); } }

.pg-facts { display:grid; grid-template-columns:repeat(4, minmax(0,1fr)); margin-top:0; margin-bottom:0; }
.pg-facts dd { margin:0; }
.pg-fact { padding:1.75rem 1.5rem; border-left:2px dashed rgba(242,180,90,.45); }
.pg-fact:first-child { border-left:0; padding-left:0; }
.pg-fact span { display:block; font-size:.85rem; color:rgba(255,255,255,.65); }
.pg-fact b { display:block; margin-top:.2rem; font-size:1.2rem; font-weight:700; color:#fff; line-height:1.3; }
.pg-fact b.pg-price { color:var(--amber); }

.pg-two { display:grid; grid-template-columns:minmax(0,1.55fr) minmax(0,1fr); gap:4rem; }
.pg-block + .pg-block { margin-top:4.5rem; }
.pg-intro { white-space:pre-line; }
.pg-route-map { isolation:isolate; margin-top:1.5rem; border-radius:28px; overflow:hidden; border:1px solid var(--line); background:#fff; }
.pg-route-map .pg-map { height:440px; }
.pg-route-map-caption { padding:.9rem 1.25rem; font-size:.88rem; color:var(--stone); }

/* Tracé animé de l'itinéraire (déclenché à l'arrivée de la carte à l'écran) */
.pg-route-map .pg-itin-line { transition:stroke-dashoffset 2.2s cubic-bezier(.65,0,.35,1); }
.pg-stop-pin { width:30px; height:30px; border-radius:50%; background:#d86727; color:#fff; border:3px solid #fff; box-shadow:0 3px 10px rgba(0,0,0,.3); font:800 12px/24px Montserrat, sans-serif; text-align:center; opacity:0; transform:scale(.3); }
.pg-route-map.is-drawn .pg-stop-pin { animation:pg-pop .45s cubic-bezier(.34,1.56,.64,1) forwards; animation-delay:var(--d, 0s); }

.pg-timeline { position:relative; margin:1.75rem 0 0; padding:0 0 0 3.25rem; list-style:none; }
.pg-timeline::before { content:''; position:absolute; left:14px; top:8px; bottom:8px; border-left:2px dashed var(--orange); transform-origin:top; transform:scaleY(0); transition:transform 2.2s cubic-bezier(.65,0,.35,1); }
.pg-timeline.is-drawn::before { transform:scaleY(1); }
.pg-stop { position:relative; padding-bottom:2rem; }
.pg-stop:last-child { padding-bottom:0; }
.pg-stop-num { position:absolute; left:-3.25rem; top:-.1rem; width:30px; height:30px; border-radius:50%; background:var(--sand); border:2px solid var(--orange); color:var(--orange); font-weight:800; font-size:.8rem; display:grid; place-items:center; transition:background .3s ease, color .3s ease; transition-delay:var(--d, 0s); }
.pg-timeline.is-drawn .pg-stop-num { background:var(--orange); color:#fff; }
.pg-stop h3 { font-size:1.2rem; }
.pg-stop p { color:var(--stone); margin:.35rem 0 0; white-space:pre-line; }

.pg-list { list-style:none; padding:0; margin:1.5rem 0 0; display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:.9rem 2rem; }
.pg-list li { position:relative; padding-left:1.9rem; }
.pg-list li::before { content:'\f00c'; font-family:'Font Awesome 6 Free'; font-weight:900; position:absolute; left:0; top:.05rem; color:var(--orange); }

.pg-sticky { position:sticky; top:108px; align-self:start; }
.pg-ask { background:#fff; border:1px solid var(--line); border-radius:28px; padding:2rem; }
.pg-ask-price { font-size:.9rem; color:var(--stone); }
.pg-ask-price strong { display:block; font-size:2rem; font-weight:800; color:var(--ink); letter-spacing:-.03em; line-height:1.15; }
.pg-ask p { color:var(--stone); margin:1rem 0 1.5rem; }
.pg-ask .av-btn { width:100%; }
.pg-ask .av-btn + .av-btn { margin-top:.65rem; }
.pg-ask .pg-note { margin:1rem 0 0; }
.pg-ask-infos { margin-top:1.75rem; padding-top:1.5rem; border-top:2px dashed var(--line); }
.pg-ask-infos h3 { font-size:1rem; }
.pg-ask-infos ul { margin:.75rem 0 0; padding-left:1.1rem; color:var(--stone); font-size:.93rem; list-style:disc; }
.pg-ask-infos li { margin:.4rem 0; }

.pg-status { padding:9rem 1.25rem; text-align:center; color:var(--stone); }
.pg-status h1 { margin:0 auto; font-size:2rem; max-width:none; }
.pg-status p { margin:1rem 0 1.75rem; }

.pg .leaflet-popup-content { font-family:Montserrat, sans-serif; }
.pg .leaflet-container { font-family:Montserrat, sans-serif; background:#e9e4da; }
/* Fond de carte adouci pour laisser ressortir l'orange des repères et du trajet */
.pg .leaflet-tile-pane { filter:saturate(.45) sepia(.12) brightness(1.03); }

@media (max-width: 960px) {
  .pg-hero-grid { grid-template-columns:1fr; min-height:0; gap:1rem; }
  .pg-hero-art { max-width:420px; }
  .pg-cards { grid-template-columns:repeat(2, minmax(0,1fr)); }
  .pg-two { grid-template-columns:1fr; gap:3rem; }
  .pg-sticky { position:static; }
  .pg-facts { grid-template-columns:repeat(2, minmax(0,1fr)); }
  .pg-fact:nth-child(3) { border-left:0; padding-left:0; }
  .pg-fact:nth-child(n+3) { border-top:2px dashed rgba(242,180,90,.45); }
  .pg-band { grid-template-columns:1fr; padding:3rem 2rem; }
  .pg-map { height:380px; }
}
@media (max-width: 640px) {
  .pg-section { padding-top:4rem; padding-bottom:4rem; }
  .pg-hero-art { max-width:300px; margin:0 0 0 auto; }
  .pg-cards { grid-template-columns:1fr; }
  .pg-explore-head { display:block; }
  .pg-toolbar { top:72px; margin-left:-1.25rem; margin-right:-1.25rem; padding-left:1.25rem; padding-right:1.25rem; overflow-x:auto; flex-wrap:nowrap; scrollbar-width:none; }
  .pg-toolbar::-webkit-scrollbar { display:none; }
  .pg-search { min-width:180px; }
  .pg-chip { white-space:nowrap; }
  .pg-list { grid-template-columns:1fr; }
  .pg-band { border-radius:24px 24px 24px 72px; padding:2.5rem 1.5rem; }
  .pg-card-img { border-radius:22px 22px 22px 72px; }
  .pg-cover { min-height:34rem; }
  .pg-fact { padding:1.25rem 1rem; }
  .pg-fact b { font-size:1.05rem; }
  .pg-map, .pg-route-map .pg-map { height:320px; }
}
@media (prefers-reduced-motion: reduce) {
  .pg-route-mask { animation:none; stroke-dashoffset:0; }
  .pg-route-pin { animation:none; opacity:1; }
  .pg-route-traveller { animation:none; opacity:0; }
  .pg-cover-img { animation:none; transform:none; }
  .pg-timeline::before { transition:none; transform:scaleY(1); }
  .pg-stop-pin { opacity:1; transform:none; animation:none !important; }
  .pg-route-map .pg-itin-line, .pg-cards, .pg-card-img img, .pg-stop-num { transition:none; }
}
