
:root{
  --purple:#6b49ff; --gold:#ffd75a; --bg:#f5f0ff; --ink:#203040;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;width:100%;overflow:hidden;background:var(--bg);font-family:Arial,sans-serif;color:var(--ink)}
button{border:none;border-radius:18px;padding:14px 18px;background:var(--purple);color:white;font-weight:700;font-size:clamp(15px,1.7vw,21px);box-shadow:0 8px 20px rgba(70,50,170,.24)}
button:active{transform:scale(.97)}
.screen{display:none;position:relative;width:100vw;height:100vh;justify-content:center;align-items:center;flex-direction:column;overflow:hidden}
.screen.active{display:flex}
.hidden{display:none!important}

.bg-cover{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.veil{position:absolute;inset:0;background:linear-gradient(rgba(255,255,255,.08),rgba(255,255,255,.16))}
.home-ui{position:relative;z-index:2;width:100%;height:100%}
.buttons{position:absolute;left:50%;bottom:max(18px,env(safe-area-inset-bottom));transform:translateX(-50%);display:flex;gap:12px;flex-wrap:wrap;justify-content:center;width:min(92vw,900px)}
.buttons.compact{position:static;transform:none;width:auto;padding-bottom:16px}
.sparkle-widget{position:absolute;right:2vw;top:8vh;animation:floaty 3s ease-in-out infinite}
.sparkle-widget img{width:min(16vw,110px);height:auto;display:block}
.bubble{position:absolute;right:92px;top:8px;max-width:250px;background:rgba(255,255,255,.96);padding:14px 16px;border-radius:18px;box-shadow:0 12px 24px rgba(0,0,0,.16);font-weight:700;line-height:1.28}
.bubble::after{content:"";position:absolute;right:-12px;top:26px;border:8px solid transparent;border-left-color:rgba(255,255,255,.96)}
.bubble.small{right:auto;left:92px;top:0;max-width:220px}
.bubble.small::after{left:-12px;right:auto;border-left-color:transparent;border-right-color:rgba(255,255,255,.96)}

.topbar{width:min(96vw,1200px);display:flex;gap:10px;justify-content:center;padding:12px 0;z-index:10}
.story-card{position:relative;width:min(96vw,1200px);height:calc(100vh - 150px);border-radius:28px;overflow:hidden;background:white;box-shadow:0 16px 36px rgba(40,30,80,.16);animation:pageIn .45s ease}
.story-image{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:linear-gradient(#fff9eb,#fff)}
#drawLayer{position:absolute;inset:0;width:100%;height:100%;touch-action:none}
.portal-glow{position:absolute;inset:0;background:radial-gradient(circle at 32% 35%, rgba(255,215,90,.42), rgba(255,215,90,0) 20%);animation:pulse 1.2s infinite ease-in-out}
.scene-sparkle{position:absolute;left:3%;top:6%;animation:floaty 2.8s ease-in-out infinite}
.scene-sparkle img{width:min(12vw,90px)}
.caption{padding:10px 16px 6px;max-width:1000px;text-align:center;font-weight:700;font-size:clamp(18px,2vw,28px)}

#mapWrap{position:relative;width:min(96vw,1350px);height:calc(100vh - 120px)}
#mapImage{width:100%;height:100%;object-fit:contain;border-radius:24px;box-shadow:0 16px 36px rgba(40,30,80,.14)}
.spot{position:absolute;background:transparent;border:2px solid transparent;border-radius:24px;box-shadow:none;padding:0}
.spot:focus,.spot:hover{border-color:rgba(255,215,90,.95);background:rgba(255,215,90,.09)}
#s-cloud{left:9%;top:6%;width:23%;height:21%}
#s-mountain{left:53%;top:1%;width:24%;height:26%}
#s-rainbow{left:1%;top:28%;width:24%;height:20%}
#s-heart{left:40%;top:27%;width:24%;height:19%}
#s-river{left:73%;top:27%;width:24%;height:24%}
#s-forest{left:2%;top:53%;width:27%;height:26%}
#s-castle{left:37%;top:57%;width:28%;height:30%}
.map-sparkle{position:absolute;left:12%;top:42%;transition:transform 4.5s linear;animation:floaty 2.5s ease-in-out infinite}
.map-sparkle img{width:min(10vw,86px)}
#magicLayer{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.magic{position:absolute;width:10px;height:10px;border-radius:50%;background:radial-gradient(circle,#fff6bc 0%,#ffd75a 56%,rgba(255,215,90,0) 70%);animation:magicRise 1.9s linear forwards}
.panel{position:absolute;right:18px;bottom:18px;width:min(88vw,360px);background:rgba(255,255,255,.92);padding:18px;border-radius:22px;box-shadow:0 16px 30px rgba(0,0,0,.18)}
.panel h3{margin:0 0 8px}.panel p{margin:0 0 14px;line-height:1.4}

#friends{justify-content:flex-start;padding-top:max(8px,env(safe-area-inset-top))}
#friends h2{margin:4px 0 10px;font-size:clamp(28px,3vw,40px)}
.grid{width:min(96vw,1200px);display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;overflow:auto;padding-bottom:18px}
.card{background:rgba(255,255,255,.86);padding:14px;border-radius:22px;box-shadow:0 12px 24px rgba(70,50,170,.12)}
.card img{width:100%;aspect-ratio:1/1;object-fit:contain;background:#fff;border-radius:16px}
.card h3{margin:10px 0 8px}.card p{margin:0;line-height:1.36;font-size:15px}

.spark-dot{position:absolute;width:10px;height:10px;border-radius:50%;background:radial-gradient(circle,#fff8c6 0%,#ffd75a 50%,rgba(255,215,90,0) 75%);pointer-events:none;z-index:50;animation:sparkFade .9s linear forwards}

@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
@keyframes pageIn{from{transform:perspective(1200px) rotateY(14deg);opacity:.55}to{transform:none;opacity:1}}
@keyframes pulse{0%,100%{opacity:.4}50%{opacity:1}}
@keyframes magicRise{from{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-38px) scale(.5)}}
@keyframes sparkFade{from{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-26px) scale(.55)}}

@media (max-width: 720px){
  .bubble{max-width:180px;right:74px;font-size:14px}
  .bubble.small{left:76px}
  #mapWrap{height:calc(100vh - 108px)}
}


/* --- Home screen fit fixes --- */
#home{
  background: linear-gradient(180deg,#dfe7ff 0%, #f6f0ff 100%);
}
#home .bg-cover{
  object-fit: cover;
  filter: blur(18px) brightness(0.95);
  transform: scale(1.08);
}
#home .veil{
  background: linear-gradient(180deg, rgba(255,255,255,.12), rgba(255,255,255,.22));
}
#home .home-ui{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  padding: max(10px, env(safe-area-inset-top)) 14px max(110px, env(safe-area-inset-bottom) + 90px);
}
#home .cover-image-card{
  display:none;
}
#home .home-poster{
  position:relative;
  width:min(92vw, 780px);
  height:min(72vh, 980px);
  display:flex;
  align-items:center;
  justify-content:center;
  z-index:2;
}
#home .home-poster img.poster{
  width:100%;
  height:100%;
  object-fit:contain;
  border-radius:24px;
  box-shadow:0 18px 40px rgba(33,26,84,.18);
}
#homeSparkle{
  right: clamp(8px, 2vw, 24px);
  top: clamp(12px, 5vh, 40px);
  z-index:5;
}
#homeSparkle img{
  width: clamp(60px, 10vw, 96px);
}
#home .bubble{
  right:auto;
  left:-220px;
  top:0;
  max-width: min(44vw, 280px);
  font-size: clamp(13px, 1.6vw, 20px);
}
#home .bubble::after{
  left:auto;
  right:-12px;
  border-right-color: transparent;
  border-left-color: rgba(255,255,255,.96);
}
#home .buttons{
  position:absolute;
  left:50%;
  bottom:max(14px, env(safe-area-inset-bottom) + 10px);
  transform:translateX(-50%);
  width:min(94vw, 900px);
  display:grid;
  grid-template-columns:repeat(3, minmax(0,1fr));
  gap:12px;
  z-index:6;
}
#home .buttons button{
  min-height:58px;
}

