*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:"Trebuchet MS","Comic Sans MS",system-ui,sans-serif;background:linear-gradient(#7fd8ff,#c9f0ff 60%,#fff6d6);color:#23314d;min-height:100vh;overflow-x:hidden}
#app{max-width:1100px;margin:0 auto;padding:16px;min-height:100vh;display:flex;flex-direction:column}
.topbar{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.pill{background:#fff;border-radius:999px;padding:10px 18px;font-weight:bold;box-shadow:0 3px 0 #0002;font-size:18px}
button,.btn{font:inherit;font-weight:bold;font-size:22px;border:none;border-radius:20px;padding:16px 26px;min-height:60px;min-width:60px;cursor:pointer;background:#ff7a59;color:#fff;box-shadow:0 5px 0 #c4503a;transition:transform .1s}
button:active{transform:translateY(4px);box-shadow:0 1px 0 #c4503a}
.btn-blue{background:#3a8dff;box-shadow:0 5px 0 #2563c4}
.btn-green{background:#2fbf71;box-shadow:0 5px 0 #1f8a50}
.btn-yellow{background:#ffc93c;color:#5a3d00;box-shadow:0 5px 0 #c99a1a}
.btn-small{font-size:18px;padding:10px 18px;min-height:52px}
.center{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;flex:1;gap:20px}
h1{font-size:clamp(34px,7vw,64px);color:#fff;text-shadow:0 4px 0 #2563c4,0 6px 12px #0003;line-height:1.1}
h2{font-size:clamp(26px,5vw,40px);color:#2563c4}
.sub{font-size:22px}
.pip{width:min(60vw,320px);animation:fly 3s ease-in-out infinite}
.pip.small{width:min(34vw,170px)}
@keyframes fly{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-14px) rotate(3deg)}}
.cloud{position:fixed;background:#fff;border-radius:50px;opacity:.8;z-index:-1}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px}
.dest{background:#fff;border-radius:22px;padding:14px 8px;text-align:center;box-shadow:0 5px 0 #0002;font-size:20px;font-weight:bold;color:#23314d;min-height:130px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px}
.dest .flag{font-size:44px;line-height:1}
.dest.locked{opacity:.55;background:#eef3f8;box-shadow:0 5px 0 #0001}
.dest small{font-size:14px;color:#6b7a99}
.dest.open{outline:4px solid #ffc93c;animation:pulse 1.6s infinite}
@keyframes pulse{50%{transform:scale(1.04)}}
.dest.done{outline:4px solid #2fbf71}
.page{background:#fff;border-radius:28px;box-shadow:0 8px 0 #0002;padding:20px;display:flex;gap:20px;align-items:center;flex:1}
.page .art{flex:1;display:flex;justify-content:center}
.page .art svg{width:100%;max-width:380px;height:auto;max-height:52vh}
.page .text{flex:1;font-size:clamp(22px,3vw,30px);line-height:1.45}
.page .text h3{font-size:clamp(28px,4vw,40px);color:#ff7a59;margin-bottom:10px}
@media (max-width:700px){.page{flex-direction:column;padding:16px}.page .art svg{max-height:34vh}}
.nav{display:flex;justify-content:space-between;align-items:center;margin-top:14px;gap:10px}
.dots{display:flex;gap:8px}.dots i{width:14px;height:14px;border-radius:50%;background:#fff;display:block}.dots i.on{background:#ff7a59}
.quiz{background:#fff;border-radius:28px;box-shadow:0 8px 0 #0002;padding:22px;flex:1;display:flex;flex-direction:column;gap:16px}
.q{font-size:clamp(24px,3.4vw,34px);font-weight:bold}
.answers{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media (max-width:600px){.answers{grid-template-columns:1fr}}
.answers button{background:#eaf4ff;color:#23314d;box-shadow:0 5px 0 #b8d3f0;font-size:24px;min-height:76px}
.answers button.right{background:#2fbf71;color:#fff;box-shadow:0 5px 0 #1f8a50}
.answers button.wrong{background:#ffb3a3;box-shadow:0 5px 0 #e0806c}
.feedback{font-size:24px;min-height:34px;font-weight:bold;text-align:center}
.passport{background:#1f3f8a;border-radius:24px;padding:18px;color:#ffd76a;box-shadow:0 8px 0 #0003;flex:1}
.passport h2{color:#ffd76a;text-align:center;margin-bottom:12px}
.stamps{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:12px;background:#fdf6e3;border-radius:16px;padding:14px}
.stamp{aspect-ratio:1;border:3px dashed #c9bfa3;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#b5aa8c;font-size:14px;font-weight:bold;text-align:center}
.stamp.got{border:5px solid #d6336c;color:#d6336c;transform:rotate(-12deg);background:#fff0f5}
.stamp.got .flag{font-size:36px}
.stamp.new{animation:stampin .6s cubic-bezier(.3,1.6,.6,1)}
@keyframes stampin{0%{transform:scale(3) rotate(20deg);opacity:0}100%{transform:scale(1) rotate(-12deg);opacity:1}}
.read{background:#9b6bff;box-shadow:0 5px 0 #6c43c9}
.big-score{font-size:60px;font-weight:bold;color:#ff7a59}
/* v2 */
.pip-svg{width:100%;height:auto;display:block}
.page .art svg.scene{width:100%;max-width:520px;height:auto;max-height:56vh;border-radius:18px}
.globe-wrap{position:relative;width:min(92vw,62vh,560px);margin:6px auto;aspect-ratio:1}
.globe{width:100%;height:100%;touch-action:none;filter:drop-shadow(0 10px 12px #0003);cursor:grab}
.marker{cursor:pointer}.marker.open circle:nth-child(2){animation:mpulse 1.4s infinite}
@keyframes mpulse{50%{r:15}}
.mlabel{font-size:20px;font-weight:bold;fill:#1d2b4a;stroke:#fff;stroke-width:5px;paint-order:stroke;pointer-events:none}
.marker.locked .mlabel{fill:#5b6578;font-size:16px}
.flyer{position:absolute;width:80px;pointer-events:none;translate:-50% -50%}
.globe-wrap{overflow:hidden;border-radius:50%}
.flyer.landed{width:110px;animation:fly 2.5s ease-in-out infinite}
.spin{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.says{display:flex;gap:14px;align-items:center;background:#fff;border-radius:22px;padding:14px 18px;box-shadow:0 6px 0 #0002;font-size:clamp(18px,2.4vw,24px);line-height:1.4;max-width:900px;margin:6px auto}
.says-pip{width:90px;flex:none}
.qhead{display:flex;align-items:center;gap:12px;justify-content:center}.qpip{width:70px}
.stamp.got{transform:rotate(var(--rot,-12deg))}
@keyframes stampin{0%{transform:scale(3) rotate(20deg);opacity:0}100%{transform:scale(1) rotate(var(--rot,-12deg));opacity:1}}
.flyer.landed{translate:-10% -5%}
