/* ==========================================================================
   Hero
   ========================================================================== */
.hero {
    width: 100%;
}

.hero__inner {
    display: flex;
    align-items: center;
    gap: clamp(1.5rem, 3.333vw, 2.5rem);
    max-width: 80rem;
    margin: 0 auto;
    padding: clamp(8rem, 15.333vw, 11.5rem) clamp(4rem, 16.667vw, 12.5rem) clamp(2.5rem, 5.333vw, 4rem);
}

.hero__left {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    flex-shrink: 0;
    width: clamp(18rem, 34.333vw, 25.75rem);
}

.hero__heading {
    font-family: 'Zen Maru Gothic', sans-serif;
    font-weight: 700;
    font-size: clamp(1.75rem, 3.75vw, 2.8125rem);
    line-height: 1.6;
    color: #333851;
    letter-spacing: 0.1em;
}

.hero__heading--green {
    color: #468f03;
}

.hero__description {
    font-family: 'Zen Maru Gothic', sans-serif;
    font-weight: 500;
    font-size: clamp(1rem, 1.5vw, 1.25rem);
    line-height: 1.7;
    color: #000000;
    letter-spacing: 0.05em;
}

.hero__points {
    display: flex;
    gap: 1rem;
    align-items: center;
}

.hero__point {
    display: flex;
    align-items: center;
    justify-content: center;
    width: clamp(6rem, 10vw, 7.5rem);
    height: clamp(2.5rem, 4.167vw, 3.125rem);
    border-radius: 1.875rem;
    background-color: #468f03;
    box-shadow: 3px 3px 0px 0px #7dbd43;
    font-family: 'Zen Maru Gothic', sans-serif;
    font-weight: 700;
    font-size: clamp(1rem, 2vw, 1.5rem);
    line-height: 1.4;
    color: #fdd11c;
    text-align: center;
}

.hero__imgs {
    flex: 1;
}

.hero__imgs img {
    width: 100%;
    height: auto;
    display: block;
}

/* ==========================================================================
   Trouble / Worries
   ========================================================================== */
.trouble {
    position: relative;
    width: 100%;
    padding: clamp(3rem, 8vw, 6rem) clamp(2rem, 13.333vw, 10rem) clamp(2rem, 4vw, 3rem);
}

.trouble__cloud {
    position: absolute;
    top: 0;
    left: clamp(-12rem, -18vw, -15rem);
    width: clamp(16rem, 28vw, 22rem);
    height: auto;
    z-index: 0;
    pointer-events: none;
}

.trouble__cloud-right {
    position: absolute;
    top: clamp(4rem, 8vw, 7rem);
    right: clamp(-12rem, -18vw, -15rem);
    width: clamp(16rem, 28vw, 22rem);
    height: auto;
    z-index: 0;
    pointer-events: none;
}

.trouble__sun {
    position: absolute;
    bottom: clamp(3rem, 5vw, 4.5rem);
    right: clamp(0.25rem, 0.5vw, 0.5rem);
    width: clamp(3rem, 5vw, 4rem);
    height: auto;
    z-index: 1;
    pointer-events: none;
}

.trouble__mountain {
    position: absolute;
    bottom: 0;
    right: clamp(-4rem, -7vw, -6rem);
    width: clamp(12rem, 20vw, 16rem);
    height: auto;
    z-index: 0;
    pointer-events: none;
}

.trouble__inner {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: clamp(2rem, 4.667vw, 3.5rem);
    max-width: 55rem;
    margin: 0 auto;
}

.trouble__heading {
    font-family: 'Zen Maru Gothic', sans-serif;
    font-weight: 700;
    font-size: clamp(1.5rem, 3vw, 2.25rem);
    line-height: 1.4;
    color: #333851;
    text-align: center;
    letter-spacing: 0.1em;
}

.trouble__heading--green {
    color: #468f03;
}

.trouble__cards {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: clamp(2rem, 6.667vw, 5rem);
    width: 100%;
}

.trouble__card {
    position: relative;
}

.trouble__card-img {
    width: 100%;
    aspect-ratio: 400 / 180;
    overflow: hidden;
    border-radius: 1.25rem 1.25rem 0 0;
}

