@charset 'utf-8';

.map_title_text {
  margin: auto;
  text-align: center;
  width: 160px;
  display: block;
  line-height: 20px;
  font-size: 14px;
  font-weight: bold;
}

.map_body .map_bglayer1 {
  width: 100%;
  height: 100%;
  position: absolute;
  left: 0;
  top: 0;
}

.map_body .map_bglayer2 {
  width: 100%;
  height: 100%;
  position: absolute;
  left: 0;
  top: 0;
}

.map_body .map_bgroad {
  width: 100%;
  height: 100%;
  position: absolute;
  left: 0;
  top: 0;
}

.map_body .map_button_stack {
  position: absolute;
  right: 0;
  bottom: 0;
  text-align: right;
}

.map_body .map_toggle_cityname::after {
  content: " 끄기";
}

.map_body .map_toggle_cityname.active::after {
  content: " 켜기";
}

.map_body .map_toggle_single_tap::after {
  content: " 끄기";
}

.map_body .map_toggle_single_tap.active::after {
  content: " 켜기";
}

.world_map .city_tooltip {
  position: absolute;
  z-index: 16;
  display: none;
  min-width: 120px;
  border: 0.02em gray solid;
  white-space: nowrap;
  font-size: 14px;
}

.world_map .city_name {
  background-color: rgb(30, 164, 255);
  z-index: 6;
  line-height: 15px;
  height: 15px;
}

.world_map .nation_name {
  background-color: rgb(30, 164, 255);
  z-index: 6;
  line-height: 15px;
  height: 15px;
  border-top: 0.02em gray solid;
  text-align: right;
}

@keyframes blink-my-city-d1 {
  0% {
    outline: solid 4px transparent;
  }

  50% {
    outline: solid 4px rgba(255, 0, 0, 1);
  }

  100% {
    outline: solid 4px transparent;
  }
}

@keyframes blink-my-city-d2 {
  0% {
    outline: double 4px transparent;
  }

  50% {
    outline: double 4px rgba(192, 192, 192, 1);
  }

  100% {
    outline: double 4px transparent;
  }
}

/* Basic */

@keyframes blink-my-city {
  0% {
    outline: dashed 5px transparent;
  }

  50% {
    outline: dashed 5px white;
  }

  100% {
    outline: dashed 5px transparent;
  }
}

@keyframes blink-my-city2 {
  0% {
    outline: dashed 4px transparent;
  }

  50% {
    outline: dashed 4px red;
  }

  100% {
    outline: dashed 4px transparent;
  }
}

.btn.btn-minimum {
  padding-top: 1px;
  padding-bottom: 1px;
}

.world_map.hide_cityname .city_detail_name {
  display: none;
}

.city_base .city_bg {
  z-index: 1;
  position: absolute;
  background-position: center;
}

.city_base div {
  z-index: 2;
}

$cityBaseWidth: 40px;
$cityBaseHeight: 30px;

$detailMapCitySizes: (
  (1, 48px, 45px, 16px, 15px, -8px, -4px),
  (2, 60px, 42px, 20px, 14px, -8px, -4px),
  (3, 42px, 42px, 14px, 14px, -8px, -4px),
  (4, 60px, 45px, 20px, 15px, -6px, -3px),
  (5, 72px, 48px, 24px, 16px, -6px, -4px),
  (6, 78px, 54px, 26px, 18px, -6px, -4px),
  (7, 84px, 60px, 28px, 20px, -6px, -4px),
  (8, 96px, 72px, 32px, 24px, -6px, -3px)
);

$basicMapCitySize: (
  (1, 12px, 12px),
  (2, 12px, 12px),
  (3, 14px, 14px),
  (4, 16px, 14px),
  (5, 18px, 16px),
  (6, 20px, 16px),
  (7, 22px, 18px),
  (8, 24px, 18px)
);
.city_img {
  position: absolute;
}