/* Small screens */
@media (max-width: 760px){
  #home .home-ui{
    padding-bottom:max(150px, env(safe-area-inset-bottom) + 120px);
  }
  #home .home-poster{
    width:min(92vw, 540px);
    height:min(68vh, 760px);
  }
  #home .bubble{
    left:-150px;
    max-width: 160px;
    top: 6px;
    padding:10px 12px;
    font-size:14px;
  }
  #home .buttons{
    grid-template-columns:1fr;
    width:min(84vw, 360px);
  }
  #home .buttons button{
    min-height:52px;
    font-size:16px;
  }
}

/* Map sparkle / scene sparkle should use single character cleanly */
.sparkle-widget img,
.scene-sparkle img,
.map-sparkle img{
  object-fit: contain;
  background: transparent;
}


/* ===== v3 mobile fixes ===== */
html, body {
  overflow: hidden;
}
.screen-scroll{
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
.home-scroll{
  min-height: 100vh;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-start;
  padding: max(16px, env(safe-area-inset-top)) 16px max(28px, env(safe-area-inset-bottom) + 24px);
}
.home-poster{
  position:relative;
  width:min(92vw, 760px);
  margin-top: 10px;
  flex: 0 0 auto;
}
.home-poster .poster{
  width:100%;
  height:auto;
  max-height:none;
  object-fit:contain;
  display:block;
  border-radius:24px;
  box-shadow:0 18px 40px rgba(33,26,84,.18);
}
.home-buttons{
  position: static !important;
  transform:none !important;
  width:min(92vw, 760px) !important;
  display:grid !important;
  grid-template-columns:repeat(3, minmax(0,1fr));
  gap:12px;
  margin:14px 0 20px;
}
.home-buttons button{
  min-height:58px;
}
#homeSparkle{
  position: absolute;
  right: max(6px, 2vw);
  top: max(6px, 2vw);
}
#homeSparkle img{
  width: clamp(56px, 8vw, 88px);
}
#home .bubble{
  left:auto;
  right:70px;
  top:0;
  max-width:min(42vw, 260px);
  font-size:clamp(12px,1.5vw,18px);
}
#home .bubble::after{
  right:-12px;
  left:auto;
  border-left-color: rgba(255,255,255,.96);
  border-right-color: transparent;
}
@media (max-width: 700px){
  html, body{
    overflow:hidden;
  }
  .screen-scroll{
    overflow-y:auto;
  }
  .home-poster{
    width:min(94vw, 520px);
  }
  .home-buttons{
    grid-template-columns:1fr !important;
    width:min(86vw, 360px) !important;
  }
  #home .bubble{
    right:58px;
    max-width:140px;
    padding:10px 12px;
    font-size:13px;
  }
}

/* Map hotspot visibility + easier tapping */
.spot-pin{
  display:flex;
  align-items:center;
  justify-content:center;
  background: rgba(255,255,255,.78);
  border: 3px solid rgba(255,215,90,.95);
  box-shadow: 0 8px 18px rgba(0,0,0,.15), 0 0 0 6px rgba(255,215,90,.18);
  min-width: 44px;
  min-height: 44px;
  z-index: 6;
}
.spot-pin span{
  font-size: clamp(18px, 2vw, 24px);
  line-height:1;
}
.spot-pin:focus, .spot-pin:hover{
  background: rgba(255,245,200,.95);
  transform: scale(1.04);
}

/* Larger and corrected map hit areas */
#s-cloud{left:11%;top:10%;width:14%;height:12%}
#s-mountain{left:73%;top:9%;width:14%;height:14%}
#s-rainbow{left:8%;top:36%;width:14%;height:12%}
#s-heart{left:44%;top:30%;width:14%;height:12%}
#s-river{left:79%;top:36%;width:14%;height:12%}
#s-forest{left:6%;top:60%;width:14%;height:14%}
#s-castle{left:47%;top:72%;width:14%;height:14%}

/* make map panel not cover pins too much */
.panel{
  z-index: 20;
}
