/* Part Two — Our London Line */
body.p2-mode #tray{ display:none!important; }
body.journey-map-running #tray{opacity:0!important;pointer-events:none!important}
.journey-map-screen{overflow-y:auto;align-items:flex-start}
.journey-map-screen .map-page{margin:0 auto}
.journey-map-screen .map-board{height:clamp(360px,calc(100dvh - 410px),520px);aspect-ratio:auto}
.map-chapter-switch{display:flex;align-items:center;justify-content:space-between;gap:18px;width:min(560px,92vw);margin:9px auto 0;padding:8px 9px 8px 15px;border:1px solid rgba(23,59,102,.22);border-radius:16px;text-align:left;background:rgba(255,255,255,.65);box-shadow:var(--shadow-soft)}
.map-chapter-switch span>*{display:block}.map-chapter-switch small{color:#a41e3a;font-size:.78rem}.map-chapter-switch strong{color:#173b66;font:600 1rem var(--serif)}
.p2-launch-button{position:static;z-index:auto;max-width:none;min-width:155px;margin:0!important;padding:9px 13px;background:#173b66;border-color:#0f2948;box-shadow:0 5px 0 -2px #0c263f,var(--shadow-soft);font-size:.76rem}
.map-fragment-shelf{display:flex;justify-content:center;gap:5px;margin:5px auto 8px}.map-fragment-shelf .fragment-token{width:31px;height:31px}
.map-fragments-button{margin:0!important}
.p2-screen{ background:#eef2f1; }
.p2-original-link{ border:1px solid rgba(34,45,57,.22); border-radius:999px; padding:8px 14px; color:#38424a; background:rgba(255,255,255,.78); cursor:pointer; font:600 .78rem var(--body); }

/* map */
.p2-map-page{ position:absolute; inset:0; overflow:hidden; display:grid; grid-template-rows:auto minmax(260px,1fr) auto;
  color:#26323c; background:radial-gradient(circle at 50% 30%,#fffdf6 0,#e7eee9 58%,#cbd9d2 100%); }
.p2-map-head{ position:relative; z-index:4; text-align:center; padding:calc(var(--safe-top,0px) + 12px) 150px 5px; }
.p2-map-head .p2-original-link{ position:absolute; left:calc(var(--safe-left,0px) + 15px); top:calc(var(--safe-top,0px) + 15px); }
.p2-map-head>p:first-of-type{ margin:0; color:#a41e3a; font-size:1.15rem; }
.p2-map-head h1{ margin:0; font:600 clamp(1.9rem,5vw,3.2rem) var(--serif); color:#173b66; }
.p2-map-head>p:last-child{ margin:2px 0 0; font-size:.88rem; color:#627078; }
.p2-map-scroll{ min-height:0; overflow-x:auto; overflow-y:hidden; scrollbar-color:#173b66 transparent; padding:6px 16px; }
.p2-map-board{ position:relative; width:max(920px,calc(100vw - 40px)); height:100%; min-height:270px; max-height:500px; margin:0 auto;
  overflow:hidden; border:1px solid rgba(41,60,70,.18); border-radius:25px; background:
    linear-gradient(105deg,transparent 49.6%,rgba(63,92,82,.04) 50%,transparent 50.4%),
    repeating-linear-gradient(0deg,rgba(255,255,255,.4) 0 28px,rgba(33,62,60,.035) 29px 30px),#f8f5e9;
  box-shadow:0 16px 38px rgba(38,57,55,.18),inset 0 0 0 7px rgba(255,255,255,.48); }
.p2-map-board::before{ content:"JUBILEE-ish · memories, not geography"; position:absolute; right:24px; bottom:12px; color:#7b8790; font:1rem var(--hand); transform:rotate(-2deg); }
.p2-route{ position:absolute; inset:0; width:100%; height:100%; overflow:visible; }
.p2-route polyline,.p2-route line{ stroke:#8b8f93; stroke-width:2.2; vector-effect:non-scaling-stroke; stroke-linecap:round; stroke-linejoin:round; }
.p2-route polyline{ stroke:#a5a7aa; }
.p2-route .branch{ stroke:#c32649; stroke-width:1.6; stroke-dasharray:5 5; }
.p2-map-stop{ position:absolute; z-index:4; width:72px; padding:0; border:0; background:transparent; transform:translate(-50%,-50%); cursor:pointer; color:#26323c; }
.p2-stop-roundel{ width:52px; height:52px; margin:auto; display:grid; place-items:center; border-radius:50%; border:8px solid #a8adb0;
  color:#173b66; background:#fff; font:700 1.18rem var(--body); box-shadow:0 4px 12px rgba(31,46,51,.25); transition:.25s; }
.p2-map-stop::after{ content:""; position:absolute; z-index:-1; left:8px; right:8px; top:20px; height:12px; background:#173b66; }
.p2-map-stop.open .p2-stop-roundel{ border-color:#c32649; animation:p2StopPulse 2s ease-in-out infinite; }
.p2-map-stop.done .p2-stop-roundel{ border-color:#5b8a66; color:#fff; background:#5b8a66; }
.p2-map-stop.locked{ opacity:.44; cursor:default; }
.p2-map-stop:hover:not(:disabled) .p2-stop-roundel,.p2-map-stop:focus-visible .p2-stop-roundel{ transform:scale(1.1); outline:3px solid #f3c84b; outline-offset:3px; }
.p2-stop-label{ display:inline-block; margin-top:4px; padding:2px 5px; border-radius:5px; color:#283641; background:rgba(248,245,233,.9); white-space:nowrap; font-size:1rem; }
.p2-map-stop small{ display:block; color:#9e2643; font-size:.55rem; white-space:nowrap; }
.p2-map-stop.branch-stop .p2-stop-roundel{ width:43px; height:43px; border-width:6px; }
.p2-map-stop.branch-stop::after{ top:16px; background:#8a2440; }
@keyframes p2StopPulse{50%{box-shadow:0 0 0 11px rgba(195,38,73,0),0 5px 14px rgba(31,46,51,.25)}}
.p2-map-couple{ position:absolute; z-index:3; left:2%; bottom:1%; transform:scale(.68); transform-origin:bottom left; }
.p2-map-foot{ position:relative; z-index:5; text-align:center; padding:6px 14px calc(var(--safe-bottom,0px) + 9px); background:rgba(241,244,238,.88); box-shadow:0 -5px 18px rgba(40,60,55,.08); }
.p2-keepsake-shelf{ display:flex; justify-content:center; flex-wrap:wrap; gap:7px; }
.p2-keepsake{ width:33px; height:33px; border-radius:8px; display:grid; place-items:center; border:1px dashed #a6a39a; color:#8b8b84; background:#e6e4dc; font-size:1rem; }
.p2-keepsake.found{ border-style:solid; color:#3d3027; background:#fff0bb; box-shadow:0 3px 8px rgba(69,52,35,.16); animation:popin .35s both; }
.p2-map-status{ margin:4px 0 0; color:#69767a; }
.p2-pack-button{ margin-top:6px; background:#173b66; }

/* common stage shell */
.p2-stage{ position:absolute; inset:0; overflow:hidden; display:grid; grid-template-rows:auto 1fr auto; color:#2e2925; background:#eee6d7; }
.p2-stage-close{ position:fixed; z-index:55; top:calc(var(--safe-top,0px) + 14px); right:calc(var(--safe-right,0px) + 14px); width:42px; height:42px;
  border:1px solid rgba(50,40,35,.18); border-radius:50%; background:rgba(255,250,240,.9); color:#453b35; cursor:pointer; font-size:1.55rem; }
body.p2-stage-running #mute{right:calc(var(--safe-right,0px) + 62px)!important}
body.p2-stage-running #musicBtn{right:calc(var(--safe-right,0px) + 112px)!important}
body.p2-stage-running #resetBtn{right:calc(var(--safe-right,0px) + 162px)!important}
.p2-stage-heading{ position:relative; z-index:8; text-align:center; padding:calc(var(--safe-top,0px) + 10px) 80px 5px; pointer-events:none; }
.p2-stage-heading .hand{ margin:0; color:#a72d48; }
.p2-stage-heading h2{ margin:0; font:600 clamp(1.65rem,5vw,2.65rem) var(--serif); line-height:1; }
.p2-stage-heading>p:last-child{ margin:4px auto 0; max-width:700px; color:#655f59; font-size:.85rem; }
.p2-game{ position:relative; min-height:0; display:flex; align-items:center; justify-content:center; }
.p2-stage-status{ position:relative; z-index:20; margin:0; min-height:1.45em; padding:8px 70px calc(var(--safe-bottom,0px) + 10px); text-align:center;
  color:#574c43; background:linear-gradient(transparent,rgba(255,249,236,.88)); font-size:clamp(1rem,3vw,1.3rem); }
.p2-couple{ display:flex; align-items:flex-end; gap:4px; pointer-events:none; }
.p2-couple .guide2,.p2-couple .him2{ width:78px; }
.p2-couple .guide2-bubble,.p2-couple .him2-bubble{ display:none; }
.p2-shirt-italy .gv-top,.p2-shirt-italy .gv-arm-l rect,.p2-shirt-italy .gv-arm-r rect{ fill:#1768b2!important; }
.p2-shirt-italy .gv-top{ stroke:#fff; stroke-width:2px; }
.p2-shirt-germany .hv-coat{ fill:#f3f0e8!important; stroke:#171717; stroke-width:2px; }
.p2-shirt-germany .hv-scarf{ fill:#d6b229!important; }.p2-shirt-germany .hv-scarf-tail{ fill:#bd2b30!important; }
.p2-award{ position:fixed; inset:0; z-index:100; display:grid; place-content:center; text-align:center; padding:30px; color:#fff7dd; background:rgba(14,28,43,.92);
  opacity:0; transform:scale(1.06); transition:.35s; }.p2-award.show{ opacity:1; transform:none; }
.p2-award .hand{ margin:0; color:#f3c84b; font-size:1.35rem; }.p2-award h2{ margin:6px 0; font:600 clamp(1.8rem,6vw,3.3rem) var(--serif); }
.p2-award-reward{ margin:8px auto 0; padding:10px 18px; border:1px solid rgba(255,255,255,.25); border-radius:999px; background:rgba(255,255,255,.1); }

/* Sky Garden */
.p2-stage-sky{ color:#233b48; background:linear-gradient(#a8d9e7 0 58%,#d8ddd0 58%); }
.p2-sky-bg{ position:absolute; inset:0; background:linear-gradient(180deg,#8fcfe3,#e9d6b1 70%); }
.p2-sky-bg i{ position:absolute; border-radius:50%; background:rgba(255,255,255,.28); filter:blur(15px); }.p2-sky-bg i:nth-child(1){width:320px;height:320px;left:4%;top:12%}.p2-sky-bg i:nth-child(2){width:250px;height:250px;right:8%;top:20%}.p2-sky-bg i:nth-child(3){width:180px;height:180px;left:45%;top:4%}
.p2-sky-view{ position:absolute; inset:8% 4% 2%; overflow:hidden; border:12px solid rgba(54,77,66,.55); border-top-width:24px; border-radius:100px 100px 18px 18px; background:linear-gradient(#9bd4e4,#f5ca9e 62%,#5e6970 63%); }
.p2-skyline{ position:absolute; left:0; right:0; bottom:0; height:44%; opacity:.45; transition:1s; }
.p2-skyline i{ position:absolute; bottom:0; width:11%; background:#263743; }.p2-skyline i:nth-child(1){left:4%;height:45%}.p2-skyline i:nth-child(2){left:18%;height:68%;clip-path:polygon(45% 0,55% 0,100% 100%,0 100%)}.p2-skyline i:nth-child(3){left:38%;height:52%}.p2-skyline i:nth-child(4){left:53%;height:75%;clip-path:polygon(50% 0,100% 100%,0 100%)}.p2-skyline i:nth-child(5){left:72%;height:58%}.p2-skyline i:nth-child(6){right:2%;height:40%}
.p2-indoor-garden{ position:absolute; inset:auto 0 0; height:28%; display:flex; justify-content:space-around; align-items:flex-end; color:#315d46; font-size:4rem; text-shadow:0 10px 0 #294f3d; }
.p2-cloud{ position:absolute; z-index:12; border:0; background:transparent; color:#fff; cursor:pointer; font-size:clamp(3rem,9vw,6rem); filter:drop-shadow(0 5px 8px rgba(65,85,90,.24)); transition:.65s; }
.p2-cloud.cleared{ opacity:0; transform:translateX(80px) scale(.65); pointer-events:none; }
.view-revealed .p2-skyline{ opacity:1; filter:drop-shadow(0 -5px 12px rgba(244,189,108,.5)); }
.p2-sky-couple{ position:absolute; z-index:10; bottom:3%; left:50%; transform:translateX(-50%) scale(.9); transform-origin:bottom center; }
.p2-view-button{ position:absolute; z-index:15; left:50%; top:48%; transform:translate(-50%,-50%); }

/* Jubilee line */
.p2-stage-jubilee{ background:#d9d9d7; }.p2-tube-carriage{ position:absolute; inset:3% 4%; overflow:hidden; border:7px solid #34393e; border-radius:30px 30px 10px 10px; background:linear-gradient(#ebeeee 0 66%,#93989a 66%); box-shadow:inset 0 -18px 30px rgba(31,37,40,.25); }
.p2-tube-windows{ position:absolute; left:8%; right:8%; top:8%; height:40%; display:flex; gap:3%; }.p2-tube-windows i{ flex:1; border:8px solid #4a5155; background:repeating-linear-gradient(90deg,#20252b 0 20%,#625f71 21% 28%); animation:p2Tunnel .7s linear infinite; }
@keyframes p2Tunnel{to{background-position:100px 0}}.p2-tube-line{ position:absolute; left:0; right:0; top:54%; display:flex; align-items:center; gap:10px; color:#fff; background:#929497; font-size:.65rem; letter-spacing:.18em; }.p2-tube-line b{display:block;width:58%;height:8px;background:#8b8c90}.p2-noise{ position:absolute; inset:auto 0 4%; text-align:center; color:rgba(39,43,47,.22); font:700 clamp(1.4rem,5vw,3rem) var(--body); letter-spacing:.08em; animation:p2Noise .13s steps(2) infinite; }
@keyframes p2Noise{50%{transform:translateX(3px)}}.p2-tube-couple{ position:absolute; z-index:5; bottom:9%; left:7%; transform:scale(.82); transform-origin:bottom left; }
.p2-conversation{ position:relative; z-index:10; width:min(630px,82vw); margin-top:5%; padding:18px; border-radius:20px; text-align:center; background:rgba(255,252,244,.94); box-shadow:0 15px 35px rgba(20,28,32,.32); }
.p2-heard{ margin:0 0 12px; color:#173b66; font-size:clamp(1.25rem,4vw,2rem); letter-spacing:.08em; }.p2-hearing-choices{ display:grid; gap:8px; }.p2-hearing-choices button{ padding:10px; border:1px solid #b5b8b6; border-radius:10px; color:#2f3e46; background:#fff; cursor:pointer; font:600 .9rem var(--body); }.p2-conversation.wrong{animation:p2Wrong .35s}.p2-conversation.understood{box-shadow:0 0 0 5px #79a879,0 15px 35px rgba(20,28,32,.32)}
.p2-listen-panel{display:grid;grid-template-columns:1fr auto;align-items:center;gap:9px 14px;padding:12px;border:1px solid #c0c3c2;border-radius:15px;background:#eef0ee;transition:.2s}.p2-listen-panel small{grid-column:1/-1;color:#687176}.p2-noise-meter{height:42px;display:flex;align-items:flex-end;justify-content:center;gap:6px}.p2-noise-meter i{width:12px;height:18%;border-radius:4px 4px 1px 1px;background:#c2c7c5;transition:.18s}.p2-noise-meter i:nth-child(2){height:36%}.p2-noise-meter i:nth-child(3){height:54%}.p2-noise-meter i:nth-child(4){height:76%}.p2-noise-meter i:nth-child(5){height:100%}.p2-noise-meter i.active{background:#b72c45;box-shadow:0 0 8px rgba(183,44,69,.3)}.p2-listen-panel.quiet{border-color:#5d926a;background:#e0efe1;box-shadow:0 0 0 3px rgba(93,146,106,.18)}.p2-listen-panel.quiet .p2-noise-meter i.active{background:#5d926a}.p2-listen-panel.caught{transform:scale(.96);opacity:.35}.p2-listen-button{min-width:190px;padding:9px 14px;font-size:.78rem}
@keyframes p2Wrong{25%{transform:translateX(-7px)}75%{transform:translateX(7px)}}.p2-ticket-reveal{ width:250px; padding:18px; border:3px dashed #d6ae5b; color:#f8dfac; background:#24201e; cursor:pointer; transform:rotate(-2deg); }.p2-ticket-reveal>*{display:block}.p2-ticket-reveal b{font:700 1.3rem var(--serif)}.p2-ticket-reveal span{margin-top:7px;color:#f1cba1}

/* Café Pura */
.p2-stage-pura{ background:linear-gradient(#b9d9cc,#f0deb8); }.p2-pura-counter{ position:relative; box-sizing:border-box; display:grid; grid-template-columns:1fr 180px; grid-template-areas:"stamps stamps" "target blender" "ingredients blender" "button blender"; gap:10px; width:min(760px,86vw); padding:16px; border-radius:25px; background:#f7ead2; border:7px solid #7c5132; box-shadow:0 18px 35px rgba(77,48,26,.3); }
.p2-pura-stamps{grid-area:stamps;display:flex;gap:8px;justify-content:center}.p2-pura-stamps i{width:25px;height:10px;border-radius:8px;background:#cbbda5}.p2-pura-stamps i:nth-child(1).filled{background:#4f8a59}.p2-pura-stamps i:nth-child(2).filled{background:#f7f0dc;border:1px solid #aaa}.p2-pura-stamps i:nth-child(3).filled{background:#bf4050}
.p2-smoothie-target{grid-area:target;padding:9px;text-align:center;border-radius:10px;font:600 1.25rem var(--serif);text-transform:uppercase}.p2-smoothie-target.green{background:#b9d7b5;color:#305d3a}.p2-smoothie-target.white{background:#fff;color:#736752}.p2-smoothie-target.red{background:#efb2b6;color:#822d3a}.p2-ingredients{grid-area:ingredients;display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.p2-ingredients button{padding:7px;border:2px solid transparent;border-radius:10px;background:#fff8e8;cursor:pointer}.p2-ingredients button span,.p2-ingredients button small{display:block}.p2-ingredients button.selected{border-color:#4d8062;background:#dcefdc}.p2-ingredients button.wrong{border-color:#b33b40;background:#f6c5c2}.p2-blender{grid-area:blender;position:relative;align-self:center;height:230px}.p2-blender-jug{position:absolute;left:28px;right:28px;top:5px;height:150px;border:7px solid #8c9693;border-top:0;clip-path:polygon(0 0,100% 0,87% 100%,13% 100%);background:rgba(202,230,225,.48)}.p2-blender-base{position:absolute;left:17px;right:17px;bottom:8px;height:70px;display:grid;place-items:center;border-radius:14px;background:#495456;color:#fff;font-size:.72rem}.p2-blender.blending .p2-blender-jug{animation:p2Blend .12s linear 5}.p2-blender.green .p2-blender-jug{background:#6b9b61}.p2-blender.white .p2-blender-jug{background:#f1e6c9}.p2-blender.red .p2-blender-jug{background:#c84e60}@keyframes p2Blend{50%{transform:translateX(4px)}}.p2-blend{grid-area:button;justify-self:center}.p2-pura-couple{position:absolute;right:2%;bottom:0;transform:scale(.7);transform-origin:bottom right}

/* Greenwich Park */
.p2-stage-greenwich{ color:#f6edce; background:#071826; }.p2-park-night{position:absolute;inset:0;background:radial-gradient(circle at 68% 18%,#ede4b6 0 4%,transparent 5%),linear-gradient(#0a1830,#19384a 58%,#10291f 59%)}.p2-park-night i{position:absolute;top:12%;width:2px;height:2px;background:#fff;border-radius:50%;box-shadow:50px 60px #fff,90px -20px #fff,130px 28px #fff}.p2-park-night i:nth-child(1){left:8%}.p2-park-night i:nth-child(2){left:34%}.p2-park-night i:nth-child(3){left:62%}.p2-park-night i:nth-child(4){left:82%}
.p2-park-lawn{position:absolute;inset:8% 3% 1%;overflow:hidden;border-radius:25px;background:linear-gradient(transparent 53%,#183d29 54%)}.p2-gates{position:absolute;left:8%;right:8%;bottom:3%;display:flex;justify-content:space-around;align-items:flex-end}.p2-gate{position:relative;width:25%;height:190px;border:0;border-left:10px solid #14191b;border-right:10px solid #14191b;background:repeating-linear-gradient(90deg,transparent 0 20%,#20272a 21% 28%);cursor:pointer;color:#f5e7bf}.p2-gate i{position:absolute;inset:0;border-top:10px solid #14191b}.p2-gate span{position:absolute;left:50%;bottom:8px;transform:translateX(-50%);width:150px}.p2-gate.tried{opacity:.48}.p2-secret-gate{position:absolute;z-index:6;left:50%;top:35%;width:120px;height:140px;transform:translate(-50%,-50%) scale(.3);opacity:0;border:4px solid #e9d47d;border-radius:60px 60px 8px 8px;background:radial-gradient(circle,#9fd0a7,#1e6440);color:#fff;cursor:pointer;transition:.7s}.p2-secret-gate.show{opacity:1;transform:translate(-50%,-50%) scale(1)}.p2-secret-gate span,.p2-secret-gate small{display:block}.p2-secret-gate span{font-size:2rem}.p2-park-weather{position:absolute;z-index:7;right:7%;top:4%;font-size:3rem}.p2-park-couple{position:absolute;z-index:5;left:3%;bottom:0}.inside-park .p2-gates{opacity:.15}.inside-park .p2-secret-gate{box-shadow:0 0 70px #bce8bd}

/* Museum */
.p2-stage-museum{color:#f4e6c8;background:#171527}.p2-museum-hall{position:absolute;inset:0;background:linear-gradient(90deg,#1f1c31,#34263a 50%,#1f1c31)}.p2-museum-hall i{position:absolute;top:2%;bottom:0;width:7%;border-radius:50% 50% 0 0;background:#29243a}.p2-museum-hall i:nth-child(1){left:2%}.p2-museum-hall i:nth-child(2){left:28%}.p2-museum-hall i:nth-child(3){right:28%}.p2-museum-hall i:nth-child(4){right:2%}.p2-exhibit-case{position:relative;z-index:5;width:min(620px,84vw);padding:20px;border:2px solid #a67c4c;border-radius:18px;text-align:center;background:rgba(28,24,39,.92);box-shadow:0 0 40px rgba(240,189,102,.16)}.p2-museum-progress{display:flex;justify-content:center;gap:8px}.p2-museum-progress i{width:28px;height:7px;border-radius:7px;background:#5e5361}.p2-museum-progress i.filled{background:#e0b35f}.p2-museum-clue{font-size:clamp(1.2rem,4vw,1.8rem)}.p2-museum-choices{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.p2-museum-choices>button{width:94px;height:80px;border:1px solid #887353;border-radius:12px;background:#f4e8c9;cursor:pointer;font-size:2.3rem}.p2-mona-magnet{width:230px!important;height:118px!important;color:#d9b35b!important;background:linear-gradient(135deg,#4b2f1f,#172b26)!important;font-size:1rem!important;box-shadow:0 8px 20px #000}.p2-mona-magnet>*{display:block}.p2-mona-magnet span{font:700 1.2rem var(--serif)}.p2-mona-magnet small{margin-top:10px}.p2-museum-couple{position:absolute;z-index:5;right:3%;bottom:0;transform:scale(.72);transform-origin:bottom right}

/* Tesco */
.p2-stage-tesco{background:#e4eef3}.p2-tesco-shop{display:grid;grid-template-columns:180px 1fr;gap:14px;width:min(820px,88vw);padding:16px;border-radius:18px;background:#fff;box-shadow:0 14px 32px rgba(35,55,72,.2)}.p2-shopping-list{padding:13px;border:2px dashed #2a62a0;background:#fff9d9;transform:rotate(-1deg)}.p2-shopping-list strong{font-size:1.25rem;color:#1c4e8e}.p2-shopping-list ul{padding-left:18px;margin:8px 0;font-size:.75rem}.p2-shopping-list li{margin:5px 0}.p2-shopping-list li.found{text-decoration:line-through;color:#569060}.p2-tesco-shelves{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.p2-product{min-height:68px;border:1px solid #c9d2d5;border-bottom:5px solid #2762a0;border-radius:8px;background:#f9fbfc;cursor:pointer}.p2-product span,.p2-product small{display:block}.p2-product span{font-size:1.65rem}.p2-product.taken{opacity:.25;transform:scale(.8)}.p2-product.wrong{animation:p2Wrong .35s;border-color:#c03d49}.p2-trolley{grid-column:1/-1;display:flex;justify-content:center;gap:10px;align-items:center;color:#1e548f}.p2-trolley span{font-size:2rem}.p2-tesco-voucher{grid-column:1/-1;align-self:center;justify-self:center;width:min(340px,100%);padding:20px;border:3px dashed #e42a38;color:#fff;background:#1858a0;cursor:pointer}.p2-tesco-voucher>*{display:block}.p2-tesco-voucher b{font-size:1.7rem}.p2-tesco-voucher span{margin:8px 0;color:#ffef77}.p2-tesco-couple{position:absolute;right:1%;bottom:0;transform:scale(.68);transform-origin:bottom right}

/* Ivy + Blues */
.p2-stage-night{color:#f7e6c3;background:#241522}.p2-night-venue{position:absolute;inset:3% 4%;overflow:hidden;border-radius:22px;transition:1s}.p2-night-venue.ivy{background:radial-gradient(circle at 50% 70%,rgba(255,199,103,.35),transparent 30%),linear-gradient(#263d36,#4f2430)}.p2-ivy-table{position:absolute;left:20%;right:20%;bottom:9%;height:100px;border-radius:50%;background:#8d4f35;box-shadow:0 10px 0 #4f2a20}.p2-waiter{position:absolute;right:7%;bottom:16%;font-size:5rem}.p2-freebie-tray{position:absolute;z-index:5;left:17%;right:17%;top:15%;display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.p2-freebie{width:70px;height:70px;border:1px solid #d4b168;border-radius:50%;background:#f8e5ba;cursor:pointer;font-size:2rem;animation:p2Gift 2s ease-in-out infinite;animation-delay:calc(var(--i)*-.2s)}.p2-freebie.accepted{opacity:.15;transform:translateY(130px) scale(.5)}@keyframes p2Gift{50%{transform:translateY(-5px)}}.p2-night-couple{position:absolute;z-index:5;left:50%;bottom:12%;transform:translateX(-50%) scale(.85);transform-origin:bottom center}.p2-night-venue.blues{background:radial-gradient(circle at 50% 80%,#97334f,transparent 40%),linear-gradient(120deg,#14102b,#3c1741)}.p2-night-venue.blues::before,.p2-night-venue.blues::after{content:"";position:absolute;top:-20%;width:28%;height:100%;background:linear-gradient(rgba(87,195,255,.4),transparent);transform:rotate(19deg)}.p2-night-venue.blues::before{left:11%}.p2-night-venue.blues::after{right:11%;background:linear-gradient(rgba(255,80,160,.4),transparent);transform:rotate(-19deg)}.p2-dance-floor{position:absolute;z-index:4;left:15%;right:15%;bottom:8%;height:55%;display:grid;place-content:end center;padding:20px;border-radius:50%;background:repeating-radial-gradient(ellipse,#542344 0 12px,#24162f 13px 24px)}.p2-dance-meter{display:flex;gap:5px}.p2-dance-meter i{width:23px;height:8px;border-radius:7px;background:#4f4059}.p2-dance-meter i.filled{background:#f2bb56;box-shadow:0 0 8px #f2bb56}.p2-dance-button{margin:12px auto 0;padding:12px 24px;border:2px solid #f0c572;border-radius:999px;color:#fff;background:#a12956;cursor:pointer}.p2-night-couple.dancing.move-a{transform:translateX(-50%) scale(.85) rotate(-5deg)}.p2-night-couple.dancing.move-b{transform:translateX(-50%) scale(.85) rotate(5deg)}

/* football */
.p2-stage-football{background:#153b29;color:#fff}.p2-stadium{position:absolute;inset:2% 3%;overflow:hidden;border-radius:26px;background:linear-gradient(#152033 0 28%,#318250 29%);box-shadow:inset 0 0 0 8px rgba(255,255,255,.14)}.p2-crowd{position:absolute;inset:0 0 66%;background:radial-gradient(circle,#f1d37b 0 2px,transparent 3px) 0 0/24px 18px,linear-gradient(#20263a,#34304a)}.p2-pitch-lines{position:absolute;inset:30% 5% 4%;border:3px solid rgba(255,255,255,.7);background:repeating-linear-gradient(90deg,rgba(255,255,255,.04) 0 60px,rgba(0,0,0,.04) 61px 120px)}.p2-pitch-lines::after{content:"";position:absolute;left:50%;top:0;bottom:0;border-left:3px solid rgba(255,255,255,.7)}.p2-goal{position:absolute;right:4%;top:35%;width:18%;height:35%;border:5px solid #fff;border-left:0;background:repeating-linear-gradient(45deg,transparent 0 9px,rgba(255,255,255,.25) 10px 11px)}.p2-football-play{position:absolute;inset:0;z-index:5}.p2-ball{position:absolute;z-index:8;left:10%;top:72%;font-size:2rem;transition:.35s}.p2-pass-target{position:absolute;width:48px;height:48px;border:3px solid #ffd658;border-radius:50%;color:#fff;background:rgba(24,48,35,.65);cursor:pointer;font-size:1.4rem;animation:p2Target 1s infinite}@keyframes p2Target{50%{box-shadow:0 0 0 12px rgba(255,214,88,0)}}.p2-shot{position:absolute;z-index:8;right:5%;width:6%;height:30%;top:38%;opacity:.15;border:0;cursor:pointer}.p2-shot.left{right:17%}.p2-shot.centre{right:11%}.p2-shot.right{right:5%}.p2-football-play.scored::after{content:"GOAL!";position:absolute;left:50%;top:35%;transform:translate(-50%,-50%) rotate(-4deg);color:#ffd85b;font:700 clamp(3rem,10vw,7rem) var(--serif);text-shadow:0 5px 0 #a32838}.goal-ball{left:87%!important;top:49%!important;transform:scale(.7) rotate(540deg)}.p2-football-couple{position:absolute;z-index:7;left:7%;bottom:4%;transform:scale(.85);transform-origin:bottom left}.p2-ceremony{position:absolute;z-index:12;left:50%;top:47%;transform:translate(-50%,-50%)}

/* branch games */
.p2-stage-chess{background:radial-gradient(circle at 50% 45%,#704a31,#291c18);color:#f5e8c8}.p2-chess-board{position:relative;width:min(420px,74vw);aspect-ratio:4/5;display:grid;grid-template-columns:repeat(4,1fr);box-shadow:0 18px 38px #140b08}.p2-chess-square{border:0;background:#ead7af}.p2-chess-square:nth-child(8n+2),.p2-chess-square:nth-child(8n+4),.p2-chess-square:nth-child(8n+5),.p2-chess-square:nth-child(8n+7){background:#70452e}.p2-chess-square:not(:disabled){cursor:pointer;box-shadow:inset 0 0 0 4px rgba(255,217,104,.35)}.p2-chess-square.safe{box-shadow:inset 0 0 0 7px #f1cc57,0 0 16px #f1cc57}.p2-board-pawn{position:absolute;z-index:5;transform:translate(-50%,-50%);font-size:clamp(2.4rem,10vw,4.8rem);color:#151414;filter:drop-shadow(0 5px 3px rgba(0,0,0,.35));transition:.35s}.p2-chess-board.won .p2-board-pawn{color:#e7c04d;filter:drop-shadow(0 0 15px #ffe99a)}
.p2-stage-cowboy{background:linear-gradient(#edbf78 0 60%,#a86c3f 61%)}.p2-photo-booth{width:min(540px,84vw);padding:16px;text-align:center;border:10px solid #f5ead0;border-bottom-width:55px;background:#89c4d3;box-shadow:0 18px 34px rgba(81,48,24,.35);transform:rotate(-1deg)}.p2-cowboy-portrait{position:relative;width:170px;margin:auto}.p2-cowboy-portrait .him2{width:100%}.p2-hat-layer{position:absolute;z-index:6;left:50%;top:-7px;transform:translateX(-50%);font-size:4rem}.p2-hat-options{display:flex;justify-content:center;gap:10px}.p2-hat-options button{padding:10px 18px;border:1px solid #a76c3d;border-radius:10px;background:#fff3d5;cursor:pointer;font-size:1.7rem}.p2-photo-caption{font-size:1.25rem}.p2-photo-booth.flash{animation:p2Flash .6s}@keyframes p2Flash{45%{filter:brightness(4)}100%{filter:none}}

.p2-hat-layer.cowboy{top:5px;width:86px;height:36px;border-radius:50%;background:#9a6138;box-shadow:inset 0 -7px 0 #694024}
.p2-hat-layer.cowboy::before{content:"";position:absolute;left:18px;right:18px;top:-17px;height:31px;border-radius:45% 45% 16% 16%;background:#a96b3d;border-bottom:7px solid #6d4226}
.p2-hat-layer.cowboy::after{content:"";position:absolute;left:-10px;right:-10px;bottom:3px;height:11px;border-radius:50%;background:#a96b3d}
.p2-hat-options button{position:relative;min-width:74px;min-height:58px}
.p2-mini-cowboy::before{content:"";position:absolute;left:20%;right:20%;top:17px;height:18px;border-radius:50%;background:#9a6138;box-shadow:0 7px 0 -2px #6d4226}
.p2-mini-cowboy::after{content:"";position:absolute;left:12%;right:12%;top:33px;height:7px;border-radius:50%;background:#a96b3d}

/* packing */
.p2-packing{position:absolute;inset:0;overflow:hidden;color:#f8ecd1;background:radial-gradient(circle at 50% 50%,#34455b,#111a29)}.p2-packing-head{text-align:center;padding:calc(var(--safe-top,0px) + 12px) 130px 4px}.p2-packing-head .p2-original-link{position:absolute;left:calc(var(--safe-left,0px) + 15px);top:calc(var(--safe-top,0px) + 15px)}.p2-packing-head p{margin:0}.p2-packing-head h1{margin:0;font:600 clamp(2rem,6vw,3.5rem) var(--serif)}.p2-packing-scene{position:absolute;inset:120px 0 0}.p2-suitcase{position:absolute;left:50%;top:45%;width:min(500px,50vw);height:min(330px,42vh);transform:translate(-50%,-50%);perspective:900px}.p2-case-lid,.p2-case-base{position:absolute;left:0;right:0;height:50%;border:10px solid #60452f;background:#b47745}.p2-case-lid{top:0;border-radius:25px 25px 5px 5px;transform-origin:bottom;transform:rotateX(-18deg);display:grid;place-items:center;color:#f9dc91}.p2-case-lid span{padding:6px 10px;border:2px solid #f1c76c;transform:rotate(-3deg)}.p2-case-lid i{position:absolute;width:55px;height:32px;border:3px solid rgba(255,225,145,.65);border-radius:50%}.p2-case-lid i:nth-child(2){left:8%;top:12%}.p2-case-lid i:nth-child(3){right:8%;bottom:12%}.p2-case-lid i:nth-child(4){left:40%;bottom:8%}.p2-case-base{bottom:0;border-radius:5px 5px 25px 25px;background:#9a6038;box-shadow:0 18px 30px #070c14}.p2-packed-items{position:absolute;inset:12px;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px}.p2-packed-item{font-size:2rem;transform:rotate(calc((var(--i) - 4)*4deg));animation:popin .35s}.p2-loose-keepsakes{position:absolute;inset:2% 2% 16%;pointer-events:none}.p2-loose-item{position:absolute;pointer-events:auto;width:100px;padding:8px;border:1px solid #ddc27d;border-radius:12px;color:#3f2e24;background:#fff0bd;cursor:pointer;transform:rotate(calc((var(--i) - 4)*3deg))}.p2-loose-item:nth-child(1){left:4%;top:5%}.p2-loose-item:nth-child(2){left:7%;top:35%}.p2-loose-item:nth-child(3){left:17%;top:67%}.p2-loose-item:nth-child(4){right:4%;top:5%}.p2-loose-item:nth-child(5){right:7%;top:35%}.p2-loose-item:nth-child(6){right:17%;top:67%}.p2-loose-item:nth-child(7){left:28%;top:73%}.p2-loose-item:nth-child(8){right:28%;top:73%}.p2-loose-item span,.p2-loose-item small{display:block}.p2-loose-item span{font-size:1.7rem}.p2-loose-item.packing{transform:translate(0,-80px) scale(.2);opacity:0;transition:.4s}.p2-pack-status{position:absolute;left:10%;right:10%;bottom:3%;text-align:center;font-size:1.25rem}.p2-pack-couple{position:absolute;z-index:4;left:2%;bottom:0;transform:scale(.72);transform-origin:bottom left}.p2-prinzen-packet{position:absolute;z-index:10;left:50%;top:47%;width:min(390px,76vw);padding:20px;transform:translate(-50%,-50%) scale(.3);opacity:0;border:6px solid #5a2b16;border-radius:13px;color:#fff6c9;background:linear-gradient(90deg,#b52b22,#e3b23c,#b52b22);cursor:pointer;box-shadow:0 18px 35px #07101d;transition:.55s}.p2-prinzen-packet.show{opacity:1;transform:translate(-50%,-50%) scale(1)}.p2-prinzen-packet>*{display:block}.p2-prinzen-packet strong{font:700 1.7rem var(--serif)}.p2-prinzen-packet span{margin:10px;font-size:1.5rem}.p2-prinzen-packet.eaten{transform:translate(-50%,-50%) scale(.75) rotate(8deg);filter:saturate(.3)}.p2-boarding-passes{position:absolute;z-index:9;left:50%;top:44%;display:flex;gap:12px;transform:translate(-50%,-50%)}.p2-boarding-pass{width:250px;padding:15px;border-left:8px solid #c32649;border-radius:8px;color:#253949;background:#fff5db;box-shadow:0 10px 24px #080e18;transform:rotate(-3deg)}.p2-boarding-pass:nth-child(2){transform:rotate(3deg)}.p2-boarding-pass>*{display:block}.p2-boarding-pass p{display:flex;justify-content:space-between;align-items:center;margin:12px 0;font:600 1rem var(--serif)}.p2-boarding-pass i{font-style:normal;color:#a12945}.p2-board-plane{position:absolute;z-index:10;left:50%;top:73%;transform:translateX(-50%)}

/* arrival */
.p2-arrival{position:absolute;inset:0;overflow:hidden;color:#fff2d0;background:#081426}.p2-flight-sky{position:absolute;inset:0;background:radial-gradient(circle at 78% 25%,rgba(255,211,111,.32),transparent 13%),linear-gradient(#071326,#1b3653 66%,#e0a96e)}.p2-flight-moon{position:absolute;right:13%;top:12%;width:72px;height:72px;border-radius:50%;background:#f6dfa2;box-shadow:0 0 35px #f6dfa2}.p2-flight-clouds{position:absolute;inset:35% -20% 10%;opacity:.3;background:repeating-radial-gradient(ellipse at 20% 50%,#fff 0 7%,transparent 8% 20%);animation:p2CloudFlight 14s linear infinite}@keyframes p2CloudFlight{to{transform:translateX(20%)}}.p2-flight-route{position:absolute;z-index:4;left:9%;right:9%;top:12%;display:flex;justify-content:space-between;align-items:center;font-size:.65rem;letter-spacing:.18em}.p2-flight-route b{flex:1;margin:0 15px;text-align:center;color:#efc960;letter-spacing:.35em}.p2-plane{position:absolute;z-index:5;left:-12%;top:35%;font-size:5rem;filter:drop-shadow(0 10px 10px rgba(0,0,0,.45));transition:left 3s ease-in-out,top 3s}.p2-arrival.departing .p2-plane{left:77%;top:25%}.p2-arrival.restored .p2-plane,.p2-arrival.landed .p2-plane{left:82%;top:22%}.p2-hamburg-skyline{position:absolute;z-index:3;left:0;right:0;bottom:0;height:38%;opacity:.25;transition:1.2s;background:#0a1724}.p2-hamburg-skyline i{position:absolute;bottom:0;width:11%;background:#07111d}.p2-hamburg-skyline i:nth-child(1){left:4%;height:44%}.p2-hamburg-skyline i:nth-child(2){left:22%;height:68%;clip-path:polygon(50% 0,57% 38%,100% 40%,100% 100%,0 100%,0 40%,43% 38%)}.p2-hamburg-skyline i:nth-child(3){left:42%;width:19%;height:50%;clip-path:polygon(0 35%,15% 15%,28% 35%,42% 5%,58% 35%,72% 20%,100% 38%,100% 100%,0 100%)}.p2-hamburg-skyline i:nth-child(4){left:66%;height:42%}.p2-hamburg-skyline i:nth-child(5){left:78%;height:60%}.p2-hamburg-skyline i:nth-child(6){right:1%;height:35%}.p2-arrival.landed .p2-hamburg-skyline,.p2-arrival.restored .p2-hamburg-skyline{opacity:1}.p2-arrival-copy{position:absolute;z-index:7;left:50%;top:42%;width:min(760px,88vw);text-align:center;transform:translate(-50%,-50%);opacity:0;transition:1s}.p2-arrival-copy h1{margin:4px 0;font:600 clamp(2rem,7vw,4.6rem) var(--serif)}.p2-arrival-copy p{margin:4px}.p2-arrival.landed .p2-arrival-copy,.p2-arrival.restored .p2-arrival-copy{opacity:1;top:38%}.p2-arrival-couple{position:absolute;z-index:8;left:50%;bottom:7%;transform:translateX(-50%) scale(1.05);transform-origin:bottom center}.p2-arrival-actions{position:absolute;z-index:10;left:50%;bottom:calc(var(--safe-bottom,0px) + 14px);display:flex;gap:10px;transform:translateX(-50%);opacity:0;transition:1s}.p2-arrival.landed .p2-arrival-actions,.p2-arrival.restored .p2-arrival-actions{opacity:1}

.p2-flight-clouds{inset:28% -20% 18%;opacity:.18;filter:blur(12px);background:
  radial-gradient(ellipse at 12% 64%,#fff 0 5%,transparent 6%),radial-gradient(ellipse at 37% 34%,#fff 0 7%,transparent 8%),
  radial-gradient(ellipse at 64% 67%,#fff 0 6%,transparent 7%),radial-gradient(ellipse at 88% 38%,#fff 0 5%,transparent 6%);animation-name:p2CloudFlightSoft}
@keyframes p2CloudFlightSoft{to{transform:translateX(12%)}}
.p2-arrival-actions .ghost{color:#fff2d0;border-color:rgba(255,242,208,.6);background:rgba(7,18,32,.42)}

@media(max-width:700px){
  .map-chapter-switch{gap:8px;padding:7px 7px 7px 11px}.map-chapter-switch strong{font-size:.9rem}.map-chapter-switch small{font-size:.7rem}.p2-launch-button{min-width:132px;padding:8px 9px;font-size:.68rem}
  .p2-map-head{padding:calc(var(--safe-top,0px) + 55px) 12px 4px}.p2-map-head .p2-original-link{font-size:.7rem}.p2-map-head>p:last-child{display:none}.p2-map-page{grid-template-rows:auto minmax(250px,1fr) auto}.p2-map-board{width:920px}.p2-map-foot{padding-left:5px;padding-right:5px}.p2-keepsake{width:28px;height:28px;font-size:.85rem}.p2-stage-heading{padding:calc(var(--safe-top,0px) + 55px) 14px 3px}.p2-stage-heading>p:last-child{display:none}.p2-stage-status{padding:7px 12px calc(var(--safe-bottom,0px) + 8px)}
  .p2-pura-counter{grid-template-columns:minmax(0,1fr) 88px;width:94vw;padding:7px;border-width:5px;gap:7px}.p2-ingredients{grid-template-columns:repeat(3,minmax(0,1fr))}.p2-ingredients button{min-width:0;padding:4px 2px}.p2-ingredients button small{font-size:.55rem}.p2-blender{height:190px}.p2-blender-jug{left:9px;right:9px;height:120px}.p2-blender-base{left:4px;right:4px;height:60px}.p2-pura-couple,.p2-tesco-couple,.p2-museum-couple{display:none}
  .p2-listen-panel{grid-template-columns:1fr;padding:8px}.p2-listen-panel small{grid-column:auto}.p2-listen-button{min-width:0;width:100%}
  .p2-gates{left:2%;right:2%}.p2-gate{height:145px}.p2-gate span{width:95px;font-size:.8rem}.p2-tesco-shop{width:94vw;grid-template-columns:110px 1fr;padding:8px}.p2-shopping-list{padding:7px}.p2-shopping-list ul{font-size:.6rem;padding-left:13px}.p2-tesco-shelves{grid-template-columns:repeat(2,1fr)}.p2-product{min-height:48px}.p2-product span{font-size:1.25rem}.p2-product small{font-size:.55rem}
  .p2-freebie-tray{left:5%;right:5%;top:8%}.p2-freebie{width:52px;height:52px;font-size:1.5rem}.p2-night-couple{bottom:8%;transform:translateX(-50%) scale(.68)}.p2-night-couple.dancing.move-a{transform:translateX(-50%) scale(.68) rotate(-5deg)}.p2-night-couple.dancing.move-b{transform:translateX(-50%) scale(.68) rotate(5deg)}.p2-dance-floor{left:4%;right:4%}.p2-dance-meter i{width:16px}
  .p2-football-couple{transform:scale(.62)}.p2-pass-target{width:40px;height:40px}.p2-chess-board{height:min(55vh,420px);width:auto}.p2-packing-head{padding:calc(var(--safe-top,0px) + 56px) 10px 0}.p2-packing-head>p:last-child{display:none}.p2-packing-scene{inset:115px 0 0}.p2-suitcase{width:70vw;height:30vh}.p2-loose-item{width:75px;padding:5px}.p2-loose-item small{font-size:.58rem}.p2-loose-item:nth-child(3),.p2-loose-item:nth-child(6),.p2-loose-item:nth-child(7),.p2-loose-item:nth-child(8){top:70%}.p2-boarding-passes{width:92vw;gap:5px}.p2-boarding-pass{width:50%;padding:9px;font-size:.65rem}.p2-arrival-actions{width:94vw;justify-content:center}.p2-arrival-actions .btn{padding:9px 11px;font-size:.72rem}.p2-arrival-couple{transform:translateX(-50%) scale(.84)}
}
@media(max-width:520px){
  body.p2-stage-running #resetBtn,body.p2-stage-running #musicBtn,body.p2-stage-running #mute{left:calc(var(--safe-left,0px) + 8px)!important;right:auto!important;width:36px;height:36px;font-size:1rem}
  body.p2-stage-running #resetBtn{top:calc(var(--safe-top,0px) + 8px)!important;font-size:1.1rem}
  body.p2-stage-running #musicBtn{top:calc(var(--safe-top,0px) + 50px)!important}
  body.p2-stage-running #mute{top:calc(var(--safe-top,0px) + 92px)!important}
  .p2-stage-close{top:calc(var(--safe-top,0px) + 8px);right:calc(var(--safe-right,0px) + 8px)}
}
@media(max-height:650px){.p2-stage-heading>p:last-child{display:none}.p2-stage-heading{padding-top:calc(var(--safe-top,0px) + 6px)}.p2-game{transform:scale(.9)}.p2-packing-scene{inset:95px 0 0}.p2-arrival-couple{transform:translateX(-50%) scale(.78)}}