.trouble__card-img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.trouble__card-body {
    background-image: url('../images/consul_card_bg_1x.webp');
    background-image: image-set(
        url('../images/consul_card_bg_1x.webp') 1x,
        url('../images/consul_card_bg_2x.webp') 2x
    );
    background-size: cover;
    background-position: center;
    border-radius: 0 0 1.25rem 1.25rem;
    padding: 2rem;
    padding-top: calc(1.5625rem + 2rem);
    position: relative;
}

.trouble__card-label {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    position: absolute;
    top: -1.5625rem;
    left: 2rem;
    right: 2rem;
    width: fit-content;
    padding: 0.5rem 2rem;
    min-width: min(15.3125rem, calc(100% - 4rem));
    height: 3.125rem;
    background-color: #855e3e;
    border-radius: 2rem;
    font-family: 'Zen Maru Gothic', sans-serif;
    font-weight: 700;
    font-size: clamp(1rem, 2vw, 1.5rem);
    color: #ffffff;
    text-align: center;
    letter-spacing: 0.05em;
    box-shadow: 2px 2px 0 0 #bfbfbf;
    z-index: 1;
}

.trouble__card-list {
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 1rem;
    font-family: 'Zen Maru Gothic', sans-serif;
    font-weight: 500;
    font-size: 1rem;
    line-height: 1.7;
    color: #575757;
}

.trouble__card-list li::before {
    content: '・';
}

.trouble__card-etc {
    font-family: 'Zen Maru Gothic', sans-serif;
    font-weight: 500;
    font-size: 1rem;
    line-height: 1.7;
    color: #575757;
    text-align: right;
    margin-top: 0.25rem;
}

/* ==========================================================================
   Consultation
   ========================================================================== */
.consultation {
    width: 100%;
    padding: clamp(2rem, 4vw, 3rem) clamp(2rem, 10vw, 7.5rem);
}

.consultation__inner {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: clamp(2rem, 4.667vw, 3.5rem);
    max-width: 55rem;
    margin: 0 auto;
}

.consultation__heading {
    font-family: 'Zen Maru Gothic', sans-serif;
    font-weight: 700;
    font-size: clamp(1.5rem, 3vw, 2.25rem);
    line-height: 1.4;
    color: #333851;
    text-align: center;
    letter-spacing: 0.1em;
}

.consultation__heading--green {
    color: #6fa63a;
}

.consultation__content {
    display: flex;
    align-items: center;
    gap: clamp(2rem, 4.667vw, 3.5rem);
    width: 100%;
}

.consultation__illustration {
    flex: 1;
    min-width: 0;
}

.consultation__illustration img {
    width: 100%;
    height: auto;
}

.consultation__badges {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    flex-shrink: 0;
    width: clamp(14rem, 24.167vw, 18rem);
}

.consultation__badge {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 3.25rem;
    background-color: #ffcd16;
    border-radius: 1.25rem;
    font-family: 'Noto Sans JP', sans-serif;
    font-weight: 700;
    font-size: clamp(1.125rem, 2.167vw, 1.625rem);
    line-height: 1.4;
    color: #333851;
    text-align: center;
    letter-spacing: 0.15em;
}

/* ==========================================================================
   Methods (様々な相談方法)
   ========================================================================== */
.methods {
    position: relative;
    width: 100%;
    padding: clamp(2rem, 3.2vw, 3rem) clamp(2rem, 10.667vw, 10rem);
}

.methods__cloud {
    position: absolute;
    top: 0;
    right: clamp(-6rem, -10vw, -8rem);
    width: clamp(16rem, 28vw, 22rem);
    height: auto;
    z-index: 0;
    pointer-events: none;
}

.methods__inner {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: clamp(2rem, 3.733vw, 3.5rem);
    max-width: 55rem;
    margin: 0 auto;
}

.methods__heading {
    font-family: 'Zen Maru Gothic', sans-serif;
    font-weight: 700;
    font-size: clamp(1.5rem, 3vw, 2.25rem);
    line-height: 1.4;
    color: #333851;
    text-align: center;
    letter-spacing: 0.1em;
}

.methods__heading--green {
    color: #468f02;
}

.methods__cards {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: clamp(1.5rem, 3.333vw, 2.5rem);
    width: 100%;
}

/* Methods Decorations
   ========================================================================== */
.methods__path {
    position: absolute;
    top: 5%;
    left: 50%;
    transform: translateX(-50%);
    width: clamp(14rem, 30vw, 25rem);
    height: 90%;
    object-fit: contain;
    z-index: 0;
    pointer-events: none;
}

