/* ══════════════════════════════════════════════════════════════════════════
   THE ROUTE MAP — shared by /locations and /packages.
   Loaded with map-routes.js; the page needs class="v2" on <body> and the
   map markup. Everything is scoped under .v2 so it cannot reach a page that
   does not ask for it, even though every page shares style.css.
   Edit here, not in a page — it is one map on two pages.
   ══════════════════════════════════════════════════════════════════════════ */

/* ── route switcher ─────────────────────────────────────────────────────── */
.v2-switch { display:flex; flex-wrap:wrap; gap:10px; justify-content:center; margin:0 0 34px; }
.v2-switch__btn {
  font-family:'Space Mono',monospace; font-size:.72rem; letter-spacing:.14em; text-transform:uppercase;
  color:rgba(255,255,255,.62); background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.14); border-radius:999px;
  padding:13px 22px; min-height:44px; cursor:pointer;
  transition:color .2s ease, border-color .2s ease, background .2s ease;
}
.v2-switch__btn:hover { color:#fff; border-color:rgba(255,255,255,.34); }
.v2-switch__btn[aria-pressed="true"] { color:#0A0A0A; background:var(--pink,#F72798); border-color:var(--pink,#F72798); }
.v2-switch__btn--north[aria-pressed="true"] { background:#3DE0E8; border-color:#3DE0E8; }
.v2-switch__hint {
  width:100%; text-align:center; font-size:.78rem; color:rgba(255,255,255,.45);
  margin-top:4px; min-height:1.2em;
}

/* ── route lines on the map ─────────────────────────────────────────────── */
.v2route { opacity:0; transition:opacity .25s ease; pointer-events:none; }
.v2-map.is-circuit .v2route--circuit,
.v2-map.is-north   .v2route--north { opacity:1; }

/* ═════════════════════════════════════════════════════════════════════════
   The map is not a light show — it walks a guest through the trip.
   The whole road is drawn once and stays. A highlight then rests on one leg
   at a time, for nearly three seconds, with a caption naming the day. Slow
   enough to read, and nothing is ever erased.
   ═════════════════════════════════════════════════════════════════════════ */
.v2route__road {
  fill:none; stroke:var(--pink,#F72798); stroke-width:2.6; stroke-linecap:round;
  opacity:.34; stroke-dasharray:100; stroke-dashoffset:100;
}
.v2route--north .v2route__road { stroke:#3DE0E8; }
@keyframes v2draw { to { stroke-dashoffset:0; } }
.v2-map.is-circuit .v2route--circuit .v2route__road,
.v2-map.is-north   .v2route--north   .v2route__road {
  animation:v2draw 1.9s cubic-bezier(.25,.8,.3,1) forwards;
}

/* One white overlay per step, each carrying only its own leg's geometry. The
   script draws it with stroke-dashoffset, so the line genuinely runs along the
   leg. (Growing a stroke-dasharray list does not interpolate — it just snaps.) */
.v2route__over {
  fill:none; stroke:#fff; stroke-width:4; stroke-linecap:round;
  stroke-dasharray:100; stroke-dashoffset:100;
  opacity:0;
  transition:opacity .4s ease, stroke-dashoffset 1.15s cubic-bezier(.3,.7,.3,1);
  filter:drop-shadow(0 0 7px rgba(247,39,152,.95));
}
.v2route--north .v2route__over { filter:drop-shadow(0 0 7px rgba(61,224,232,.9)); }
.v2-map.is-circuit .v2route--circuit .v2route__over.is-lit,
.v2-map.is-north   .v2route--north   .v2route__over.is-lit { opacity:1; stroke-dashoffset:0; }

/* ── the vehicle: plane in, car, boat, car, plane out ──────────────────── */
/* The plane stretches of the journey run off the frame and carry no stroke —
   only the vehicle travels them, exactly as the original map did. */
.v2vehicle {
  opacity:0; offset-rotate:auto;
  filter:drop-shadow(0 0 6px rgba(247,39,152,.9)) drop-shadow(0 0 14px rgba(247,39,152,.45));
  transition:opacity .4s ease;
}
.v2-map.is-circuit .v2vehicle { opacity:1; }
.v2vehicle__halo { animation:v2vehHalo 1.5s ease-in-out infinite; transform-box:fill-box; transform-origin:center; }
.v2vehicle__core { animation:v2vehCore 1.5s ease-in-out infinite; transform-box:fill-box; transform-origin:center; }
@keyframes v2vehHalo { 0%,100% { opacity:.30; transform:scale(1); } 50% { opacity:.55; transform:scale(1.3); } }
@keyframes v2vehCore { 0%,100% { opacity:.55; transform:scale(1); } 50% { opacity:.90; transform:scale(1.18); } }

.v2vehicle__body--boat, .v2vehicle__body--plane { display:none; }
.v2vehicle.is-boat  .v2vehicle__body--car   { display:none; }
.v2vehicle.is-boat  .v2vehicle__body--boat  { display:inline; }
.v2vehicle.is-plane .v2vehicle__body--car   { display:none; }
.v2vehicle.is-plane .v2vehicle__body--plane { display:inline; }

@keyframes v2ride-full {
  0.000% { offset-distance:0.000% }
  0.508% { offset-distance:0.287% }
  1.015% { offset-distance:1.181% }
  1.523% { offset-distance:2.716% }
  2.030% { offset-distance:4.901% }
  2.538% { offset-distance:7.697% }
  3.046% { offset-distance:10.999% }
  3.553% { offset-distance:14.623% }
  4.061% { offset-distance:18.329% }
  4.569% { offset-distance:21.858% }
  5.076% { offset-distance:24.987% }
  5.584% { offset-distance:27.563% }
  6.091% { offset-distance:29.505% }
  6.599% { offset-distance:30.796% }
  7.107% { offset-distance:31.457% }
  7.614% { offset-distance:31.568% }
  8.122% { offset-distance:31.568% }
  8.629% { offset-distance:31.568% }
  9.137% { offset-distance:31.579% }
  9.645% { offset-distance:31.628% }
  10.152% { offset-distance:31.717% }
  10.660% { offset-distance:31.847% }
  11.168% { offset-distance:32.017% }
  11.675% { offset-distance:32.223% }
  12.183% { offset-distance:32.456% }
  12.690% { offset-distance:32.702% }
  13.198% { offset-distance:32.945% }
  13.706% { offset-distance:33.172% }
  14.213% { offset-distance:33.369% }
  14.721% { offset-distance:33.528% }
  15.228% { offset-distance:33.647% }
  15.736% { offset-distance:33.724% }
  16.244% { offset-distance:33.762% }
  16.751% { offset-distance:33.767% }
  17.259% { offset-distance:33.767% }
  17.766% { offset-distance:33.767% }
  18.274% { offset-distance:33.767% }
  18.782% { offset-distance:33.787% }
  19.289% { offset-distance:33.859% }
  19.797% { offset-distance:33.987% }
  20.305% { offset-distance:34.174% }
  20.812% { offset-distance:34.420% }
  21.320% { offset-distance:34.724% }
  21.827% { offset-distance:35.084% }
  22.335% { offset-distance:35.493% }
  22.843% { offset-distance:35.943% }
  23.350% { offset-distance:36.421% }
  23.858% { offset-distance:36.912% }
  24.365% { offset-distance:37.400% }
  24.873% { offset-distance:37.868% }
  25.381% { offset-distance:38.303% }
  25.888% { offset-distance:38.693% }
  26.396% { offset-distance:39.031% }
  26.904% { offset-distance:39.312% }
  27.411% { offset-distance:39.534% }
  27.919% { offset-distance:39.697% }
  28.426% { offset-distance:39.802% }
  28.934% { offset-distance:39.853% }
  29.442% { offset-distance:39.858% }
  29.949% { offset-distance:39.858% }
  30.457% { offset-distance:39.858% }
  30.964% { offset-distance:39.858% }
  31.472% { offset-distance:39.883% }
  31.980% { offset-distance:39.969% }
  32.487% { offset-distance:40.120% }
  32.995% { offset-distance:40.337% }
  33.503% { offset-distance:40.617% }
  34.010% { offset-distance:40.950% }
  34.518% { offset-distance:41.317% }
  35.025% { offset-distance:41.695% }
  35.533% { offset-distance:42.056% }
  36.041% { offset-distance:42.379% }
  36.548% { offset-distance:42.645% }
  37.056% { offset-distance:42.848% }
  37.563% { offset-distance:42.985% }
  38.071% { offset-distance:43.057% }
  38.579% { offset-distance:43.071% }
  39.086% { offset-distance:43.071% }
  39.594% { offset-distance:43.071% }
  40.102% { offset-distance:43.087% }
  40.609% { offset-distance:43.160% }
  41.117% { offset-distance:43.299% }
  41.624% { offset-distance:43.505% }
  42.132% { offset-distance:43.776% }
  42.640% { offset-distance:44.102% }
  43.147% { offset-distance:44.468% }
  43.655% { offset-distance:44.850% }
  44.162% { offset-distance:45.221% }
  44.670% { offset-distance:45.556% }
  45.178% { offset-distance:45.838% }
  45.685% { offset-distance:46.057% }
  46.193% { offset-distance:46.209% }
  46.701% { offset-distance:46.295% }
  47.208% { offset-distance:46.319% }
  47.716% { offset-distance:46.319% }
  48.223% { offset-distance:46.319% }
  48.731% { offset-distance:46.325% }
  49.239% { offset-distance:46.375% }
  49.746% { offset-distance:46.475% }
  50.254% { offset-distance:46.630% }
  50.761% { offset-distance:46.839% }
  51.269% { offset-distance:47.103% }
  51.777% { offset-distance:47.418% }
  52.284% { offset-distance:47.777% }
  52.792% { offset-distance:48.170% }
  53.299% { offset-distance:48.584% }
  53.807% { offset-distance:49.003% }
  54.315% { offset-distance:49.411% }
  54.822% { offset-distance:49.791% }
  55.330% { offset-distance:50.133% }
  55.838% { offset-distance:50.428% }
  56.345% { offset-distance:50.670% }
  56.853% { offset-distance:50.857% }
  57.360% { offset-distance:50.989% }
  57.868% { offset-distance:51.068% }
  58.376% { offset-distance:51.097% }
  58.883% { offset-distance:51.098% }
  59.391% { offset-distance:51.098% }
  59.898% { offset-distance:51.098% }
  60.406% { offset-distance:51.101% }
  60.914% { offset-distance:51.161% }
  61.421% { offset-distance:51.302% }
  61.929% { offset-distance:51.527% }
  62.437% { offset-distance:51.839% }
  62.944% { offset-distance:52.239% }
  63.452% { offset-distance:52.726% }
  63.959% { offset-distance:53.296% }
  64.467% { offset-distance:53.941% }
  64.975% { offset-distance:54.649% }
  65.482% { offset-distance:55.404% }
  65.990% { offset-distance:56.187% }
  66.497% { offset-distance:56.975% }
  67.005% { offset-distance:57.747% }
  67.513% { offset-distance:58.480% }
  68.020% { offset-distance:59.158% }
  68.528% { offset-distance:59.765% }
  69.036% { offset-distance:60.293% }
  69.543% { offset-distance:60.736% }
  70.051% { offset-distance:61.091% }
  70.558% { offset-distance:61.358% }
  71.066% { offset-distance:61.540% }
  71.574% { offset-distance:61.639% }
  72.081% { offset-distance:61.661% }
  72.589% { offset-distance:61.661% }
  73.096% { offset-distance:61.661% }
  73.604% { offset-distance:61.661% }
  74.112% { offset-distance:61.676% }
  74.619% { offset-distance:61.761% }
  75.127% { offset-distance:61.928% }
  75.635% { offset-distance:62.180% }
  76.142% { offset-distance:62.519% }
  76.650% { offset-distance:62.943% }
  77.157% { offset-distance:63.445% }
  77.665% { offset-distance:64.017% }
  78.173% { offset-distance:64.640% }
  78.680% { offset-distance:65.294% }
  79.188% { offset-distance:65.952% }
  79.695% { offset-distance:66.590% }
  80.203% { offset-distance:67.183% }
  80.711% { offset-distance:67.714% }
  81.218% { offset-distance:68.169% }
  81.726% { offset-distance:68.540% }
  82.234% { offset-distance:68.825% }
  82.741% { offset-distance:69.025% }
  83.249% { offset-distance:69.141% }
  83.756% { offset-distance:69.179% }
  84.264% { offset-distance:69.179% }
  84.772% { offset-distance:69.179% }
  85.279% { offset-distance:69.179% }
  85.787% { offset-distance:69.184% }
  86.294% { offset-distance:69.247% }
  86.802% { offset-distance:69.386% }
  87.310% { offset-distance:69.602% }
  87.817% { offset-distance:69.888% }
  88.325% { offset-distance:70.217% }
  88.832% { offset-distance:70.555% }
  89.340% { offset-distance:70.862% }
  89.848% { offset-distance:71.109% }
  90.355% { offset-distance:71.279% }
  90.863% { offset-distance:71.373% }
  91.371% { offset-distance:71.395% }
  91.878% { offset-distance:71.395% }
  92.386% { offset-distance:71.395% }
  92.893% { offset-distance:71.495% }
  93.401% { offset-distance:72.094% }
  93.909% { offset-distance:73.264% }
  94.416% { offset-distance:75.024% }
  94.924% { offset-distance:77.358% }
  95.431% { offset-distance:80.193% }
  95.939% { offset-distance:83.391% }
  96.447% { offset-distance:86.749% }
  96.954% { offset-distance:90.033% }
  97.462% { offset-distance:93.025% }
  97.970% { offset-distance:95.559% }
  98.477% { offset-distance:97.539% }
  98.985% { offset-distance:98.930% }
  99.492% { offset-distance:99.740% }
  100.000% { offset-distance:100.000% }
}
@keyframes v2ride-short {
  0.000% { offset-distance:0.000% }
  0.585% { offset-distance:0.320% }
  1.170% { offset-distance:1.314% }
  1.754% { offset-distance:3.023% }
  2.339% { offset-distance:5.455% }
  2.924% { offset-distance:8.570% }
  3.509% { offset-distance:12.249% }
  4.094% { offset-distance:16.295% }
  4.678% { offset-distance:20.438% }
  5.263% { offset-distance:24.394% }
  5.848% { offset-distance:27.911% }
  6.433% { offset-distance:30.817% }
  7.018% { offset-distance:33.021% }
  7.602% { offset-distance:34.500% }
  8.187% { offset-distance:35.274% }
  8.772% { offset-distance:35.422% }
  9.357% { offset-distance:35.422% }
  9.942% { offset-distance:35.422% }
  10.526% { offset-distance:35.432% }
  11.111% { offset-distance:35.483% }
  11.696% { offset-distance:35.579% }
  12.281% { offset-distance:35.721% }
  12.865% { offset-distance:35.908% }
  13.450% { offset-distance:36.135% }
  14.035% { offset-distance:36.393% }
  14.620% { offset-distance:36.667% }
  15.205% { offset-distance:36.940% }
  15.789% { offset-distance:37.196% }
  16.374% { offset-distance:37.420% }
  16.959% { offset-distance:37.603% }
  17.544% { offset-distance:37.741% }
  18.129% { offset-distance:37.833% }
  18.713% { offset-distance:37.881% }
  19.298% { offset-distance:37.889% }
  19.883% { offset-distance:37.889% }
  20.468% { offset-distance:37.889% }
  21.053% { offset-distance:37.889% }
  21.637% { offset-distance:37.904% }
  22.222% { offset-distance:37.976% }
  22.807% { offset-distance:38.110% }
  23.392% { offset-distance:38.309% }
  23.977% { offset-distance:38.573% }
  24.561% { offset-distance:38.902% }
  25.146% { offset-distance:39.295% }
  25.731% { offset-distance:39.744% }
  26.316% { offset-distance:40.240% }
  26.901% { offset-distance:40.769% }
  27.485% { offset-distance:41.317% }
  28.070% { offset-distance:41.864% }
  28.655% { offset-distance:42.393% }
  29.240% { offset-distance:42.887% }
  29.825% { offset-distance:43.334% }
  30.409% { offset-distance:43.724% }
  30.994% { offset-distance:44.051% }
  31.579% { offset-distance:44.313% }
  32.164% { offset-distance:44.509% }
  32.749% { offset-distance:44.641% }
  33.333% { offset-distance:44.711% }
  33.918% { offset-distance:44.724% }
  34.503% { offset-distance:44.724% }
  35.088% { offset-distance:44.724% }
  35.673% { offset-distance:44.724% }
  36.257% { offset-distance:44.739% }
  36.842% { offset-distance:44.818% }
  37.427% { offset-distance:44.969% }
  38.012% { offset-distance:45.193% }
  38.596% { offset-distance:45.489% }
  39.181% { offset-distance:45.847% }
  39.766% { offset-distance:46.249% }
  40.351% { offset-distance:46.671% }
  40.936% { offset-distance:47.083% }
  41.520% { offset-distance:47.457% }
  42.105% { offset-distance:47.774% }
  42.690% { offset-distance:48.022% }
  43.275% { offset-distance:48.196% }
  43.860% { offset-distance:48.297% }
  44.444% { offset-distance:48.330% }
  45.029% { offset-distance:48.330% }
  45.614% { offset-distance:48.330% }
  46.199% { offset-distance:48.335% }
  46.784% { offset-distance:48.396% }
  47.368% { offset-distance:48.528% }
  47.953% { offset-distance:48.734% }
  48.538% { offset-distance:49.014% }
  49.123% { offset-distance:49.360% }
  49.708% { offset-distance:49.757% }
  50.292% { offset-distance:50.181% }
  50.877% { offset-distance:50.603% }
  51.462% { offset-distance:50.994% }
  52.047% { offset-distance:51.332% }
  52.632% { offset-distance:51.602% }
  53.216% { offset-distance:51.798% }
  53.801% { offset-distance:51.920% }
  54.386% { offset-distance:51.971% }
  54.971% { offset-distance:51.974% }
  55.556% { offset-distance:51.974% }
  56.140% { offset-distance:51.974% }
  56.725% { offset-distance:52.008% }
  57.310% { offset-distance:52.099% }
  57.895% { offset-distance:52.248% }
  58.480% { offset-distance:52.458% }
  59.064% { offset-distance:52.729% }
  59.649% { offset-distance:53.059% }
  60.234% { offset-distance:53.442% }
  60.819% { offset-distance:53.867% }
  61.404% { offset-distance:54.323% }
  61.988% { offset-distance:54.791% }
  62.573% { offset-distance:55.254% }
  63.158% { offset-distance:55.694% }
  63.743% { offset-distance:56.096% }
  64.327% { offset-distance:56.449% }
  64.912% { offset-distance:56.745% }
  65.497% { offset-distance:56.981% }
  66.082% { offset-distance:57.155% }
  66.667% { offset-distance:57.270% }
  67.251% { offset-distance:57.327% }
  67.836% { offset-distance:57.335% }
  68.421% { offset-distance:57.335% }
  69.006% { offset-distance:57.335% }
  69.591% { offset-distance:57.335% }
  70.175% { offset-distance:57.362% }
  70.760% { offset-distance:57.471% }
  71.345% { offset-distance:57.667% }
  71.930% { offset-distance:57.955% }
  72.515% { offset-distance:58.334% }
  73.099% { offset-distance:58.804% }
  73.684% { offset-distance:59.356% }
  74.269% { offset-distance:59.979% }
  74.854% { offset-distance:60.654% }
  75.439% { offset-distance:61.357% }
  76.023% { offset-distance:62.060% }
  76.608% { offset-distance:62.737% }
  77.193% { offset-distance:63.363% }
  77.778% { offset-distance:63.920% }
  78.363% { offset-distance:64.394% }
  78.947% { offset-distance:64.779% }
  79.532% { offset-distance:65.071% }
  80.117% { offset-distance:65.272% }
  80.702% { offset-distance:65.386% }
  81.287% { offset-distance:65.416% }
  81.871% { offset-distance:65.416% }
  82.456% { offset-distance:65.416% }
  83.041% { offset-distance:65.416% }
  83.626% { offset-distance:65.426% }
  84.211% { offset-distance:65.505% }
  84.795% { offset-distance:65.669% }
  85.380% { offset-distance:65.920% }
  85.965% { offset-distance:66.245% }
  86.550% { offset-distance:66.616% }
  87.135% { offset-distance:66.992% }
  87.719% { offset-distance:67.331% }
  88.304% { offset-distance:67.600% }
  88.889% { offset-distance:67.784% }
  89.474% { offset-distance:67.882% }
  90.058% { offset-distance:67.902% }
  90.643% { offset-distance:67.902% }
  91.228% { offset-distance:67.902% }
  91.813% { offset-distance:68.036% }
  92.398% { offset-distance:68.738% }
  92.982% { offset-distance:70.078% }
  93.567% { offset-distance:72.075% }
  94.152% { offset-distance:74.708% }
  94.737% { offset-distance:77.895% }
  95.322% { offset-distance:81.480% }
  95.906% { offset-distance:85.234% }
  96.491% { offset-distance:88.900% }
  97.076% { offset-distance:92.235% }
  97.661% { offset-distance:95.057% }
  98.246% { offset-distance:97.261% }
  98.830% { offset-distance:98.809% }
  99.415% { offset-distance:99.710% }
  100.000% { offset-distance:100.000% }
}
.v2-map.is-circuit.len-5  .v2vehicle { offset-path:path('M -1500 360 Q -200 330 550 510 C 536 470 512 420 496 377 C 620 432 762 424 885 385 C 906 452 896 532 855 585 C 902 522 912 452 885 385 C 936 318 930 178 855 95 C 700 140 545 255 496 377 C 520 424 548 468 550 510 C 1000 560 1700 430 2400 300'); animation:v2ride-short 19.8s linear infinite; }
.v2-map.is-circuit.len-14 .v2vehicle { offset-path:path('M -1500 360 Q -200 330 550 510 C 536 470 512 420 496 377 C 620 432 762 424 885 385 C 906 452 896 532 855 585 C 902 522 912 452 885 385 C 936 318 930 178 855 95 C 640 40 380 30 170 50 C 196 226 330 332 496 377 C 520 424 548 468 550 510 C 1000 560 1700 430 2400 300');  animation:v2ride-full 22.9s linear infinite; }

@keyframes v2ride-north {
  0.000% { offset-distance:0.000% }
  0.529% { offset-distance:0.323% }
  1.058% { offset-distance:1.327% }
  1.587% { offset-distance:3.051% }
  2.116% { offset-distance:5.506% }
  2.646% { offset-distance:8.649% }
  3.175% { offset-distance:12.363% }
  3.704% { offset-distance:16.444% }
  4.233% { offset-distance:20.623% }
  4.762% { offset-distance:24.610% }
  5.291% { offset-distance:28.154% }
  5.820% { offset-distance:31.080% }
  6.349% { offset-distance:33.297% }
  6.878% { offset-distance:34.781% }
  7.407% { offset-distance:35.556% }
  7.937% { offset-distance:35.700% }
  8.466% { offset-distance:35.700% }
  8.995% { offset-distance:35.700% }
  9.524% { offset-distance:35.707% }
  10.053% { offset-distance:35.741% }
  10.582% { offset-distance:35.804% }
  11.111% { offset-distance:35.897% }
  11.640% { offset-distance:36.020% }
  12.169% { offset-distance:36.173% }
  12.698% { offset-distance:36.354% }
  13.228% { offset-distance:36.556% }
  13.757% { offset-distance:36.774% }
  14.286% { offset-distance:36.999% }
  14.815% { offset-distance:37.222% }
  15.344% { offset-distance:37.433% }
  15.873% { offset-distance:37.626% }
  16.402% { offset-distance:37.793% }
  16.931% { offset-distance:37.932% }
  17.460% { offset-distance:38.040% }
  17.989% { offset-distance:38.118% }
  18.519% { offset-distance:38.166% }
  19.048% { offset-distance:38.186% }
  19.577% { offset-distance:38.187% }
  20.106% { offset-distance:38.187% }
  20.635% { offset-distance:38.187% }
  21.164% { offset-distance:38.187% }
  21.693% { offset-distance:38.187% }
  22.222% { offset-distance:38.194% }
  22.751% { offset-distance:38.241% }
  23.280% { offset-distance:38.333% }
  23.810% { offset-distance:38.471% }
  24.339% { offset-distance:38.659% }
  24.868% { offset-distance:38.895% }
  25.397% { offset-distance:39.181% }
  25.926% { offset-distance:39.515% }
  26.455% { offset-distance:39.895% }
  26.984% { offset-distance:40.319% }
  27.513% { offset-distance:40.780% }
  28.042% { offset-distance:41.272% }
  28.571% { offset-distance:41.787% }
  29.101% { offset-distance:42.314% }
  29.630% { offset-distance:42.844% }
  30.159% { offset-distance:43.366% }
  30.688% { offset-distance:43.870% }
  31.217% { offset-distance:44.346% }
  31.746% { offset-distance:44.788% }
  32.275% { offset-distance:45.189% }
  32.804% { offset-distance:45.545% }
  33.333% { offset-distance:45.854% }
  33.862% { offset-distance:46.113% }
  34.392% { offset-distance:46.323% }
  34.921% { offset-distance:46.485% }
  35.450% { offset-distance:46.598% }
  35.979% { offset-distance:46.665% }
  36.508% { offset-distance:46.689% }
  37.037% { offset-distance:46.689% }
  37.566% { offset-distance:46.689% }
  38.095% { offset-distance:46.689% }
  38.624% { offset-distance:46.689% }
  39.153% { offset-distance:46.689% }
  39.683% { offset-distance:46.689% }
  40.212% { offset-distance:46.705% }
  40.741% { offset-distance:46.760% }
  41.270% { offset-distance:46.858% }
  41.799% { offset-distance:46.998% }
  42.328% { offset-distance:47.183% }
  42.857% { offset-distance:47.411% }
  43.386% { offset-distance:47.682% }
  43.915% { offset-distance:47.990% }
  44.444% { offset-distance:48.332% }
  44.974% { offset-distance:48.698% }
  45.503% { offset-distance:49.079% }
  46.032% { offset-distance:49.464% }
  46.561% { offset-distance:49.840% }
  47.090% { offset-distance:50.198% }
  47.619% { offset-distance:50.527% }
  48.148% { offset-distance:50.821% }
  48.677% { offset-distance:51.075% }
  49.206% { offset-distance:51.286% }
  49.735% { offset-distance:51.453% }
  50.265% { offset-distance:51.577% }
  50.794% { offset-distance:51.657% }
  51.323% { offset-distance:51.697% }
  51.852% { offset-distance:51.702% }
  52.381% { offset-distance:51.702% }
  52.910% { offset-distance:51.702% }
  53.439% { offset-distance:51.702% }
  53.968% { offset-distance:51.702% }
  54.497% { offset-distance:51.702% }
  55.026% { offset-distance:51.702% }
  55.556% { offset-distance:51.702% }
  56.085% { offset-distance:51.713% }
  56.614% { offset-distance:51.769% }
  57.143% { offset-distance:51.873% }
  57.672% { offset-distance:52.029% }
  58.201% { offset-distance:52.236% }
  58.730% { offset-distance:52.494% }
  59.259% { offset-distance:52.800% }
  59.788% { offset-distance:53.149% }
  60.317% { offset-distance:53.533% }
  60.847% { offset-distance:53.941% }
  61.376% { offset-distance:54.357% }
  61.905% { offset-distance:54.768% }
  62.434% { offset-distance:55.160% }
  62.963% { offset-distance:55.521% }
  63.492% { offset-distance:55.840% }
  64.021% { offset-distance:56.113% }
  64.550% { offset-distance:56.334% }
  65.079% { offset-distance:56.504% }
  65.608% { offset-distance:56.623% }
  66.138% { offset-distance:56.693% }
  66.667% { offset-distance:56.715% }
  67.196% { offset-distance:56.715% }
  67.725% { offset-distance:56.715% }
  68.254% { offset-distance:56.715% }
  68.783% { offset-distance:56.715% }
  69.312% { offset-distance:56.728% }
  69.841% { offset-distance:56.795% }
  70.370% { offset-distance:56.921% }
  70.899% { offset-distance:57.109% }
  71.429% { offset-distance:57.361% }
  71.958% { offset-distance:57.676% }
  72.487% { offset-distance:58.055% }
  73.016% { offset-distance:58.493% }
  73.545% { offset-distance:58.985% }
  74.074% { offset-distance:59.523% }
  74.603% { offset-distance:60.096% }
  75.132% { offset-distance:60.691% }
  75.661% { offset-distance:61.292% }
  76.190% { offset-distance:61.883% }
  76.720% { offset-distance:62.450% }
  77.249% { offset-distance:62.980% }
  77.778% { offset-distance:63.461% }
  78.307% { offset-distance:63.888% }
  78.836% { offset-distance:64.253% }
  79.365% { offset-distance:64.555% }
  79.894% { offset-distance:64.794% }
  80.423% { offset-distance:64.969% }
  80.952% { offset-distance:65.083% }
  81.481% { offset-distance:65.138% }
  82.011% { offset-distance:65.144% }
  82.540% { offset-distance:65.144% }
  83.069% { offset-distance:65.144% }
  83.598% { offset-distance:65.144% }
  84.127% { offset-distance:65.145% }
  84.656% { offset-distance:65.182% }
  85.185% { offset-distance:65.273% }
  85.714% { offset-distance:65.422% }
  86.243% { offset-distance:65.628% }
  86.772% { offset-distance:65.886% }
  87.302% { offset-distance:66.180% }
  87.831% { offset-distance:66.491% }
  88.360% { offset-distance:66.795% }
  88.889% { offset-distance:67.069% }
  89.418% { offset-distance:67.297% }
  89.947% { offset-distance:67.469% }
  90.476% { offset-distance:67.583% }
  91.005% { offset-distance:67.641% }
  91.534% { offset-distance:67.650% }
  92.063% { offset-distance:67.650% }
  92.593% { offset-distance:67.781% }
  93.122% { offset-distance:68.482% }
  93.651% { offset-distance:69.828% }
  94.180% { offset-distance:71.836% }
  94.709% { offset-distance:74.488% }
  95.238% { offset-distance:77.699% }
  95.767% { offset-distance:81.312% }
  96.296% { offset-distance:85.099% }
  96.825% { offset-distance:88.797% }
  97.354% { offset-distance:92.162% }
  97.884% { offset-distance:95.010% }
  98.413% { offset-distance:97.235% }
  98.942% { offset-distance:98.798% }
  99.471% { offset-distance:99.707% }
  100.000% { offset-distance:100.000% }
}
.v2-map.is-north .v2vehicle {
  opacity:1;
  offset-path:path('M -1500 360 Q -200 330 550 510 C 536 470 512 420 496 377 C 330 332 196 226 170 50 C 62 68 -28 100 -100 148 C -28 100 62 68 170 50 C 214 232 352 344 496 377 C 520 424 548 468 550 510 C 1000 560 1700 430 2400 300');
  animation:v2ride-north 21.9s linear infinite;
}

/* the faint road follows whichever length is selected */
.v2route__road--full, .v2route__road--short { display:none; }
.v2-map.len-14 .v2route__road--full,
.v2-map.len-5  .v2route__road--short { display:inline; }

/* ── trip length tabs, only meaningful for the Circuit ──────────────────── */
.v2-len { display:none; justify-content:center; gap:8px; margin:-14px 0 24px; }
.v2-len.is-on { display:flex; }
.v2-len__btn {
  font-family:'Space Mono',monospace; font-size:.68rem; letter-spacing:.14em; text-transform:uppercase;
  color:rgba(255,255,255,.55); background:none; border:1px solid rgba(255,255,255,.13);
  border-radius:999px; padding:9px 16px; min-height:40px; cursor:pointer;
  transition:color .2s ease, border-color .2s ease, background .2s ease;
}
.v2-len__btn:hover { color:#fff; border-color:rgba(255,255,255,.32); }
.v2-len__btn[aria-pressed="true"] { color:#0A0A0A; background:var(--pink,#F72798); border-color:var(--pink,#F72798); }

/* the optional pieces arrive with the road and then stay */
.v2route__leg {
  fill:none; stroke:var(--pink,#F72798); stroke-width:2.4; stroke-linecap:round;
  stroke-dashoffset:0; opacity:0; transition:opacity .4s ease, stroke-width .3s ease;
}
.v2route--north .v2route__leg { stroke:#3DE0E8; }
.v2route__leg--boat  { stroke-dasharray:2 5;   }
.v2route__leg--short { stroke-dasharray:7 6;   }
.v2route__leg--later { stroke-dasharray:5 4.5; }
@keyframes v2legIn { to { opacity:.38 } }
.v2-map.is-circuit .v2route--circuit .v2route__leg,
.v2-map.is-north   .v2route--north   .v2route__leg { animation:v2legIn .6s ease 1.5s forwards; }
.v2-map.is-circuit .v2route--circuit .v2route__leg--boat  { animation:v2legIn .6s ease 1.5s forwards, v2march7  1.5s linear 1.5s infinite; }
.v2-map.is-circuit .v2route--circuit .v2route__leg--short { animation:v2legIn .6s ease 1.5s forwards, v2march13 2.6s linear 1.5s infinite; }
.v2-map.is-north   .v2route--north   .v2route__leg--later { animation:v2legIn .6s ease 1.5s forwards, v2march95 2.0s linear 1.5s infinite; }
/* Each dash pattern has to travel exactly its own period, or the loop jumps.
   boat 2+5=7 · short 7+6=13 · later 5+4.5=9.5 */
@keyframes v2march7   { to { stroke-dashoffset:-7 } }
@keyframes v2march13  { to { stroke-dashoffset:-13 } }
@keyframes v2march95  { to { stroke-dashoffset:-9.5 } }


.v2route__note {
  font-family:'Space Mono',monospace; font-size:12.5px; letter-spacing:.1em;
  fill:rgba(255,255,255,.42); text-transform:uppercase; opacity:0;
}
@keyframes v2fade { to { opacity:1 } }
.v2-map.is-circuit .v2route--circuit .v2route__note { animation:v2fade .6s ease 1.8s forwards; }

/* the stop the highlight has reached */
.spot--main { transition:opacity .35s ease; }
.v2 .spot--main.is-step .spot__ring { stroke-width:3.4; }
.v2 .spot--main.is-step { filter:drop-shadow(0 0 13px rgba(247,39,152,.95)); }
.v2 .spot--main.is-step .spot__label--main { fill:#fff; }

/* ══ the map as a piece of artwork, not a wireframe ═══════════════════════ */
/* clipped, so the plane enters from the edge of the map instead of
   flying around loose on the page */
.v2 .bali-map { overflow:hidden; }

/* land reads as a mass; the shelf is the shallow water hugging every coast */
.v2 .v2-shelf path { fill:none; stroke:#1B6C86; stroke-width:22; opacity:.42; }
.v2 .v2-land  path {
  fill:url(#v2land); stroke:rgba(214,232,240,.5); stroke-width:1.6;
  stroke-linejoin:round; paint-order:stroke fill;
}

.v2 .volcanoes path { fill:none; stroke:rgba(255,255,255,.32); stroke-width:1.6; stroke-linejoin:round; }
.v2 .map-label-tiny { font-size:11px; fill:rgba(255,255,255,.3); letter-spacing:.12em; }
.v2 .map-region     { font-size:13px; fill:rgba(255,255,255,.42); letter-spacing:.26em; }
.v2-map.is-north .map-region { fill:rgba(255,255,255,.72); }

/* place names: readable first, technical second */
.v2 .spot__label--main {
  font-family:'Inter Tight',Inter,system-ui,sans-serif;
  font-size:19px; font-weight:700; letter-spacing:.07em;
  fill:rgba(255,255,255,.94); paint-order:stroke fill;
  stroke:rgba(0,0,0,.55); stroke-width:3.5; stroke-linejoin:round;
}

/* markers on the brand colours, so the map and the legend agree */
.v2 .spot--main--red  .spot__ring { stroke:#F72798; stroke-width:2.4; }
.v2 .spot--main--red  .spot__dot  { fill:#F72798; }
.v2 .spot--main--blue .spot__ring { stroke:#3DE0E8; stroke-width:2.4; }
.v2 .spot--main--blue .spot__dot  { fill:#3DE0E8; }
.v2 .spot--main--red  { filter:drop-shadow(0 0 7px rgba(247,39,152,.55)); }
.v2 .spot--main--blue { filter:drop-shadow(0 0 7px rgba(61,224,232,.45)); }

/* the route glows like the neon in the helmets */
.v2 .v2route--circuit { filter:drop-shadow(0 0 5px rgba(247,39,152,.6)); }
.v2 .v2route--north   { filter:drop-shadow(0 0 5px rgba(61,224,232,.55)); }
.v2 .v2route__leg { stroke-width:3; }
.v2 
/* Java sits in open water — give it the same weight as a Bali stop */
.v2 .v2-java { filter:drop-shadow(0 0 7px rgba(61,224,232,.5)); }
.v2 .v2-java__label {
  font-family:'Inter Tight',Inter,system-ui,sans-serif;
  font-size:17px; font-weight:700; letter-spacing:.09em; fill:rgba(255,255,255,.92);
}
.v2 .v2-java__label--sub {
  font-family:'Space Mono',monospace; font-size:11px; font-weight:400;
  letter-spacing:.16em; fill:#3DE0E8;
}

/* the legend, tidied to match */
.v2 .map-legend {
  position:static; display:flex; flex-direction:row; justify-content:center; gap:22px; flex-wrap:nowrap;
  width:fit-content; margin:10px auto 0; padding:6px 16px;
  backdrop-filter:blur(6px); border-color:rgba(255,255,255,.1);
}
.v2 .map-legend__label { letter-spacing:.1em; }

/* ── everything fits one screen: the nav is fixed and 100px tall, so the map
      takes whatever is left after the switcher, tabs, legend and day bar ──── */
.v2 .map-section { padding:118px 0 26px; }
.v2 .map-svg-wrap { min-height:0; }
.v2 .bali-map { width:100%; height:clamp(290px, calc(100vh - 452px), 620px); }
.v2 .v2-switch { margin-bottom:14px; }
.v2 .v2-switch__hint { margin-top:2px; }

/* ── the map gets the full container; the day bar sits under it ─────────── */
/* A side column left the island pushed to one edge and the panel floating in
   the corner, with nothing lining up. Stacked, everything shares one width. */
.v2 .map-wrap { display:block; }
.v2-panel { position:relative; margin-top:14px; }

/* ── the dive-site list: a tooltip on the marker you point at ───────────── */
.v2 .dive-list,
.v2 .dive-list.is-visible {
  position:absolute; width:286px; max-width:74%; z-index:6;
  max-height:calc(100% - 20px); overflow-y:auto; overscroll-behavior:contain;
  padding:16px 16px 14px; left:0; top:0;
  /* NOT !important: an !important transform would beat the float animation
     below and the card would sit dead still. */
  transform:none;
}
.v2 .dive-list:not(.is-visible) { pointer-events:none; }
.v2 .dive-list__items { grid-template-columns:1fr; gap:0; }
.v2 .dive-list__link { padding:3px 6px; font-size:.79rem; line-height:1.25; min-height:0; gap:8px; }
.v2 .dive-list__title { font-size:1.08rem; margin:2px 0 8px; }
.v2 .dive-list__head { margin-bottom:0; flex-direction:column; align-items:flex-start; gap:1px; }
.v2 .dive-list__eyebrow, .v2 .dive-list__count { font-size:.6rem; }
.v2 .dive-list__cta { font-size:.7rem; margin-top:8px; }
.v2 .dive-list::-webkit-scrollbar { width:5px; }
.v2 .dive-list::-webkit-scrollbar-thumb { background:rgba(255,255,255,.18); border-radius:3px; }

/* style.css bakes translate(-50%,-50%) into hologramFloat because that card was
   centred on the map. This one is placed by its corner, so it gets the same
   tilt and drift with the centring taken out. */
@keyframes v2holo {
  0%, 100% { transform:perspective(1200px) rotateY(-7deg) rotateX(3deg) translate3d(0,0,0)       scale(1);     }
  25%      { transform:perspective(1200px) rotateY(-9deg) rotateX(5deg) translate3d(-3px,-6px,0)  scale(1.005); }
  50%      { transform:perspective(1200px) rotateY(-5deg) rotateX(4deg) translate3d(2px,-10px,0)  scale(1.008); }
  75%      { transform:perspective(1200px) rotateY(-8deg) rotateX(2deg) translate3d(4px,-4px,0)   scale(1.005); }
}
.v2 .dive-list.is-visible { animation:v2holo 7.2s ease-in-out .3s infinite !important; }
@media (prefers-reduced-motion:reduce) { .v2 .dive-list.is-visible { animation:none !important; } }

/* ── the panel that tells a guest what is happening ─────────────────────── */
.v2-now {
  width:100%; padding:16px 24px; border-radius:16px;
  border:1px solid rgba(255,255,255,.09);
  background:
    radial-gradient(90% 200% at 0% 50%, rgba(247,39,152,.09) 0%, rgba(247,39,152,0) 55%),
    rgba(255,255,255,.025);
  backdrop-filter:blur(7px);
  display:flex; align-items:center; gap:30px;
}
.v2-now__head { flex:0 0 auto; display:flex; flex-direction:column; gap:8px; min-width:118px; }
.v2-now__body { flex:1 1 auto; min-width:0; }
.v2-now__side {
  flex:0 0 auto; display:flex; flex-direction:column; align-items:flex-end; gap:14px; min-width:220px;
}
.v2-now__route {
  display:block; font-family:'Space Mono',monospace; font-size:.64rem;
  letter-spacing:.2em; text-transform:uppercase; color:rgba(255,255,255,.4);
}
.v2-now__day {
  display:inline-block; margin:0; align-self:flex-start;
  font-family:'Space Mono',monospace; font-size:.74rem; letter-spacing:.16em;
  text-transform:uppercase; color:var(--pink,#F72798);
  border:1px solid rgba(247,39,152,.34); border-radius:999px; padding:6px 13px;
}
.v2-now__place { font-size:1.5rem; line-height:1.1; letter-spacing:-.015em; margin:0 0 6px; color:#fff; }
.v2-now__txt { font-size:.98rem; line-height:1.5; color:rgba(255,255,255,.74); margin:0; }
.v2-now__link {
  display:inline-block; font-weight:600; font-size:.95rem; color:#fff; text-decoration:none;
  border-bottom:1px solid rgba(247,39,152,.55); padding-bottom:2px;
  transition:border-color .2s ease, color .2s ease;
}
.v2-now__link:hover { color:var(--pink,#F72798); border-color:var(--pink,#F72798); }
.v2-now__day, .v2-now__place, .v2-now__txt, .v2-now__link { transition:opacity .28s ease; }
.v2-now.is-changing .v2-now__day,
.v2-now.is-changing .v2-now__place,
.v2-now.is-changing .v2-now__txt,
.v2-now.is-changing .v2-now__link { opacity:0; }

/* the dots say "there are six of these and you can pick one" */
.v2-now__dots { display:flex; gap:7px; margin:0; }
.v2-now__dot { width:30px; flex:0 0 auto; }
.v2-now__dot {
  flex:1 1 0; height:30px; padding:0; cursor:pointer; background:none; border:0;
  position:relative; font-family:'Space Mono',monospace; font-size:.6rem;
  color:rgba(255,255,255,.34); transition:color .2s ease;
}
.v2-now__dot::after {
  content:""; position:absolute; left:0; right:0; bottom:0; height:2px; border-radius:2px;
  background:rgba(255,255,255,.14); transition:background .25s ease, height .25s ease;
}
.v2-now__dot:hover { color:rgba(255,255,255,.8); }
.v2-now__dot:hover::after { background:rgba(255,255,255,.35); }
.v2-now__dot.is-on { color:#fff; }
.v2-now__dot.is-on::after { background:var(--pink,#F72798); height:3px; }
.v2-map.is-north ~ * .v2-now__dot.is-on::after { background:#3DE0E8; }

/* ── mobile: the 600px box left a hole under the island; the legend sat on it ── */
@media (max-width:1099px) {
  .v2 .map-svg-wrap { min-height:0; }
  .v2 .dive-list { display:none; }            /* a hover card is meaningless on touch */
  .v2 .map-section { padding:96px 0 64px; }
  .v2 .v2-switch__btn { flex:1 1 auto; text-align:center; }
  .v2-panel { margin-top:22px; }
  .v2-now { flex-direction:column; align-items:flex-start; gap:14px; padding:22px 20px; }
  .v2-now__head { flex-direction:row; align-items:center; gap:12px; min-width:0; }
  .v2-now__side { align-items:flex-start; min-width:0; width:100%; }
  .v2-now__place { font-size:1.55rem; }
  .v2 .map-legend { flex-wrap:wrap; gap:8px 18px; margin:14px auto 0; }
  .v2 .spot__hit { r:66; }                    /* 34px targets were too small to hit */
}

/* ── region cards ───────────────────────────────────────────────────────── */
.v2-card__route {
  display:inline-block; font-family:'Space Mono',monospace; font-size:.68rem;
  letter-spacing:.12em; text-transform:uppercase; color:var(--pink,#F72798);
  border:1px solid rgba(247,39,152,.35); border-radius:999px; padding:6px 13px; margin-bottom:16px;
}
.v2-card[data-routes~="north"] .v2-card__route { color:#3DE0E8; border-color:rgba(61,224,232,.4); }
.v2 .loc-regions__grid { grid-template-columns:repeat(auto-fit,minmax(270px,1fr)); }
.v2-map.is-circuit ~ * .v2-card:not([data-routes*="circuit"]),
.v2-card { transition:opacity .3s ease; }

/* ── logistics strip: airport + HQ, demoted out of the card grid ───────── */
.v2-logistics {
  display:flex; flex-wrap:wrap; gap:14px 34px; align-items:center; justify-content:center;
  margin:40px auto 0; padding:22px 26px; max-width:960px;
  border:1px solid rgba(255,255,255,.1); border-radius:16px; background:rgba(255,255,255,.02);
}
.v2-logistics__item { font-size:.9rem; color:rgba(255,255,255,.62); }
.v2-logistics__item strong { color:#fff; font-weight:600; }
.v2-logistics__item a { color:var(--pink,#F72798); }

/* ── closing choice ─────────────────────────────────────────────────────── */
.v2-choose { padding:110px 0 130px; text-align:center; }
.v2-choose__grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(290px,1fr)); gap:22px; margin-top:44px; }
.v2-choose__card {
  display:block; text-align:left; padding:34px 32px; border-radius:20px; text-decoration:none;
  border:1px solid rgba(255,255,255,.12); background:rgba(255,255,255,.03);
  transition:border-color .25s ease, transform .25s ease, background .25s ease;
}
.v2-choose__card:hover { transform:translateY(-4px); background:rgba(255,255,255,.055); }
.v2-choose__card--circuit:hover { border-color:var(--pink,#F72798); }
.v2-choose__card--north:hover { border-color:#3DE0E8; }
.v2-choose__len {
  font-family:'Space Mono',monospace; font-size:.72rem; letter-spacing:.14em;
  text-transform:uppercase; color:var(--pink,#F72798);
}
.v2-choose__card--north .v2-choose__len { color:#3DE0E8; }
.v2-choose__card h3 { font-size:1.9rem; margin:10px 0 12px; }
.v2-choose__card p { color:rgba(255,255,255,.6); font-size:.95rem; line-height:1.55; margin:0 0 18px; }
.v2-choose__go { font-weight:600; color:#fff; }




/* ── the safari picker on /packages ───────────────────────────────────────
   One silhouette of the island; three buttons redraw the route on it. The
   buttons carry data-route AND data-len, so one click is one whole safari. */
.v2 .pkg-pick { padding:80px 0 72px; }
.v2 .pkg-pick__tabs {
  display:flex; flex-wrap:wrap; justify-content:center; gap:12px; margin:0 auto 26px; max-width:780px;
}
.v2 .pkg-pick__tab {
  flex:1 1 210px; min-width:180px; cursor:pointer; text-align:left;
  padding:14px 18px; border-radius:16px;
  border:1px solid rgba(255,255,255,.14); background:rgba(255,255,255,.02); color:#fff;
  transition:border-color .2s ease, background .2s ease, transform .2s ease;
}
.v2 .pkg-pick__tab:hover { border-color:rgba(255,255,255,.34); transform:translateY(-2px); }
.v2 .pkg-pick__tab b {
  display:block; font-family:'Unbounded',sans-serif; font-size:1.18rem; line-height:1;
}
.v2 .pkg-pick__tab span {
  display:block; margin-top:6px; font-family:'Space Mono',monospace; font-size:.62rem;
  letter-spacing:.13em; text-transform:uppercase; color:rgba(255,255,255,.5);
}
.v2 .pkg-pick__tab[aria-pressed="true"] {
  background:var(--pink,#F72798); border-color:var(--pink,#F72798); color:#0A0A0A;
}
.v2 .pkg-pick__tab[aria-pressed="true"] span { color:rgba(10,10,10,.68); }
/* the North is the cyan route, so its button says so when it is the one on */
.v2 .pkg-pick__tab[data-route="north"][aria-pressed="true"] { background:#3DE0E8; border-color:#3DE0E8; }

.v2 .pkg-pick__map .map-section { padding:0; }
.v2 .pkg-pick .bali-map { height:clamp(260px, 42vh, 460px); }
.v2 .pkg-pick .map-legend { display:none; }
.v2 .pkg-pick .v2-panel { margin-top:10px; }

.v2 .pkg-pick__panel { text-align:center; max-width:720px; margin:26px auto 0; }
.v2 .pkg-pick__panel h3 { font-size:1.9rem; margin:0 0 .4em; }
.v2 .pkg-pick__panel > p { color:rgba(255,255,255,.62); line-height:1.55; margin:0; }

.v2 .pkg-map__stats {
  display:flex; flex-wrap:wrap; justify-content:center; gap:10px; margin:22px auto 0; max-width:760px;
}
.v2 .pkg-map__stat {
  flex:1 1 130px; min-width:120px; text-align:center;
  border:1px solid rgba(255,255,255,.1); border-radius:14px; padding:12px 10px;
  background:rgba(255,255,255,.02);
}
.v2 .pkg-map__stat b { display:block; font-family:'Unbounded',sans-serif; font-size:1.5rem; color:#3DE0E8; line-height:1; }
.v2 .pkg-map__stat span {
  display:block; margin-top:5px; font-family:'Space Mono',monospace; font-size:.62rem;
  letter-spacing:.14em; text-transform:uppercase; color:rgba(255,255,255,.5);
}
.v2 .pkg-block__go { text-align:center; margin-top:26px; }


@media (max-width: 760px) {
  .v2 .pkg-pick { padding:56px 0 48px; }
  .v2 .pkg-pick__tab { flex:1 1 100%; min-width:0; }
  .v2 .pkg-pick .bali-map { height:clamp(210px, 34vh, 320px); }
  .v2 .pkg-map__stat { flex:1 1 44%; min-width:0; }
}

/* ── the long reference sections fold away ───────────────────────────────
   Nothing is deleted: seasons, private safaris, how we run it and the
   booking steps are all still here, just not all open at once. The teaser
   line means you can tell what is inside without opening it. */
/* style.css dresses every details/summary as a boxed FAQ row with a "+"
   marker and display:flex, which laid these three lines out side by side.
   Undo that for this one component. */
.v2 details.pkg-more { background:none; border:0; border-radius:0; padding:0; }
.v2 details.pkg-more > summary { border-top:1px solid rgba(255,255,255,.08); }
.v2 details.pkg-more[open] { border-color:rgba(255,255,255,.08); }
.v2 .pkg-more__sum::after { content:''; }
.v2 .pkg-more[open] { padding-bottom:8px; }
/* the <details> sits outside .container (its body carries its own), so the
   summary borrows the container's width and gutters to line up with it */
.v2 .pkg-more__sum {
  list-style:none; cursor:pointer; display:block; position:relative;
  max-width:var(--container); margin:0 auto;
  padding:26px 78px 26px 24px; font-size:inherit; font-weight:400;
}
.v2 .pkg-more__sum::-webkit-details-marker { display:none; }
.v2 .pkg-more__eyebrow {
  display:block; font-family:'Space Mono',monospace; font-size:.62rem;
  letter-spacing:.16em; text-transform:uppercase; color:var(--pink,#F72798);
}
.v2 .pkg-more__title {
  display:block; margin-top:8px; font-family:'Unbounded',sans-serif;
  font-size:clamp(1.15rem, 2.4vw, 1.5rem); color:#fff; line-height:1.2;
}
.v2 .pkg-more__teaser {
  display:block; margin-top:7px; font-size:.92rem; line-height:1.5; color:rgba(255,255,255,.5);
  max-width:60ch;
}
/* the chevron turns when it opens */
.v2 .pkg-more__sum::after {
  content:''; position:absolute; right:34px; top:38px; width:11px; height:11px;
  border-right:2px solid rgba(255,255,255,.5); border-bottom:2px solid rgba(255,255,255,.5);
  transform:rotate(45deg); transition:transform .25s ease, border-color .25s ease;
}
.v2 .pkg-more__sum:hover::after { border-color:#fff; }
.v2 .pkg-more[open] .pkg-more__sum::after { transform:rotate(-135deg); }
.v2 .pkg-more[open] .pkg-more__teaser { display:none; }
.v2 .pkg-more__body { padding-bottom:18px; }

/* the sections that fold lose their own top and bottom air */
.v2 section:has(> .pkg-more) { padding-top:0; padding-bottom:0; }

/* ── comparison table: four rows up front, the rest on request ─────────── */
.cmp__toggle-wrap { text-align:center; margin:18px 0 0; }
.cmp__toggle {
  font-family:'Space Mono',monospace; font-size:.68rem; letter-spacing:.14em;
  text-transform:uppercase; color:rgba(255,255,255,.72); cursor:pointer;
  background:none; border:1px solid rgba(255,255,255,.18); border-radius:999px;
  padding:10px 20px; min-height:40px; transition:border-color .2s ease, color .2s ease;
}
.cmp__toggle:hover { color:#fff; border-color:rgba(255,255,255,.4); }

/* anchor targets for /packages#north, #circuit, #5days … — they occupy no
   space, and sit above the section so the fixed nav does not cover it */
/* the JS positions the scroll itself (it measures the fixed nav), so these
   only need to exist as valid targets */
.pkg-pick__anchor { display:block; position:absolute; top:0; width:0; height:0; }
.v2 .pkg-pick { position:relative; }

/* ── Engage, back where it belongs ───────────────────────────────────────
   The component's styling never left style.css — only its markup did, with
   the four packages it used to sit on. It is built for a card (left aligned,
   min 320px), so centre it here and sit the day-by-day link beside it. */
.v2 .pkg-block__go {
  display:flex; flex-wrap:wrap; justify-content:center; align-items:center;
  gap:14px; margin-top:26px;
}
.v2 .pkg-block__go .pkg-engage { align-self:auto; margin-top:0; }
@media (max-width: 620px) {
  .v2 .pkg-block__go { flex-direction:column; }
  .v2 .pkg-block__go .pkg-engage { min-width:0; width:100%; }
}
