/*
Theme Name: Keepy
Theme URI: https://keepy.online
Author: Theme Author
Author URI: https://keepy.online
Description: 法人向け配送・保管サービス Keepy のWordPressテーマ
Version: 1.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: keepy
*/

/* ========================================
   common
======================================== */
.top-page-container {
  margin: 80px auto 0;
}

@media (max-width: 768px) {
  .top-page-container {
    margin: 57px auto 0;
  }
}

@media (max-width: 480px) {
  .top-page-container {
    margin: 53px auto 0;
  }
}

/* ========================================
   メインビジュアル
======================================== */
.mv-section {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: calc(100vh - 80px);
  overflow: hidden;
  background: var(--white);

  .mv-background {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 0;

    .mv-bg-circle-1 {
      position: absolute;
      left: -130px;
      top: 618px;
      width: 514px;
      height: 514px;
      background: rgba(123, 168, 133, 0.2);
      border-radius: 50%;
    }

    .mv-bg-circle-2 {
      position: absolute;
      left: calc(100% - 600px);
      top: -44px;
      width: 727px;
      height: 723px;
      background: rgba(80, 143, 93, 0.1);
      border-radius: 50%;
    }
  }

  .mv-container {
    max-width: 1280px;
    width: 90%;
    margin: 0 auto 80px;
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    gap: 80px;

    .mv-content {
      flex: 1;
      max-width: 540px;

      .mv-badge {
        display: inline-block;
        border: 2px solid var(--primary-color);
        border-radius: 9999px;
        padding: 6px 28px;
        font-size: 14px;
        font-weight: 500;
        color: var(--primary-color);
        letter-spacing: 1px;
        margin-bottom: 30px;
        white-space: nowrap;
      }

      .mv-title {
        font-size: 60px;
        font-weight: bold;
        line-height: 1.3;
        color: var(--text-dark);
        margin-bottom: 45px;
        white-space: nowrap;

        .mv-title-brand {
          display: block;
          font-size: 65px;
          font-weight: 900;
          color: var(--primary-color);
          margin-top: 10px;
        }
      }

      .mv-buttons {
        display: flex;
        gap: 16px;
        flex-wrap: wrap;

        .btn-primary {
          margin: 0;
        }
      }
    }

    .mv-image {
      flex: 1;
      max-width: 616px;

      img {
        width: 100%;
        height: auto;
        object-fit: contain;
      }
    }
  }
}

@media (max-width: 1024px) {
  .mv-section {

    .mv-container {
      .mv-content {
        max-width: 50%;

        .mv-title {
          font-size: 38px;

          .mv-title-brand {
            font-size: 52px;
          }
        }
      }
    }
  }
}

@media (max-width: 768px) {
  .mv-section {
    min-height: calc(100vh - 100px);
    align-items: baseline;

    .mv-background {
      .mv-bg-circle-2 {
        left: calc(100% - 230px);
        top: -44px;
        width: 400px;
        height: 400px;
      }

      .mv-bg-circle-1 {
        left: -150px;
        top: 370px;
        width: 250px;
        height: 250px;
      }
    }

    .mv-container {
      flex-direction: column-reverse;
      gap: 10px;
      margin: 40px auto 0;

      .mv-content {
        max-width: 100%;

        .mv-badge {
          font-size: 12px;
          padding: 5px 20px;
          margin-bottom: 20px;
          white-space: pre-wrap;
        }

        .mv-title {
          font-size: 36px;
          margin-bottom: 25px;

          .mv-title-brand {
            font-size: 40px;
          }
        }

        .mv-buttons {
          flex-direction: column;
          width: 100%;
        }
      }

      .mv-image {
        max-width: 100%;

        img {
          max-height: 30vh;
        }
      }
    }
  }
}

@media (max-width: 480px) {
  .mv-section {
    .mv-container {
      .mv-content {
        .mv-title {
          font-size: 28px;

          .mv-title-brand {
            font-size: 32px;
          }
        }
      }
    }
  }
}