.methods__footprint {
    position: absolute;
    width: clamp(1.125rem, 1.875vw, 1.625rem);
    height: auto;
    z-index: 2;
    pointer-events: none;
}

.methods__footprint--1 {
    top: 19%;
    left: 57%;
}

.methods__footprint--2 {
    top: 22%;
    left: 51%;
}

.methods__leaf {
    position: absolute;
    top: 47%;
    left: 47%;
    width: clamp(0.75rem, 1.25vw, 1.125rem);
    height: auto;
    z-index: 2;
    pointer-events: none;
}

.methods__leaf8 {
    position: absolute;
    width: clamp(0.75rem, 1.25vw, 1.125rem);
    height: auto;
    z-index: 2;
    pointer-events: none;
}

.methods__leaf8--1 {
    top: 73%;
    left: 25%;
}

.methods__leaf8--2 {
    top: 71%;
    left: 35%;
}

/* Methods Cards
   ========================================================================== */
.methods__card {
    position: relative;
    z-index: 1;
    border-radius: clamp(1.25rem, 2.333vw, 2.1875rem);
    overflow: hidden;
    padding: clamp(0.75rem, 1.067vw, 1rem);
    width: clamp(70%, 80%, 85%);
}

.methods__card--left {
    align-self: flex-start;
}

.methods__card--right {
    align-self: flex-end;
}

.methods__card--has-bird {
    overflow: visible;
}

.methods__card--has-bird .methods__card-bg {
    border-radius: inherit;
    overflow: hidden;
}

.methods__card--has-bird .methods__card-content {
    position: relative;
    z-index: 1;
}

.methods__bird {
    position: absolute;
    top: clamp(-0.5rem, -0.5vw, -0.75rem);
    right: clamp(6rem, 12vw, 10rem);
    width: clamp(2rem, 3.5vw, 3rem);
    height: auto;
    z-index: 2;
}

.methods__card--has-trees {
    overflow: visible;
}

.methods__card--has-trees .methods__card-bg {
    border-radius: inherit;
    overflow: hidden;
}

.methods__trees {
    position: absolute;
    top: 50%;
    right: calc(-20% - clamp(2.5rem, 4.5vw, 4rem));
    transform: translateY(-50%);
    width: clamp(5rem, 9vw, 8rem);
    height: auto;
    z-index: 2;
}

.methods__card-bg {
    position: absolute;
    inset: 0;
    z-index: 0;
}

.methods__card-bg img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.methods__card-content {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    gap: clamp(0.75rem, 1.6vw, 1.5rem);
}

.methods__card-img {
    flex-shrink: 0;
    width: clamp(5rem, 9.6vw, 9rem);
    height: clamp(5rem, 9.6vw, 9rem);
    border-radius: clamp(0.75rem, 1.667vw, 1.5625rem);
    overflow: hidden;
}

.methods__card-img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.methods__card-text {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    flex: 1;
    min-width: 0;
}

.methods__card-title {
    font-family: 'Noto Sans JP', sans-serif;
    font-weight: 700;
    font-size: clamp(1rem, 1.6vw, 1.5rem);
    line-height: 1.4;
    color: #575757;
}

.methods__card-line {
    border: none;
    border-top: 1px dashed #c0c0c0;
    width: 100%;
}

.methods__card-desc {
    font-family: 'Noto Sans JP', sans-serif;
    font-weight: 500;
    font-size: clamp(1rem, 1.2vw, 1.125rem);
    line-height: 1.4;
    color: #575757;
}

/* ==========================================================================
   Info (開所時間・閉所日)
   ========================================================================== */
.info {
    width: 100%;
    padding: clamp(2rem, 3.2vw, 3rem) clamp(2rem, 8vw, 7.5rem);
}

.info__inner {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: clamp(2rem, 3.733vw, 3.5rem);
    max-width: 60rem;
    margin: 0 auto;
}

.info__heading {
    font-family: 'Zen Maru Gothic', sans-serif;
    font-weight: 700;
    font-size: clamp(1.5rem, 3vw, 2.25rem);
    line-height: 1.4;
    color: #333851;
    text-align: center;
    letter-spacing: 0.1em;
}

.info__heading--green {
    color: #468f02;
}

.info__content {
    display: flex;
    align-items: center;
    gap: clamp(1.5rem, 2.667vw, 2.5rem);
    width: 100%;
}

