@include pc-layout {
  .load-view {
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;
    min-width: $min-width; min-height: $min-height;
    background-color: $theme-pink;
    overflow: hidden;
    z-index: 1000;
  }

  /**
   * frame
   */
  .load-view__frame {
    position: absolute;
    top: 20px; left: 20px;
    width: calc(100% - 40px);
    height: calc(100% - 40px);
  }

  /*** squares ***/
  .load-view__frame__squares {
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;

    div {
      position: absolute;
      width: 40px; height: 40px;
      border: dashed 3px #fff;
      box-sizing: border-box;
      border-radius: 5px;
    }
    div:nth-child(1) { top: 0; left: 0; }
    div:nth-child(2) { top: 0; right: 0; }
    div:nth-child(3) { bottom: 0; left: 0; }
    div:nth-child(4) { bottom: 0; right: 0; }
  }

  /*** lines ***/
  .load-view__frame__lines {
    position: absolute;
    top: 37px; left: 37px;
    width: calc(100% - 74px);
    height: calc(100% - 74px);

    div {
      position: absolute;
      box-sizing: border-box;
    }
    div:nth-child(1),
    div:nth-child(3) {
      left: 0; width: 100%; height: 3px;
      border-top: dashed 3px #fff;
    }
    div:nth-child(2),
    div:nth-child(4) {
      top: 0; width: 1px; height: 100%;
      border-left: dashed 3px #fff;
    }
    div:nth-child(1) { top: 0; }
    div:nth-child(3) { bottom: 0; }
    div:nth-child(2) { left: 0; }
    div:nth-child(4) { right: 0; }
  }

  /**
   * body
   */
  .load-view__body {
    position: absolute;
    top: 0px; left: 0px;
    width: 100%; height: 100%;
  }

  /*** bg ***/
  .load-view__body__bg {
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;

    &::before,
    &::after {
      content: ""; display: block;
      position: absolute;
      width: calc(100% - 180px);
      height: calc(100% - 180px);
      border-radius: 5px;
      background-color: rgba(255,255,255,0.2);
    }
    &::before { top: 80px; left: 80px; }
    &::after  { bottom: 80px; right: 80px; }
  }

  /*** panel ***/
  .load-view__body__panel {
    position: absolute;
    top: 0; left: calc(50% - 450px);
    width: 900px; height: 100%;
  }

  /*** panel__icon ***/
  .load-view__body__panel__icon {
    position: absolute;
    top: calc(50% - 60px);
    width: 120px; height: 120px;
    opacity: 0;

    .box {
      position: absolute;
      top: 0; left: 0;
      width: 100%; height: 100%;

      &::after {
        content: ""; display: block;
        position: absolute;
        top: 8px; left: 8px;
        width: calc(100% - 16px); height: calc(100% - 16px);
        box-sizing: border-box;
        border: solid 2px transparent;
      }

      .frame {
        position: absolute;
        width: 40%; height: 40%;

        &::before,
        &::after { content: ""; display: block; position: absolute; }
        &::before { width: 100%; height: 8px; }
        &::after { width: 8px; height: 100%; }
      }
      .frame:nth-child(1) {
        top: 0; right: 0;
        &::before, &::after { top: 0; right: 0; }
      }
      .frame:nth-child(2) {
        bottom: 0; left: 0;
        &::before, &::after { bottom: 0; left: 0; }
      }
    }

    .icon {
      position: absolute;
      top: 25px; left: 25px;
      width: calc(100% - 50px); height: calc(100% - 50px);
      background-size: 150%;
      background-position: center;
    }
  }
  .load-view__body__panel__icon_type_1 {
    left: 84px;
    .box {
      &::after { border-color: $theme-pink; }
      .frame {
        &::before,
        &::after { background-color: $theme-pink; }
      }
    }
    .icon { background-image: url(../images/load-view/wait/1.png); }
  }
  .load-view__body__panel__icon_type_2 {
    left: 288px;
    .box {
      &::after { border-color: $theme-light-purple; }
      .frame {
        &::before,
        &::after { background-color: $theme-light-purple; }
      }
    }
    .icon { background-image: url(../images/load-view/wait/2.png); }
  }
  .load-view__body__panel__icon_type_3 {
    right: 288px;
    .box {
      &::after { border-color: $theme-light-pink; }
      .frame {
        &::before,
        &::after { background-color: $theme-light-pink; }
      }
    }
    .icon { background-image: url(../images/load-view/wait/3.png); }
  }
  .load-view__body__panel__icon_type_4 {
    right: 84px;
    .box {
      &::after { border-color: $theme-purple; }
      .frame {
        &::before,
        &::after { background-color: $theme-purple; }
      }
    }
    .icon { background-image: url(../images/load-view/wait/4.png); }
  }

  /*** poster ***/
  .load-view__body__poster {
    position: absolute;
    top: 0; left: calc(50% - 450px);
    width: 900px; height: 100%;

    .paint-ball-box {
      position: absolute;
      top: 0; left: 0;
      width: 100%; height: 100%;
      overflow: hidden;
    }
    .paint-ball {
      position: absolute;
      top: calc(50% - 30px); left: -60px;
      width: 60px; height: 60px;
      border-radius: 50%;
      background-color: #fff;

      div {
        position: absolute;
        top: 5px; left: 5px;
        width: calc(100% - 10px); height: calc(100% - 10px);
        border-radius: 50%;
        border: dashed 2px $theme-pink;
        box-sizing: border-box;
      }

      &::before,
      &::after {
        position: absolute;
        content: ""; display: block;
        width: calc(100% - 40px); height: 2px;
        top: calc(50% - 1px); left: 20px;
        background-color: $theme-pink;
      }
      &::before { transform: rotate(45deg); }
      &::after  { transform: rotate(-45deg); }
    }

    .poster {
      position: relative;
      float: left;
      width: 225px; height: 100%;
      transform: translateY(calc(-100% + -200px));
      perspective: 500px;
    
      .illust {
        position: absolute;
        top: calc(50% - 325px); left: 0;
        width: 225px; height: 650px;
        transform-origin: center bottom;
        opacity: 0;
        
        &::after {
          content: ""; display: block;
          position: absolute;
          top: 0; left: 0;
          width: 100%; height: 100%;
          background-size: 100% auto;
          background-repeat: no-repeat;
          background-position: center;
          transform-origin: center bottom;
        }
      }

      .ball {
        position: absolute;
        top: 0; left: 0;
        width: 100%; height: 100%;
        transform: translateY(calc(-50% + -25px));

        &::after {
          content: ""; display: block;
          position: absolute;
          top: calc(50% - 25px); left: calc(50% - 25px);
          width: 50px; height: 50px;
          border-radius: 50%;
          background-color: #fff;
        }
      }

      &::after {
        content: ""; display: block; position: absolute;
        left: -67.5px; bottom: -200px;
        width: 0; height: 0;
        border-top: solid 200px transparent;
        border-right: solid 180px transparent;
        border-left: solid 180px transparent;
      }
    }
    .poster:nth-child(1) {
      background-color: $theme-pink;
      &::after { border-top-color: $theme-pink; }
      .illust:after { background-image: url(../images/load-view/poster/1.png); }
    }
    .poster:nth-child(2) {
      background-color: $theme-light-purple;
      &::after { border-top-color: $theme-light-purple; }
      .illust:after { background-image: url(../images/load-view/poster/2.png); }
    }
    .poster:nth-child(3) {
      background-color: $theme-light-pink;
      &::after { border-top-color: $theme-light-pink; }
      .illust:after { background-image: url(../images/load-view/poster/3.png); }
    }
    .poster:nth-child(4) {
      background-color: $theme-purple;
      &::after { border-top-color: $theme-purple; }
      .illust:after { background-image: url(../images/load-view/poster/4.png); }
    }

    .illust {
      position: absolute;
      top: calc(50% - 650px); left: 0;
      width: 225px; height: 650px;
      background-size: 100% auto;
      background-repeat: no-repeat;
      background-position: center;
    }

    &::after { content: ""; display: block; clear: both; }
  }

  .load-view__body__info {
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;

    .allow {
      position: relative;
      width: 100%; height: 25%;
      transform: translateX(-100%);

      .sd {
        position: absolute;
        top: 20px; height: calc(100% - 40px);
        display: block;
        opacity: 0;
        transform-origin: center bottom;
      }
      .sd-1 { left: 10%; }
      .sd-2 { right: 10%; }

      .text {
        position: absolute;
        top: 30px;
        height: calc(100% - 60px);
        display: block;
        opacity: 0;
      }
      .text-1 { right: 10%; }
      .text-2 { left: 10%; }

      .line {
        position: absolute;
        top: 20px; left: 0;
        width: 100%; height: calc(100% - 40px);
        overflow: hidden;

        &::after {
          content: ""; display: block;
          position: absolute;
          bottom: 0; left: 0;
          transform: translate(calc(100% - 15px), calc(100% - 5px));
          width: calc(100% + 30px); height: 100%;
          background-color: #fff;
        }
      }

      .paint-ball {
        position: absolute;
        bottom: 20px; left: -60px;
        width: 60px; height: 60px;
        background-color: #fff;
        border-radius: 50%;

        div {
          position: absolute;
          top: 5px; left: 5px;
          width: calc(100% - 10px); height: calc(100% - 10px);
          border-radius: 50%;
          border: dashed 2px $theme-pink;
          box-sizing: border-box;
        }
        &::before,
        &::after {
          content: ""; display: block;
          position: absolute;
          left: 20px; top: calc(50% - 1px);
          width: calc(100% - 40px); height: 2px;
          background-color: $theme-pink;
        }
        &::before { transform: rotate(45deg); }
        &::after  { transform: rotate(-45deg); }
      }
    }
    .allow:nth-child(1) {
      background-color: $theme-pink;
    }
    .allow:nth-child(2) {
      background-color: $theme-light-purple;
    }
    .allow:nth-child(3) {
      background-color: $theme-light-pink;
    }
    .allow:nth-child(4) {
      background-color: $theme-purple;
    }
  }

  .load-view__body__close {
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;

    .curtain {
      width: 100%; height: 50%;
      background-color: #fff;
      overflow: hidden;

      &::after {
        content: ""; display: block;
        width: 100%; height: 100%;
        background-color: $theme-pink;
      }
    }
    .curtain:nth-child(1) { transform: translateY(-100%); }
    .curtain:nth-child(2) { transform: translateY(100%); }

    .message {
      position: absolute;
      top: calc(50% - 20px); left: 0;
      width: 100%; height: 40px;
      font-size: 30px;
      color: #fff;
      text-align: right;
      line-height: 40px;
      box-sizing: border-box;
      padding: 0 20px;
      opacity: 0;
    }

    &::before,
    &::after {
      content: ""; display: block;
      position: absolute; left: 0;
      width: 100%; height: 50%;
      background-color: $theme-light-pink;
      z-index: 1;
    }
    &::before { top: 0; transform: translateY(-100%); }
    &::after  { bottom: 0; transform: translateY(100%); }
  }

  /********************************************************************************************
   * animation
   ********************************************************************************************/
  /*** panel ***/
  .load-view__body__panel__icon { .box { animation: rotate360 3s linear 0s infinite; } }
  .load-view__body__panel__icon_type_1 {
    animation:
      fadein 0.8s ease 0s forwards,
      load-view__show-wait-icon 0.8s ease 0s forwards;
    .icon { animation: load-view__scale-wait-icon 1s ease 0s forwards; }
  }
  .load-view__body__panel__icon_type_2 {
    animation:
      fadein 0.8s ease 0.3s forwards,
      load-view__show-wait-icon 0.8s ease 0.3s forwards;
    .icon { animation: load-view__scale-wait-icon 1s ease 0.3s forwards; }
  }
  .load-view__body__panel__icon_type_3 {
    animation:
      fadein 0.8s ease 0.6s forwards,
      load-view__show-wait-icon 0.8s ease 0.6s forwards;
    .icon { animation: load-view__scale-wait-icon 1s ease 0.6s forwards; }
  }
  .load-view__body__panel__icon_type_4 {
    animation:
      fadein 0.8s ease 0.9s forwards,
      load-view__show-wait-icon 0.8s ease 0.9s forwards;
    .icon { animation: load-view__scale-wait-icon 1s ease 0.9s forwards; }
  }

  .load-view[data-state="start"] {
    /*** close ***/
    .load-view__body__close {
      .curtain:nth-child(1) {
        animation: load-view__show-curtain-1 0.5s ease 6s forwards;
        &::after { animation: load-view__show-curtain-inner-1 1.5s ease 6.2s forwards; }
      }
      .curtain:nth-child(2) {
        animation: load-view__show-curtain-2 0.5s ease 6s forwards;
        &::after { animation: load-view__show-curtain-inner-2 1.5s ease 6.2s forwards; }
      }
      .message { animation: load-view__show-message 5s ease-out 6.7s forwards; }

      &::before { animation: load-view__close-1 0.6s ease 7.2s forwards; }
      &::after  { animation: load-view__close-2 0.6s ease 7.2s forwards; }
    }

    /*** info ***/
    .load-view__body__info {
      .allow:nth-child(1) {
        animation: slide-right 0.4s ease 3.5s forwards;
        .sd {
          animation:
            fadein 0.1s ease 5.1s forwards,
            load-view__sway-sd 0.8s ease-in-out 5.1s alternate infinite;
        }
        .text {
          animation:
            fadein 0.1s ease 5.1s forwards,
            load-view__sway-illust 0.8s ease-in-out 5.1s alternate infinite;
        }
        .line::after {
          animation:
            load-view__show-line-1 0.7s ease 4s forwards,
            load-view__hidden-line-1 0.8s ease 4.7s forwards;
        }
        .paint-ball { animation: load-view__move-paint-ball-2 0.7s ease 4s forwards; }
      }
      .allow:nth-child(2) {
        animation: slide-right 0.4s ease 3.6s forwards;
        .text {
          animation:
            fadein 0.1s ease 5.2s forwards,
            load-view__sway-illust 0.8s ease-in-out 5.2s alternate infinite;
        }
        .sd {
          animation:
            fadein 0.1s ease 5.2s forwards,
            load-view__sway-sd 0.8s ease-in-out 5.2s alternate infinite;
        }
        .line::after {
          animation:
            load-view__show-line-2 0.7s ease 4.1s forwards,
            load-view__hidden-line-2 0.8s ease 4.8s forwards;
        }
        .paint-ball { animation: load-view__move-paint-ball-1 0.7s ease 4.1s forwards; }
      }
      .allow:nth-child(3) {
        animation: slide-right 0.4s ease 3.7s forwards;
        .text {
          animation:
            fadein 0.1s ease 5.3s forwards,
            load-view__sway-illust 0.8s ease-in-out 5.3s alternate infinite;
        }
        .sd {
          animation:
            fadein 0.1s ease 5.3s forwards,
            load-view__sway-sd 0.8s ease-in-out 5.3s alternate infinite;
        }
        .line::after {
          animation:
            load-view__show-line-1 0.7s ease 4.2s forwards,
            load-view__hidden-line-1 0.8s ease 4.9s forwards;
        }
        .paint-ball { animation: load-view__move-paint-ball-2 0.7s ease 4.2s forwards; }
      }
      .allow:nth-child(4) {
        animation: slide-right 0.4s ease 3.8s forwards;
        .text {
          animation:
            fadein 0.1s ease 5.4s forwards,
            load-view__sway-illust 0.8s ease-in-out 5.4s alternate infinite;
        }
        .sd {
          animation:
            fadein 0.1s ease 5.4s forwards,
            load-view__sway-sd 0.8s ease-in-out 5.4s alternate infinite;
        }
        .line::after {
          animation:
            load-view__show-line-2 0.7s ease 4.3s forwards,
            load-view__hidden-line-2 0.8s ease 5s forwards;
        }
        .paint-ball { animation: load-view__move-paint-ball-1 0.7s ease 4.3s forwards; }
      }
    }

    /*** poster ***/
    .load-view__body__poster {
      .paint-ball { animation: load-view__move-paint-ball 1s ease 2.6s forwards; }

      .poster:nth-child(1) {
        animation: load-view__show-poster 0.5s ease 0s forwards;
        .ball {
          animation: load-view__fall-ball 0.6s ease 0.6s forwards;
          &::after { animation: load-view__scale-ball 0.7s ease 1.2s forwards; }
        }
        .illust {
          animation:
            fadein 0.1s ease 1.45s forwards,
            load-view__rotate-illust 0.7s ease 2.6s forwards,
            fadeout 0.35s ease 2.95s forwards;
          &::after { animation: load-view__sway-illust 0.8s ease-in-out 1.2s alternate infinite; }
        }
      }
      .poster:nth-child(2) {
        animation: load-view__show-poster 0.5s ease 0.2s forwards;
        .ball {
          animation: load-view__fall-ball 0.6s ease 0.8s forwards;
          &::after { animation: load-view__scale-ball 0.7s ease 1.4s forwards; }
        }
        .illust {
          animation:
            fadein 0.1s ease 1.65s forwards,
            load-view__rotate-illust 0.7s ease 2.8s forwards,
            fadeout 0.35s ease 3.15s forwards;
          &::after { animation: load-view__sway-illust 0.8s ease-in-out 1.2s alternate infinite; }
        }
      }
      .poster:nth-child(3) {
        animation: load-view__show-poster 0.5s ease 0.4s forwards;
        .ball {
          animation: load-view__fall-ball 0.6s ease 1s forwards;
          &::after { animation: load-view__scale-ball 0.7s ease 1.6s forwards; }
        }
        .illust {
          animation:
            fadein 0.1s ease 1.85s forwards,
            load-view__rotate-illust 0.7s ease 3s forwards,
            fadeout 0.35s ease 3.35s forwards;
          &::after { animation: load-view__sway-illust 0.8s ease-in-out 1.2s alternate infinite; }
        }
      }
      .poster:nth-child(4) {
        animation: load-view__show-poster 0.5s ease 0.6s forwards;
        .ball {
          animation: load-view__fall-ball 0.6s ease 1.2s forwards;
          &::after { animation: load-view__scale-ball 0.7s ease 1.8s forwards; }
        }
        .illust {
          animation:
            fadein 0.1s ease 2.1s forwards,
            load-view__rotate-illust 0.7s ease 3.2s forwards,
            fadeout 0.35s ease 3.55s forwards;
          &::after { animation: load-view__sway-illust 0.8s ease-in-out 1.2s alternate infinite; }
        }
      }
    }
  }
}