/* ========================================
   ビジネスセクション
======================================== */
.business-section {
  background: var(--background-gray);
  padding: 120px 0 100px;

  .business-container {
    max-width: 1000px;
    margin: 0 auto;

    .feature-grid {
      display: flex;
      flex-direction: column;
      gap: 30px;

      .feature-card {
        background: var(--white);
        border: 1px solid var(--gray-light);
        border-radius: 20px;
        padding: 40px;
        box-shadow: 0 10px 15px rgba(0, 0, 0, 0.1), 0 4px 6px rgba(0, 0, 0, 0.1);
        display: flex;
        align-items: center;
        gap: 40px;

        .feature-icon {
          width: 158px;
          height: 158px;
          background: rgba(80, 143, 93, 0.08);
          border-radius: 50%;
          flex-shrink: 0;
          display: flex;
          align-items: center;
          justify-content: center;

          img {
            width: auto;
            height: auto;
            max-width: 70%;
            max-height: 70%;
          }
        }

        .feature-content {
          flex: 1;

          .feature-title {
            font-size: 24px;
            font-weight: bold;
            color: var(--text-dark);
            margin: 0 0 12px;
            padding: 0 12px;
            display: flex;
            align-items: center;
            gap: 17px;

            &.bg-marker-red {
              position: relative;
              width: max-content;
              z-index: 1;

              &::before {
                content: "";
                position: absolute;
                left: 0;
                bottom: 0;
                width: 100%;
                height: 0.6em;
                background-color: #fde2d9;
                border-radius: 999px;
                z-index: -1;
              }
            }

            .feature-number {
              font-size: 32px;
              font-weight: 600;
              color: var(--text-dark);
              position: relative;
              display: inline-block;
            }
          }

          .feature-description {
            font-size: 16px;
            line-height: 1.6;
            color: var(--text-medium);
          }
        }
      }
    }
  }
}

@media (max-width: 1024px) {
  .business-section {
    .business-container {
      .feature-grid {
        .feature-card {
          padding: 30px;
          gap: 30px;

          .feature-icon {
            width: 120px;
            height: 120px;
          }

          .feature-content {
            .feature-title {
              font-size: 20px;

              .feature-number {
                font-size: 32px;
              }
            }
          }
        }
      }
    }
  }
}

@media (max-width: 768px) {
  .business-section {
    padding: 60px 0 80px;

    .business-container {
      .feature-grid {
        .feature-card {
          flex-direction: column;
          padding: 24px;
          gap: 24px;
          text-align: center;

          .feature-icon {
            width: 100px;
            height: 100px;
          }

          .feature-content {
            .feature-title {
              font-size: 18px;

              .feature-number {
                font-size: 28px;
              }
            }

            .feature-description {
              font-size: 14px;
            }
          }
        }
      }
    }
  }
}

@media (max-width: 480px) {
  .business-section {
    .business-container {
      .feature-grid {
        .feature-card {
          .feature-content {
            .feature-title {
              font-size: 16px;

              .feature-number {
                font-size: 24px;
              }
            }
          }
        }
      }
    }
  }
}