.info__photo {
    position: relative;
    flex-shrink: 0;
    width: clamp(10rem, 19.533vw, 18.3125rem);
    height: clamp(8rem, 15.333vw, 14.375rem);
    border-radius: clamp(1.25rem, 2.667vw, 2.5rem);
    overflow: visible;
}

.info__photo > img:first-child {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: inherit;
}

.info__bird {
    position: absolute;
    top: clamp(-2rem, -2.667vw, -2.5rem);
    right: clamp(0.5rem, 0.667vw, 0.75rem);
    width: clamp(3rem, 5vw, 4.5rem);
    height: auto;
}

.info__details {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.5rem;
}

.info__table-img {
    width: 100%;
}

.info__table-img img {
    width: 100%;
    height: auto;
}

.info__holiday {
    font-family: 'Noto Sans JP', sans-serif;
    font-weight: 500;
    font-size: clamp(1rem, 1.6vw, 1.5rem);
    line-height: 1.7;
    color: #000000;
    text-align: center;
}

.info__notes {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    text-align: center;
    font-family: 'Noto Sans JP', sans-serif;
    font-weight: 700;
    font-size: clamp(1rem, 1.2vw, 1.125rem);
    line-height: 1.7;
    color: #575757;
}

/* ==========================================================================
   CTA
   ========================================================================== */
.cta {
    width: 100%;
    padding: clamp(2rem, 3.2vw, 3rem) clamp(2rem, 5.333vw, 5rem);
}

.cta__inner {
    position: relative;
    max-width: 65rem;
    margin: 0 auto;
    border-radius: 1.875rem;
    overflow: hidden;
    padding: clamp(1.5rem, 2.667vw, 2rem);
}

.cta__bg {
    position: absolute;
    inset: 0;
    z-index: 0;
}

.cta__bg img {
    width: 400%;
    height: 100%;
    object-fit: cover;
    margin-left: -100%;
}

.cta__content {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: clamp(1.5rem, 2.667vw, 2.5rem);
}

