html, body{
  margin:0;
  padding:0;
  height:100%;
  overflow:hidden;
  font-family: system-ui, -apple-system, sans-serif;
  background:#000;
}

.map{
  position:fixed;
  inset:0;
  width:100vw;
  height:100vh;
  overflow:hidden;
}

.map-bg{
  position:absolute;
  width:100%;
  height:100%;
  object-fit:cover;
  user-select:none;
  pointer-events:none;
}

.route-overlay{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  pointer-events:none;
}

#routePath{
  fill:none;
  stroke:rgba(255, 255, 255, 0.85);
  stroke-width:4;
  stroke-linecap:round;
  stroke-linejoin:round;
  stroke-dasharray:10 8;
  filter:drop-shadow(0 0 6px rgba(0, 0, 0, 0.8));
}

#pointsLayer{
  position:absolute;
  inset:0;
}

.point{
  position:absolute;
  width:clamp(44px,6.2vw,78px);
  height:clamp(44px,6.2vw,78px);
  transform:translate(-50%, -50%);
  user-select:none;
  pointer-events:none;
}

.point img{
  width:100%;
  height:100%;
}

.start-point{
  z-index:1;
}

.snail{
  position:absolute;
  width:clamp(48px,7vw,80px);
  transform:translate(-50%, -50%);
  pointer-events:none;
  z-index:2;
}

.hud{
  position:fixed;
  inset:0;
  pointer-events:none;
}

.user{
  position:absolute;
  top:12px;
  right:12px;
  display:flex;
  gap:10px;
  align-items:center;
  pointer-events:auto;
}

.panel{
  position:absolute;
  left:50%;
  bottom:16px;
  transform:translateX(-50%);
  background:rgba(255,255,255,0.85);
  backdrop-filter: blur(8px);
  padding:14px 18px;
  border-radius:16px;
  text-align:center;
  min-width:260px;
  pointer-events:auto;
}

button, .btn{
  border:none;
  border-radius:12px;
  padding:10px 16px;
  background:#36b37e;
  color:#fff;
  font-weight:600;
  cursor:pointer;
  text-decoration:none;
}

button[disabled]{
  opacity:.5;
  cursor:not-allowed;
}

@media (max-width:600px){
  .panel{
    width:92%;
  }
}

.orientation-gate{
  position:fixed;
  inset:0;
  display:none;
  align-items:center;
  justify-content:center;
  text-align:center;
  padding:24px;
  background:#000;
  color:#fff;
  font-size:clamp(18px, 4vw, 32px);
  z-index:9999;
}

body.mobile-portrait-lock .orientation-gate{
  display:flex;
}

body.mobile-portrait-lock .map,
body.mobile-portrait-lock .hud{
  display:none;
}