/* ========================================
   料金プラン
======================================== */
.pricing-section {
  background: var(--white);
  padding: 120px 0 100px;
  position: relative;
  background-color: var(--primary-light);

  .pricing-container {
    max-width: 1100px;
    margin: 0 auto;

    .pricing-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
      gap: 30px;
      margin-top: 60px;

      .pricing-card {
        background: var(--white);
        border: 2px solid var(--gray-light);
        border-radius: 32px;
        padding: 30px 25px;
        box-shadow: 0 10px 15px rgba(0, 0, 0, 0.1), 0 4px 6px rgba(0, 0, 0, 0.1);
        position: relative;

        &.recommended {
          border: 4px solid var(--primary-color);
        }

        .recommended-badge {
          padding: 7px 23px;
          background-color: var(--primary-color);
          color: var(--white);
          border-radius: 9999px;
          text-align: center;
          font-size: 14px;
          font-weight: bold;
          position: absolute;
          top: -22px;
          left: 50%;
          transform: translateX(-50%);
        }

        .pricing-category {
          font-size: 14px;
          font-weight: 500;
          color: var(--text-medium);
          text-align: center;
          margin-bottom: 2px;
        }

        .pricing-name {
          font-size: 30px;
          font-weight: bold;
          color: var(--gray-dark);
          text-align: center;
          margin-bottom: 12px;
        }

        .pricing-price {
          text-align: center;
          margin-bottom: 27px;

          .pricing-amount {
            font-size: 60px;
            font-weight: bold;
            color: var(--primary-color);
            line-height: 1;
          }

          .pricing-unit {
            font-size: 16px;
            color: var(--text-medium);
            margin-left: 8px;
          }
        }

        .pricing-features {
          border-bottom: 2px solid #c5c5c5;
          padding-bottom: 10px;
          margin-bottom: 25px;

          .pricing-feature-item {
            display: flex;
            align-items: flex-start;
            gap: 16px;
            margin-bottom: 16px;

            .pricing-feature-icon {
              width: 25px;
              height: 25px;
              background: var(--primary-color);
              border-radius: 50%;
              flex-shrink: 0;
              display: flex;
              align-items: center;
              justify-content: center;
              margin-top: 7px;

              svg {
                width: 16px;
                height: 16px;
                stroke: var(--white);
              }
            }

            .pricing-feature-label {
              font-size: 16px;
              font-weight: bold;
              color: var(--gray-dark);
              margin-bottom: 4px;
            }

            .pricing-feature-value {
              font-size: 18px;
              color: var(--text-light);
            }
          }
        }

        .pricing-badge {
          background-color: #93CC9926;
          border-radius: 30px;
          padding: 12px;
          text-align: center;
          margin-bottom: 10px;

          .pricing-badge-text {
            font-size: 14px;
            font-weight: bold;
            color: var(--gray-dark);
            line-height: 1.4;
          }
        }

        .pricing-image {
          display: flex;
          justify-content: center;
          margin: 0 auto 10px;

          img {
            width: 100px;
            height: auto;
          }
        }

        .pricing-description {
          font-size: 14px;
          line-height: 1.6;
          color: var(--text-light);
          text-align: center;
          margin-bottom: 20px;
        }
      }
    }

    .pricing-note {
      font-size: 13px;
      color: var(--text-medium);
      text-align: right;
      margin-top: 20px;
    }
  }
}

@media (max-width: 1024px) {
  .pricing-section {
    .pricing-container {
      .pricing-grid {
        grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
        gap: 30px;
      }
    }
  }
}

@media (max-width: 768px) {
  .pricing-section {
    padding: 60px 0 80px;

    .pricing-container {
      .pricing-grid {
        grid-template-columns: 1fr;
        gap: 35px;
        width: 90%;
        margin: 0 auto;

        .pricing-card {
          padding: 40px 16px;

          .pricing-price {
            .pricing-amount {
              font-size: 48px;
            }
          }
        }
      }
    }
  }
}

@media (max-width: 480px) {
  .pricing-section {
    .pricing-container {
      .pricing-grid {
        .pricing-card {
          .pricing-name {
            font-size: 24px;
          }

          .pricing-price {
            .pricing-amount {
              font-size: 40px;
            }
          }
        }
      }
    }
  }
}

/* ========================================
   オプションサービス
======================================== */
.option-section {
  background: var(--background-gray);
  padding: 120px 0 100px;

  .option-container {
    max-width: 1000px;
    margin: 0 auto;

    .option-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
      gap: 15px;
      margin-top: 60px;
      padding: 40px;
      border-radius: 20px;
      background-color: var(--primary-color);

      .option-card {
        background: var(--white);
        border: 3px solid var(--primary-color);
        border-radius: 20px;
        padding: 40px 26px;
        text-align: center;

        .option-icon {
          display: flex;
          justify-content: center;
          margin: 0 auto 20px;

          img {
            object-fit: contain;
            height: 70px;
            width: 100px;
          }
        }

        .option-title {
          font-size: 18px;
          font-weight: bold;
          color: var(--text-dark);
          margin-bottom: 12px;
        }

        .option-price {
          font-size: 20px;
          font-weight: bold;
          color: var(--primary-color);
          margin-bottom: 12px;
          line-height: normal;
        }

        .option-description {
          font-size: 12px;
          line-height: 1.5;
          color: var(--text-medium);
        }
      }
    }
  }
}

@media (max-width: 768px) {
  .option-section {
    padding: 60px 0 80px;

    .option-container {
      .option-grid {
        grid-template-columns: 1fr;
        gap: 20px;
        width: 90%;
        margin: 0 auto;
        padding: 20px;

        .option-card {
          padding: 20px;

          .option-icon {
            margin: 0 auto 10px;

            img {
              height: 60px;
            }
          }
        }
      }
    }
  }
}