.cta__text {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

.cta__heading {
    font-family: 'Noto Sans JP', sans-serif;
    font-weight: 700;
    font-size: clamp(1.5rem, 2.667vw, 2.5rem);
    line-height: 1.4;
    color: #ffffff;
    text-align: center;
    letter-spacing: 0.25rem;
}

.cta__subtext {
    font-family: 'Noto Sans JP', sans-serif;
    font-weight: 500;
    font-size: clamp(1rem, 1.333vw, 1.25rem);
    line-height: 1.4;
    color: #ffffff;
    text-align: center;
}

.cta__subtext strong {
    font-weight: 700;
}

.cta__buttons {
    display: flex;
    flex-wrap: wrap;
    gap: clamp(0.75rem, 1.333vw, 1.25rem);
    width: 100%;
}

.cta__btn {
    flex: 1 1 auto;
    min-width: clamp(8rem, 15vw, 12rem);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    height: clamp(3rem, 4.667vw, 4.375rem);
    border-radius: 1.25rem;
    border: none;
    cursor: pointer;
    font-family: 'Noto Sans JP', sans-serif;
    font-weight: 700;
    font-size: clamp(1rem, 1.733vw, 1.625rem);
    line-height: 1.7;
    text-decoration: none;
}

.cta__btn--phone,
.cta__btn--mobile {
    background-color: #ffffff;
    color: #575757;
}

.cta__btn--phone img {
    width: clamp(1rem, 1.867vw, 1.75rem);
    height: clamp(1rem, 1.867vw, 1.75rem);
}

.cta__btn--mobile img {
    width: clamp(0.75rem, 1.4vw, 1.3rem);
    height: auto;
}

.cta__btn--email {
    background-color: #ffcd16;
    color: #468f02;
}

.cta__btn--email img {
    width: clamp(1.25rem, 2.667vw, 2.5rem);
    height: clamp(0.875rem, 1.867vw, 1.75rem);
}

.cta__btn--line {
    background-color: #ffffff;
    color: #575757;
    letter-spacing: 0.15em;
}

/* ==========================================================================
   Message (トモロウくん)
   ========================================================================== */
.message {
    width: 100%;
    padding: clamp(2rem, 4vw, 3rem) clamp(2rem, 10vw, 7.5rem);
}

.message__inner {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: clamp(1rem, 2vw, 1.5rem);
    max-width: 55rem;
    margin: 0 auto;
}

.message__mascot {
    width: clamp(5rem, 9vw, 6.75rem);
}

.message__mascot img {
    width: 100%;
    height: auto;
}

.message__text {
    font-family: 'Zen Maru Gothic', sans-serif;
    font-weight: 700;
    font-size: clamp(1rem, 1.333vw, 1.25rem);
    line-height: 1.8;
    color: #575757;
    text-align: center;
}

/* ==========================================================================
   Responsive – Tablet (max-width: 1023px)
   ========================================================================== */
@media (max-width: 1023px) {
    .hero__inner {
        flex-direction: column;
        text-align: center;
        padding-left: 2rem;
        padding-right: 2rem;
    }

    .hero__left {
        width: 100%;
        align-items: center;
    }

    .hero__heading {
        white-space: nowrap;
    }

    .hero__heading br {
        display: none;
    }

    .hero__imgs {
        width: 80%;
        max-width: 28rem;
    }

    .hero__points {
        justify-content: center;
    }

    .trouble__cloud {
        width: clamp(10rem, 18vw, 16rem);
        left: clamp(-4rem, -5vw, -4.5rem);
    }

    .trouble__cloud-right {
        width: clamp(10rem, 18vw, 16rem);
        right: clamp(-4rem, -5vw, -4.5rem);
    }

    .trouble__sun {
        width: clamp(1.5rem, 3vw, 2.5rem);
    }

    .trouble__mountain {
        width: clamp(10rem, 22vw, 18rem);
    }

    .methods__card {
        width: clamp(65%, 70%, 80%);
    }

    .methods__cloud {
        width: clamp(8rem, 14vw, 12rem);
    }

    .methods__trees {
        width: clamp(3.5rem, 6vw, 5.5rem);
    }

    .methods__bird {
        right: clamp(2rem, 6vw, 8rem);
    }
}

/* ==========================================================================
   Responsive – Mobile (max-width: 797px)
   ========================================================================== */
@media (max-width: 797px) {
    .hero__inner {
        padding-top: 5rem;
        padding-bottom: 1.5rem;
        gap: 1.5rem;
    }

    .hero__left {
        gap: 1rem;
    }

    .hero__imgs {
        width: 100%;
        max-width: 22rem;
    }

    .trouble__cards {
        grid-template-columns: 1fr;
    }

    .consultation__content {
        flex-direction: column;
        align-items: center;
    }

    .consultation__badges {
        display: grid;
        grid-template-columns: 1fr 1fr;
        width: 100%;
    }

    .consultation__badge {
        font-size: clamp(0.9375rem, 2.5vw, 1.125rem);
        letter-spacing: 0.08em;
    }

    .cta__buttons {
        flex-direction: column;
    }

    .cta__btn {
        width: 100%;
        max-width: 24rem;
        margin: 0 auto;
        padding: 1rem 2rem;
    }

    .methods__card {
        width: 100%;
    }

    .methods__card--left,
    .methods__card--right {
        align-self: stretch;
    }

    .methods__path,
    .methods__footprint,
    .methods__leaf,
    .methods__leaf8 {
        display: none;
    }

    .methods__bird {
        width: clamp(1.5rem, 4vw, 2.5rem);
        top: clamp(-1rem, -1.5vw, -1.25rem);
        right: clamp(1.5rem, 4vw, 3rem);
    }

    .methods__trees {
        right: clamp(-1.5rem, -3vw, -2rem);
        width: clamp(3rem, 8vw, 5rem);
    }

    .info__content {
        flex-direction: column;
        align-items: center;
    }

    .info__photo {
        width: 70%;
        max-width: 16rem;
    }

    .info__bird {
        width: clamp(2rem, 5vw, 3rem);
    }

    .message__text br {
        display: none;
    }
}

/* ==========================================================================
   Responsive – Small (max-width: 600px)
   ========================================================================== */
@media (max-width: 600px) {
    .trouble__cloud {
        top: -3rem;
    }

    .trouble__cloud-right {
        top: -1rem;
    }
}

/* ==========================================================================
   Responsive – Small Mobile (max-width: 500px)
   ========================================================================== */
@media (max-width: 500px) {
    .hero__heading {
        white-space: normal;
    }

    .hero__heading br {
        display: inline;
    }
}