.world_map.full_width_map {
  width: 700px;
  background: black;
  font-size: 14px;
  color: white;
  position: relative;

  .map_title {
    width: 700px;
    height: 20px;
    text-align: center;
  }

  .map_body {
    width: 700px;
    height: 500px;
    position: relative;
    overflow: hidden;
  }

  .city_base {
    position: absolute;
    width: $cityBaseWidth;
    height: $cityBaseHeight;
  }

  .city_detail_name {
    background-color: rgba(0, 0, 0, 0.5);
    position: absolute;
    white-space: nowrap;
    left: 70%;
    font-size: 10px;
    bottom: -10px;
    color: white;
  }

  &.map_detail {
    @each $cityIdx, $cityAreaWidth, $cityAreaHeight, $cityIconWidth, $cityIconHeight, $flagRight,
      $flagTop in $detailMapCitySizes
    {
      .my_city {
        border-radius: 33%;
      }

      .my_city:before {
        content: "";
        top: -2px;
        left: -2px;
        right: -2px;
        bottom: -2px;
        position: absolute;
        border-radius: 33%;
        overflow: hidden;

        animation-duration: 3.9s;
        animation-name: blink-my-city-d1;
        animation-iteration-count: infinite;
      }

      .my_city:after {
        content: "";
        top: -2px;
        left: -2px;
        right: -2px;
        bottom: -2px;
        position: absolute;
        border-radius: 33%;
        overflow: hidden;

        animation-duration: 3.9s;
        animation-name: blink-my-city-d2;
        animation-iteration-count: infinite;
      }

      .city_filler {
        position: absolute;
        width: calc(100% + 2px);
        height: calc(100% + 2px);
        left: -1px;
        top: -1px;
        background: transparent;
      }

      .city_base.city_level_#{$cityIdx} {
        .city_bg {
          width: $cityAreaWidth;
          height: $cityAreaHeight;
          background-size: $cityAreaWidth $cityAreaHeight;
          left: calc(($cityBaseWidth - $cityAreaWidth) / 2);
          top: calc(($cityBaseHeight - $cityAreaHeight) / 2);
        }
        .city_img {
          width: $cityIconWidth;
          height: $cityIconHeight;
          background-size: $cityIconWidth $cityIconHeight;
          left: calc(($cityBaseWidth - $cityIconWidth) / 2);
          top: calc(($cityBaseHeight - $cityIconHeight) / 2);

          > img {
            width: $cityIconWidth;
            height: $cityIconHeight;
          }
        }
        .city_flag {
          right: $flagRight;
          top: $flagTop;
        }
      }
    }

    .city_base {
      .city_state {
        position: absolute;
        top: 5px;
        /*TODO:도시 레벨 별로 다르게 위치 설정해볼 것*/
        left: 0;
      }

      .city_flag {
        position: absolute;
        width: 12px;
        height: 12px;

        .city_capital {
          position: absolute;
          width: 10px;
          height: 10px;
          top: 0;
          right: -1px;

          > img {
            width: 10px;
            height: 10px;
          }
        }
      }

      .city_flag > img {
        width: 12px;
        height: 12px;
      }
    }
  }

  &.map_basic {
    .city_filler {
      position: absolute;
      width: 100%;
      height: 100%;
      left: 0;
      top: 0;
      background: transparent;
    }

    .my_city:before {
      content: "";
      top: -2px;
      left: -2px;
      right: -2px;
      bottom: -2px;
      position: absolute;

      animation-duration: 2s;
      animation-name: blink-my-city;
      animation-iteration-count: infinite;
    }

    .my_city:after {
      content: "";
      top: -2px;
      left: -2px;
      right: -2px;
      bottom: -2px;
      position: absolute;

      animation-duration: 2s;
      animation-name: blink-my-city2;
      animation-iteration-count: infinite;
    }

    .city_img {
      background-color: white;
    }

    @each $cityIdx, $cityIconWidth, $cityIconHeight in $basicMapCitySize {
      .city_base.city_level_#{$cityIdx} {
        .city_img {
          width: $cityIconWidth;
          height: $cityIconHeight;
          left: calc(($cityBaseWidth - $cityIconWidth) / 2);
          top: calc(($cityBaseHeight - $cityIconHeight) / 2);
        }
      }
    }

    .city_base {
      .city_capital {
        position: absolute;
        width: 5px;
        height: 5px;
        top: -2px;
        right: -2px;
        background-color: yellow;
      }

      .city_state {
        position: absolute;
        width: 10px;
        height: 10px;
        top: -2px;
        left: -4px;
        background-color: white;
      }

      .city_state.city_state_war {
        background-color: red;
      }

      .city_state.city_state_bad {
        background-color: orange;
      }

      .city_state.city_state_good {
        background-color: blue;
      }
    }
  }
}

$smV: calc(500 / 700);