/* ========================================
   ご利用の流れ
======================================== */
.flow-section {
  background: var(--background-gray);
  padding: 120px 0 100px;

  .flow-container {
    max-width: 1000px;
    margin: 0 auto;

    .flow-timeline {
      position: relative;
      margin-top: 60px;
    }
  }
}

@media (max-width: 768px) {
  .flow-section {
    padding: 50px 0;

    .flow-container {
      .flow-timeline {
        img {
          display: block;
          width: 90%;
          margin: 0 auto;
        }

        &::before {
          left: 20px;
        }
      }
    }
  }
}

/* ========================================
   課金体系とルール
======================================== */
.rule-section {
  background: var(--background-gray);
  padding: 120px 0 100px;

  .rule-container {
    max-width: 1000px;
    margin: 0 auto;

    .rule-flex {
      display: flex;
      justify-content: center;
      align-items: center;
      gap: 20px;

      .rule-image {
        width: 170px;

        img {
          width: 100%;
        }
      }

      .rule-content {
        display: flex;
        flex-direction: column;
        gap: 32px;

        .rule-box {
          background: #fff;
          border-radius: 8px;
          border: 2px solid #e2e2e2;
          padding: 1.5rem;

          .rule-title {
            color: #424641;
            font-size: 1.25rem;
            font-weight: bold;
            border-bottom: 2px solid #e2e2e2;
            padding-bottom: 1rem;
            margin-bottom: 1.5rem;
          }

          .rule-list {
            display: flex;
            flex-direction: column;
            gap: 24px;

            .rule-item {
              display: flex;
              align-items: flex-start;
              gap: 12px;

              .rule-icon {
                flex-shrink: 0;
                margin-top: 4px;

                .rule-check {
                  width: 24px;
                  height: 24px;
                  border-radius: 50%;
                  border: 2px solid #93CC99;
                  display: flex;
                  align-items: center;
                  justify-content: center;
                }
              }

              .rule-item-title {
                color: #424641;
                font-size: 1.125rem;
                font-weight: bold;
                margin-bottom: 0.5rem;
              }

              .rule-item-desc {
                color: #364153;
                font-size: 1rem;
              }
            }
          }

          .rule-free-list {
            display: flex;
            align-items: flex-start;
            gap: 12px;

            .rule-icon {
              flex-shrink: 0;
              margin-top: 4px;

              .rule-check {
                width: 24px;
                height: 24px;
                border-radius: 50%;
                border: 2px solid #93CC99;
                display: flex;
                align-items: center;
                justify-content: center;
              }
            }

            .rule-free-desc {
              color: #424641;
              font-size: 1rem;
            }
          }
        }
      }
    }
  }
}

@media (max-width: 768px) {
  .rule-section {
    padding: 70px 0;

    .rule-container {
      .rule-flex {
        flex-direction: column;
        gap: 0;

        .rule-image {
          margin-bottom: 24px;
          width: 100%;

          img {
            width: 100%;
          }
        }
      }
    }
  }
}

/* ========================================
   お問い合わせ
======================================== */
.contact-section {
  background: #ebebeb;
  padding: 120px 0;

  .contact-container {
    max-width: 800px;
    margin: 0 auto;
    text-align: center;

    .contact-cards {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
      gap: 24px;
      margin: 40px 0 60px;

      .contact-card {
        background: var(--white);
        border: 2px solid var(--primary-color);
        border-radius: 16px;
        padding: 30px 20px;
        text-align: center;

        .contact-icon {
          width: 50px;
          height: 50px;
          margin: 0 auto 16px;

          img {
            width: 100%;
            height: 100%;
            object-fit: contain;
            display: block;
          }
        }

        .contact-card-title {
          font-size: 16px;
          font-weight: bold;
          color: var(--text-dark);
          margin-bottom: 8px;
        }

        .contact-card-text {
          font-size: 14px;
          color: var(--text-medium);
        }
      }
    }
  }
}

@media (max-width: 768px) {
  .contact-section {
    padding: 70px 0;

    .contact-container {
      .contact-cards {
        grid-template-columns: 1fr;
        gap: 16px;
      }
    }
  }
}