/* 7-day mobility programme pages (hub + city) */
.pg-map{position:relative;border-radius:1.5rem;overflow:hidden;background:radial-gradient(80% 70% at 50% 45%,#0b1533,#04070f);aspect-ratio:4/3;box-shadow:0 30px 60px -20px rgba(0,0,0,.6)}
.pg-map canvas{position:absolute;inset:0;width:100%;height:100%}
.pg-map .pin{position:absolute;transform:translate(-5px,-50%);display:flex;align-items:center;gap:6px;font-size:.82rem;color:#fff;white-space:nowrap}
.pg-map .pin i{width:10px;height:10px;border-radius:9999px;background:var(--accent-lime);box-shadow:0 0 0 4px rgba(var(--accent-rgb),.18);flex:none;transition:box-shadow .3s}
.pg-map .pin:hover i,.pg-map .pin.on i{box-shadow:0 0 0 8px rgba(var(--accent-rgb),.28)}
.pg-map .pin span{padding:2px 8px;border-radius:9999px;background:rgba(4,7,15,.55);border:1px solid rgba(255,255,255,.14);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.pg-map .pin.on span{background:var(--brand);border-color:rgba(255,255,255,.35)}
@media (max-width:639px){.pg-map .pin span{display:none}.pg-map .pin.on span{display:inline}}

.dest{position:relative;display:flex;flex-direction:column;justify-content:flex-end;min-height:20rem;overflow:hidden;border-radius:1.5rem;color:#fff;padding:1.5rem;transition:transform .5s var(--ease-out);
  background:radial-gradient(90% 80% at 100% 0%,rgba(46,155,255,.55),transparent 60%),radial-gradient(80% 70% at 0% 100%,rgba(238,243,255,.3),transparent 60%),var(--brand)}
.dest:nth-child(3n+2){background:radial-gradient(90% 80% at 100% 0%,rgba(92,124,255,.6),transparent 60%),var(--plum)}
.dest:nth-child(3n){background:radial-gradient(90% 80% at 100% 0%,rgba(42,212,255,.35),transparent 60%),#0a1533}
.dest:hover{transform:translateY(-6px)}
.dest img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .9s var(--ease-out)}
.dest:hover img{transform:scale(1.05)}
.dest::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,21,51,.02) 20%,rgba(10,21,51,.25) 45%,rgba(5,13,34,.94) 100%)}
.dest>*:not(img){position:relative;z-index:2}
.dest img{z-index:0}
.dest::after{z-index:1;pointer-events:none}
.dest .cty{font-size:.8rem;letter-spacing:.15em;text-transform:uppercase;color:rgba(255,255,255,.85)}
.dest h3{margin-top:.35rem;font-size:2.25rem;font-weight:300;letter-spacing:-.02em;line-height:1}
.dest p{margin-top:.75rem;font-size:.95rem;line-height:1.5;color:rgba(255,255,255,.9)}
.dest .badge{position:absolute;top:1.25rem;left:1.25rem;border-radius:9999px;background:var(--accent-lime);color:#000;padding:5px 11px;font-size:.78rem;font-weight:600}

.week{display:grid;gap:1.25rem}
@media (min-width:768px){.week{grid-template-columns:1fr 2fr 1fr}}
.week div{border-radius:1.5rem;background:#ededf0;padding:1.75rem}
.week div:nth-child(2){background:var(--card-dark);color:#fff}
.week b{display:block;font-size:.8rem;letter-spacing:.15em;text-transform:uppercase;color:rgba(0,0,0,.45)}
.week div:nth-child(2) b{color:rgba(255,255,255,.5)}
.week h3{margin-top:1.5rem;font-size:1.75rem;font-weight:300;letter-spacing:-.02em}
.week p{margin-top:.5rem;line-height:1.55;color:rgba(0,0,0,.6)}
.week div:nth-child(2) p{color:rgba(255,255,255,.7)}

.itin{display:grid;gap:1rem}
@media (min-width:768px){.itin{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1280px){.itin{grid-template-columns:repeat(4,minmax(0,1fr))}}
.iday{display:flex;flex-direction:column;gap:.9rem;border-radius:1.5rem;background:#ededf0;padding:1.5rem;min-height:15rem}
.iday.edge{background:#fff;border:1px solid rgba(0,0,0,.1)}
.iday .n{display:flex;align-items:baseline;justify-content:space-between}
.iday .n b{font-size:2.75rem;font-weight:300;line-height:1;letter-spacing:-.03em}
.iday .n span{font-size:.78rem;letter-spacing:.15em;text-transform:uppercase;color:rgba(0,0,0,.45)}
.iday .flow{font-size:.9rem;line-height:1.5;color:rgba(0,0,0,.6)}
.iday .tour{margin-top:auto}
.iday .tour small{display:block;margin-bottom:.45rem;font-size:.78rem;font-weight:600;letter-spacing:.15em;text-transform:uppercase;color:var(--brand)}
.iday .tour ul{display:flex;flex-wrap:wrap;gap:.35rem}
.iday .tour li{border-radius:9999px;background:#fff;padding:6px 12px;font-size:.92rem;line-height:1.35}
.iday.edge li{background:#ededf0}
.pg-map .pin.left{flex-direction:row-reverse;transform:translate(calc(-100% + 5px),-50%)}
.pg-map .pin.quiet span{opacity:0;transition:opacity .2s}
.pg-map .pin.quiet:hover span{opacity:1}

/* ---------- Interactive programme map ---------- */
.ph-inner.map-hero{align-items:center}
@media (min-width:1024px){.ph-inner.map-hero{grid-template-columns:minmax(0,.85fr) minmax(0,1.35fr)}}
.pmap{position:relative;outline:none}
.pm-stage{position:relative;aspect-ratio:1/1;width:100%;border-radius:1.75rem;overflow:hidden;cursor:grab;touch-action:pan-y;
  background:radial-gradient(70% 60% at 50% 45%,#0e1a3d,#04070f 75%);box-shadow:0 40px 80px -30px rgba(0,0,0,.7),inset 0 0 0 1px rgba(255,255,255,.08)}
.pmap.dragging .pm-stage{cursor:grabbing}
.pm-stage canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.pm-pins{position:absolute;inset:0;pointer-events:none}
.pm-pin{position:absolute;left:0;top:0;width:0;height:0;pointer-events:auto;color:#fff;will-change:transform}
.pm-pin i{position:absolute;left:-7px;top:-7px;width:14px;height:14px;border-radius:9999px;background:var(--accent-lime);box-shadow:0 0 0 4px rgba(var(--accent-rgb),.2);transition:transform .3s var(--ease-out),box-shadow .3s}
.pm-pin.has-courses i{box-shadow:0 0 0 3px #04070f,0 0 0 5px #fff}
.pm-pin span{position:absolute;left:0;top:0;white-space:nowrap;padding:4px 10px;border-radius:9999px;font-size:.88rem;line-height:1.2;background:rgba(4,7,15,.72);border:1px solid rgba(255,255,255,.16);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);transition:opacity .25s,background .25s}
.pm-pin:hover i,.pm-pin:focus-visible i,.pm-pin.on i{transform:scale(1.35)}
.pm-pin.on span{background:var(--accent-lime);color:#000;border-color:var(--accent-lime);font-weight:600}
.pm-pin.on i::after{content:"";position:absolute;inset:-10px;border-radius:9999px;border:2px solid rgba(var(--accent-rgb),.7);animation:pmPulse 1.6s ease-out infinite}
@keyframes pmPulse{from{transform:scale(.6);opacity:1}to{transform:scale(1.9);opacity:0}}
.pm-from{position:absolute;left:1rem;top:1rem;z-index:2}
.pm-from label{display:flex;align-items:center;gap:.5rem;padding:6px 6px 6px 14px;border-radius:9999px;background:rgba(4,7,15,.72);border:1px solid rgba(255,255,255,.16);font-size:.88rem;color:rgba(255,255,255,.75);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.pm-from select{font:inherit;font-weight:600;color:#000;background:var(--accent-lime);border:0;border-radius:9999px;padding:5px 12px;cursor:pointer}
.pm-zoom{position:absolute;right:1rem;top:1rem;z-index:2;display:flex;flex-direction:column;gap:.4rem}
.pm-zoom button{width:38px;height:38px;border-radius:9999px;background:rgba(4,7,15,.72);border:1px solid rgba(255,255,255,.16);color:#fff;font-size:1.1rem;line-height:1;display:flex;align-items:center;justify-content:center;transition:background .2s}
.pm-zoom button:hover{background:var(--brand)}
.pm-panel{margin-top:1rem;color:#fff}
.pm-panel{min-height:9.5rem}
@media (min-width:768px){.pm-card{grid-template-columns:5rem minmax(0,1fr) minmax(0,1.35fr)}.pm-card:not(:has(.pm-ph)){grid-template-columns:minmax(0,1fr) minmax(0,1.35fr)}.pm-more{grid-column:auto}.pm-ph{aspect-ratio:auto;height:100%;max-height:7.5rem}}
.pm-hint{border-radius:1.25rem;background:rgba(4,7,15,.78);border:1px solid rgba(255,255,255,.14);padding:1rem 1.1rem;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.pm-hint p{font-size:.95rem;line-height:1.45}
.pm-legend{display:flex;flex-wrap:wrap;gap:.4rem 1rem;margin-top:.75rem;font-size:.82rem;color:rgba(255,255,255,.72)}
.pm-legend li{display:flex;align-items:center;gap:.45rem}
.pm-legend i{display:inline-block;width:10px;height:10px;border-radius:9999px;background:var(--accent-lime)}
.pm-legend .l-courses{box-shadow:0 0 0 2px #04070f,0 0 0 3.5px #fff}
.pm-legend .l-route{width:18px;height:0;border-radius:0;background:none;border-top:2px dashed #8fa2ff}
.pm-card{display:grid;grid-template-columns:4.25rem minmax(0,1fr);gap:.9rem;border-radius:1.25rem;background:rgba(4,7,15,.82);border:1px solid rgba(255,255,255,.14);padding:1rem;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);animation:pmIn .35s var(--ease-out)}
.pm-card:not(:has(.pm-ph)){grid-template-columns:1fr}
@keyframes pmIn{from{opacity:0;transform:translateY(8px)}}
.pm-ph{border-radius:.8rem;overflow:hidden;aspect-ratio:1/1}
.pm-ph img{width:100%;height:100%;object-fit:cover}
.pm-bd small{display:block;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.6);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pm-bd h3{font-size:1.5rem;font-weight:300;letter-spacing:-.02em;line-height:1.05;margin-top:.15rem}
.pm-dist{display:flex;align-items:center;gap:.4rem;margin-top:.5rem;font-size:.85rem;color:var(--accent-lime)}
.pm-dist i{width:14px;border-top:2px solid var(--accent-lime)}
.pm-k{margin-top:.75rem;font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.55)}
.pm-stops{margin-top:.45rem;display:flex;flex-wrap:wrap;gap:.3rem}
.pm-stops li{display:flex;gap:.35rem;align-items:baseline;border-radius:9999px;background:rgba(255,255,255,.08);padding:3px 9px;font-size:.82rem;line-height:1.3;color:rgba(255,255,255,.9)}
.pm-stops b{font-weight:600;color:rgba(255,255,255,.45);font-variant-numeric:tabular-nums}
.pm-act{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:.75rem}
.pm-go{display:inline-flex;border-radius:9999px;background:var(--accent-lime);color:#000;padding:7px 13px;font-size:.88rem;font-weight:600}
.pm-sec{display:inline-flex;border-radius:9999px;border:1px solid rgba(255,255,255,.3);padding:7px 13px;font-size:.88rem}
.pm-sec:hover{background:#fff;color:#000}
@media (max-width:639px){.pm-pin span{font-size:.78rem;padding:3px 8px}.pm-from{left:.75rem;top:.75rem}.pm-zoom{right:.75rem;top:.75rem}}
.pm-card .pm-ph{grid-row:span 1;align-self:start}
.pm-stops b{color:rgba(255,255,255,.5)}
.pm-more{grid-column:1/-1}
.pm-more .pm-k{margin-top:0}
.pm-stops li{max-width:100%;overflow-wrap:anywhere}
.pm-card>*{min-width:0}
@media (min-width:640px){.pm-stage{aspect-ratio:5/4;min-height:22rem}}

/* ---------- Full-screen map hero (programmes hub) ---------- */
.pmh{position:relative;overflow:hidden;color:#fff;background:#04070f;min-height:max(46rem,100svh);display:flex;flex-direction:column}
.pmh-copy{position:relative;z-index:4;padding:8.5rem 1.5rem 2rem;pointer-events:none}
.pmh-copy a,.pmh-copy .facts{pointer-events:auto}
.pmh-copy h1{font-size:clamp(2.75rem,5.2vw,5.25rem);font-weight:300;line-height:.95;letter-spacing:-.03em;max-width:11.5ch}
.pmh-copy .lead{margin-top:1.5rem;max-width:30rem;font-size:1.1rem;line-height:1.6;color:rgba(255,255,255,.9)}
.pmh-copy .facts span{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12)}
.pmh-copy{order:1}
.pmap.hero{position:relative;order:2;height:auto}
.pmap.hero .pm-stage{position:relative;height:clamp(24rem,100vw,34rem);aspect-ratio:auto;min-height:0;border-radius:0;box-shadow:none;
  background:radial-gradient(55% 65% at 50% 55%,#10225a 0%,#081232 45%,#04070f 80%)}
.pmap.hero .pm-scrim{position:absolute;inset:0;pointer-events:none;background:linear-gradient(to bottom,#04070f 0%,rgba(4,7,15,0) 22%),linear-gradient(to top,rgba(4,7,15,.9) 0%,rgba(4,7,15,0) 26%)}
.pmap.hero .pm-from{left:1rem;top:1rem}
.pmap.hero .pm-zoom{right:1rem;top:1rem}
.pm-rail{position:absolute;left:0;right:0;bottom:1rem;z-index:3;display:flex;gap:.5rem;overflow-x:auto;padding:0 1rem;scrollbar-width:none;-webkit-mask-image:linear-gradient(to right,transparent,#000 1rem,#000 calc(100% - 2rem),transparent);mask-image:linear-gradient(to right,transparent,#000 1rem,#000 calc(100% - 2rem),transparent)}
.pm-rail::-webkit-scrollbar{display:none}
.pm-chip{flex:none;display:inline-flex;align-items:center;gap:.5rem;padding:9px 16px 9px 12px;border-radius:9999px;background:rgba(10,16,38,.72);border:1px solid rgba(255,255,255,.14);color:rgba(255,255,255,.88);font-size:.92rem;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:background .25s,color .25s,border-color .25s,transform .3s var(--ease-out)}
.pm-chip i{width:8px;height:8px;border-radius:9999px;background:var(--accent-lime)}
.pm-chip.has-courses i{box-shadow:0 0 0 2px #04070f,0 0 0 3.5px #fff}
.pm-chip:hover{border-color:rgba(255,255,255,.4);transform:translateY(-2px)}
.pm-chip.on{background:var(--accent-lime);color:#000;border-color:var(--accent-lime);font-weight:600}
.pm-chip.on i{background:#000}
.pmap.hero .pm-panel{margin:0;padding:1rem 1.5rem 2rem;background:#04070f;min-height:0}

@media (min-width:1000px){
  .pmh{display:block}
  .pmh-copy{position:absolute;left:0;top:0;width:min(44%,40rem);padding:clamp(7rem,15vh,9.5rem) 0 0 clamp(1.5rem,6vw,120px)}
  .pmap.hero{position:absolute;inset:0;height:auto;margin:0}
  .pmap.hero .pm-stage{position:absolute;inset:0;height:auto}
  .pmap.hero .pm-scrim{background:
    linear-gradient(90deg,rgba(4,7,15,.96) 0%,rgba(4,7,15,.82) 24%,rgba(4,7,15,.25) 44%,rgba(4,7,15,0) 56%),
    linear-gradient(to bottom,rgba(4,7,15,.85) 0%,rgba(4,7,15,0) 18%),
    linear-gradient(to top,rgba(4,7,15,.9) 0%,rgba(4,7,15,0) 22%)}
  .pmap.hero .pm-from{left:auto;right:calc(clamp(1.5rem,4vw,3rem) + 3.25rem);top:7rem}
  .pmap.hero .pm-zoom{right:clamp(1.5rem,4vw,3rem);top:7rem}
  .pm-rail{bottom:2rem;left:min(46%,42rem);right:0;padding:0 clamp(1.5rem,4vw,3rem) 0 1rem}
  .pmap.hero .pm-panel{position:absolute;left:clamp(1.5rem,6vw,120px);bottom:2rem;width:min(36%,26rem);padding:0;background:none;z-index:4}
  .pmap.hero .pm-card{grid-template-columns:4.25rem minmax(0,1fr)}
  .pmap.hero .pm-card:not(:has(.pm-ph)){grid-template-columns:minmax(0,1fr)}
  .pmap.hero .pm-more{grid-column:1/-1}
  .pmap.hero .pm-ph{aspect-ratio:1/1;height:auto;max-height:none}
  .pmap.hero .pm-hint{display:none}
}
@media (min-width:1000px) and (max-height:900px){.pmh-copy .facts{display:none}.pmap.hero .pm-stops li:nth-child(n+5){display:none}}
@media (min-width:1000px) and (max-height:800px){.pmap.hero .pm-stops li:nth-child(n+4){display:none}.pmap.hero .pm-ph{width:3.5rem}.pmap.hero .pm-card{grid-template-columns:3.5rem minmax(0,1fr);padding:.85rem}}
.pmh-copy .tag{display:inline-block;margin-bottom:1.25rem;border-radius:9999px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18);padding:6px 13px;font-size:.85rem}
.pmh-copy .lang-switch{align-self:flex-start}
@media (min-width:1000px){.pmh-copy .lead{font-size:1.05rem;max-width:28rem}.pmh-copy .facts{margin-top:1.5rem}}
@media (min-width:1000px) and (max-height:820px){.pmh-copy h1{font-size:clamp(2.5rem,4.4vw,4.25rem)}.pmh-copy .facts span:nth-child(n+3){display:none}.pmh-copy .lang-switch{display:none}}