.world_map.small_width_map {
  width: 500px;
  background: black;
  font-size: 12px;
  color: white;
  position: relative;

  .map_body {
    .map_bglayer1,
    .map_bglayer2,
    .map_bgroad {
      background-size: calc(700px * $smV) calc(500px * $smV);
    }
  }

  .map_title {
    width: 700px * $smV;
    height: 20px;
    text-align: center;
  }

  .map_body {
    width: 700px * $smV;
    height: 500px * $smV;
    position: relative;
    overflow: hidden;
  }

  .city_base {
    position: absolute;
    width: $cityBaseWidth;
    height: $cityBaseHeight;
  }

  .city_detail_name {
    background-color: rgba(0, 0, 0, 0.5);
    position: absolute;
    white-space: nowrap;
    left: 70%;
    font-size: 10px;
    bottom: -12px;
    color: white;
  }

  &.map_detail {
    @each $cityIdx, $cityAreaWidth, $cityAreaHeight, $cityIconWidth, $cityIconHeight, $flagRight,
      $flagTop in $detailMapCitySizes
    {
      .my_city {
        border-radius: 33%;
      }

      .my_city:before {
        content: "";
        top: -2px;
        left: -2px;
        right: -2px;
        bottom: -2px;
        position: absolute;
        border-radius: 33%;
        overflow: hidden;

        animation-duration: 3.9s;
        animation-name: blink-my-city-d1;
        animation-iteration-count: infinite;
      }

      .my_city:after {
        content: "";
        top: -2px;
        left: -2px;
        right: -2px;
        bottom: -2px;
        position: absolute;
        border-radius: 33%;
        overflow: hidden;

        animation-duration: 3.9s;
        animation-name: blink-my-city-d2;
        animation-iteration-count: infinite;
      }

      .city_filler {
        position: absolute;
        width: calc(100% + 2px);
        height: calc(100% + 2px);
        left: -1px;
        top: -1px;
        background: transparent;
      }

      .city_base.city_level_#{$cityIdx} {
        .city_bg {
          width: $cityAreaWidth * $smV;
          height: $cityAreaHeight * $smV;
          background-size: calc($cityAreaWidth * $smV) calc($cityAreaHeight * $smV);
          left: calc(($cityBaseWidth - $cityAreaWidth * $smV) / 2);
          top: calc(($cityBaseHeight - $cityAreaHeight * $smV) / 2);
        }
        .city_img {
          width: $cityIconWidth * $smV;
          height: $cityIconHeight * $smV;
          background-size: calc($cityIconWidth * $smV) calc($cityIconHeight * $smV);
          left: calc(($cityBaseWidth - $cityIconWidth * $smV) / 2);
          top: calc(($cityBaseHeight - $cityIconHeight * $smV) / 2);

          > img {
            width: $cityIconWidth * $smV;
            height: $cityIconHeight * $smV;
          }
        }
        .city_flag {
          right: $flagRight;
          top: $flagTop;
        }
      }
    }

    .city_base {
      .city_state {
        position: absolute;
        top: 8px;
        /*TODO:도시 레벨 별로 다르게 위치 설정해볼 것*/
        left: 5px;
        > img {
          width: 10px;
          object-fit: contain;
        }
      }

      .city_flag {
        position: absolute;
        width: 12px * $smV;
        height: 12px * $smV;

        > img {
          width: 12px * $smV;
          height: 12px * $smV;
        }

        .city_capital {
          position: absolute;
          width: 10px * $smV;
          height: 10px * $smV;
          top: 0;
          right: -1px;

          > img {
            width: 10px * $smV;
            height: 10px * $smV;
          }
        }
      }
    }
  }

  &.map_basic {
    .city_filler {
      position: absolute;
      width: 100%;
      height: 100%;
      left: 0;
      top: 0;
      background: transparent;
    }

    .my_city:before {
      content: "";
      top: -2px;
      left: -2px;
      right: -2px;
      bottom: -2px;
      position: absolute;

      animation-duration: 2s;
      animation-name: blink-my-city;
      animation-iteration-count: infinite;
    }

    .my_city:after {
      content: "";
      top: -2px;
      left: -2px;
      right: -2px;
      bottom: -2px;
      position: absolute;

      animation-duration: 2s;
      animation-name: blink-my-city2;
      animation-iteration-count: infinite;
    }

    .city_img {
      background-color: white;
    }

    @each $cityIdx, $cityIconWidth, $cityIconHeight in $basicMapCitySize {
      .city_base.city_level_#{$cityIdx} {
        .city_img {
          width: $cityIconWidth * $smV;
          height: $cityIconHeight * $smV;
          left: calc(($cityBaseWidth - $cityIconWidth * $smV) / 2);
          top: calc(($cityBaseHeight - $cityIconHeight * $smV) / 2);
        }
      }
    }

    .city_base {
      .city_capital {
        position: absolute;
        width: 5px;
        height: 5px;
        top: -2px;
        right: -2px;
        background-color: yellow;
      }

      .city_state {
        position: absolute;
        width: 8px;
        height: 8px;
        top: -3px;
        left: -5px;
        background-color: white;
      }

      .city_state.city_state_war {
        background-color: red;
      }

      .city_state.city_state_bad {
        background-color: orange;
      }

      .city_state.city_state_good {
        background-color: blue;
      }
    }
  }
}
