:root {
    --white: #fff;
    --font__color: #001930;
    --light__blue: #4c9fc4;
    --blue: #1b334c;
    --blue2: #2e69b0;
    --orange: #f15a24;
    --yellow: #ffcc4a;
    --button__gradient: linear-gradient(135deg, #f15a24 0%, #fbb03b 100%);
    --box__shadow: rgba(0, 0, 0, 0.1);
    --gray: #585858;
    --heavy__gray: #323232;
}

@font-face {
    font-family: 'MOBO-Bold';
    src: url('../fonts/MOBO-Bold.woff2') format('woff2'),
        url('../fonts/MOBO-Bold.woff') format('woff');
    font-weight: bold;
    font-style: normal;
    font-display: swap;
}

html {
    background: #e6e6e6;
}

.mobo {
    font-family: 'MOBO-Bold', sans-serif;
    margin-bottom: -0.25em;
}

.roboto {
    font-family: "Roboto", sans-serif;
    font-weight: 800;
}

body {
    width: 100%;
    max-width: 800px;
    font-family: "Noto Sans JP", sans-serif;
    font-weight: 700;
    margin: 0 auto;
    color: var(--font__color);
}

h1 {
    font-size: clamp(1.476rem, 1.109rem + 1.84vw, 2.027rem);
}

h2 {
    font-size: 1.802rem;
}

h3 {
    font-size: 1.602rem;
}

h4 {
    font-size: 1.424rem;
}

h5 {
    font-size: 1.266rem;
}

h6 {
    font-size: 1.125rem;
}

p {
    font-size: 1rem;
    line-height: 1.6em;
}

em {
    color: var(--orange);
    font-style: normal;
}

.small {
    font-size: 0.8em;
}

.large {
    font-size: 1.2em;
}

.link__text {
    text-decoration: underline;
    color: var(--orange);
}

/* スクロールアニメーション */

.fade__up {
    opacity: 0;
    transform: translateY(50px);
}

.fade__up__animation {
    animation: fade__up 0.5s forwards;
}

@keyframes fade__up {
    0% {
        opacity: 0;
        transform: translateY(50px);
    }

    100% {
        opacity: 1;
        transform: translateY(0);
    }
}

.fade {
    opacity: 0;
}

.fade__animation {
    animation: fade 0.5s forwards;
}

@keyframes fade {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

.fade__left {
    opacity: 0;
    transform: translateX(-200px);
}

.fade__left__animation {
    animation: fade__left 0.5s forwards;
}

@keyframes fade__left {
    0% {
        opacity: 0;
        transform: translateX(-200px);
    }

    100% {
        opacity: 1;
        transform: translateX(0);
    }
}

.fade__right {
    opacity: 0;
    transform: translateX(-200px);
}


.fade__right__animation {
    animation: fade__right 0.5s forwards;
}

@keyframes fade__right {
    0% {
        opacity: 0;
        transform: translateX(200px);
    }

    100% {
        opacity: 1;
        transform: translateX(0);
    }
}

.fade__down {
    opacity: 0;
    transform: translateY(-200px);
}


.fade__down__animation {
    animation: fade__down 0.5s forwards;
}

@keyframes fade__down {
    0% {
        opacity: 0;
        transform: translateY(-200px);
    }

    100% {
        opacity: 1;
        transform: translateY(0);
    }
}

/* 共通 */

.hidden__contents {
    display: none;
}

.contact--button {
    display: grid;
    place-items: center;
    width: fit-content;
    height: 100%;
    padding: 0.3em 1em;
    background: var(--orange);
    color: var(--white);
    border-radius: 5rem;
    cursor: pointer;
    box-shadow: 0px 0px 20px var(--box__shadow);
    font-family: "Noto Sans JP", serif;
    font-weight: 700;
}

.contact__section {
    width: 100%;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.5rem;
    padding: 1rem;
}

.contact__section p {
    font-family: "Noto Sans JP", serif;
    font-weight: 800;
    font-size: clamp(1rem, 0.647rem + 1.51vw, 1.4rem);
}

.contact__section .contact--button {
    font-size: clamp(1.2rem, 0.053rem + 4.89vw, 2.5rem);
}

/* header */

header {
    width: 100%;
    margin: 0 auto;
    padding: 1rem;
    position: fixed;
    top: 0;
    left: 0;
    z-index: 9998;
}

.header__inner {
    width: 100%;
    max-width: calc(800px - 2rem);
    background: var(--white);
    box-shadow: 0px 0px 5px var(--box__shadow);
    margin: 0 auto;
    padding: 0.5em 1rem;
    border-radius: 5rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
}

.header__logo {
    width: 40%;
}

.header__inner img {
    width: 100%;
}

.header__inner .contact--button {
    font-size: clamp(0.9rem, 0.459rem + 1.88vw, 1.4rem);
}

/* main */

main {
    background: var(--white);
}

/* mv */

.mv {
    width: 100%;
}

.mv__image {
    width: 100%;
}

/* points */

.points {
    width: 100%;
    margin: 0 auto;
    padding: 1rem 1rem 2rem 1rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
    background-image: url(../images/points__bg.svg);
    background-repeat: no-repeat;
    background-position: 0 100%;
}

.point {
    width: 100%;
    max-width: 600px;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
}

.point__number {
    text-align: center;
    background: var(--blue);
    color: var(--white);
    font-size: clamp(1.6rem, 1.071rem + 2.26vw, 2.2rem);
    letter-spacing: 0.1em;
    padding-top: 4px;
}

.point__inner {
    padding: 1rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
    background: var(--white);
    border: 2px solid var(--blue);
}

.point__inner img {
    width: 90%;
}

.point__inner h4 {
    font-size: clamp(1.2rem, 0.318rem + 3.76vw, 2.2rem);
}

.point__text {
    width: fit-content;
    margin: 0 auto;
    display: flex;
    gap: 0.5rem;
    align-items: center;
    justify-content: center;
}

.point__text img {
    width: 17%;
}

.point__text p {
    font-size: clamp(0.8rem, 0.447rem + 1.51vw, 1.2rem);
}

.point__arrow {
    width: 20%;
    margin: 0 auto;
}

/* works */

.works {
    width: 100%;
    background: var(--font__color);
    padding: 10% 1rem 1rem 1rem;
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.works__top__arrow {
    position: absolute;
    top: -1px;
    left: 0;
    right: 0;
    width: 10%;
    margin: 0 auto;
}

.works__title__wrap {
    width: 100%;
    max-width: 737px;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    background: var(--white);
}

.works__title {
    width: fit-content;
    margin: 0 auto;
    padding: 0.4em 1rem 0em 1rem;
    font-size: clamp(1.802rem, 1.451rem + 1.5vw, 2.2rem);
}

.work {
    width: 100%;
    max-width: 737px;
    margin: 0 auto;
    background: var(--blue);
    position: relative;
    padding: 1rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.work__item__decoration--top {
    width: 8%;
    position: absolute;
    top: 0;
    left: 0;
}

.work__item__decoration--bottom {
    width: 8%;
    position: absolute;
    bottom: 0;
    right: 0;
}

.work h3 {
    font-size: clamp(1.602rem, 1.074rem + 2.25vw, 2.2rem);
    color: var(--white);
    text-align: center;
}

.slide__img--wrap {
    display: flex;
    gap: 1rem;
    overflow-x: scroll;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
}

.slide__img--wrap img {
    flex-shrink: 0;
    width: 80%;
    max-width: 500px;
    scroll-snap-align: start;
    object-fit: cover;
    scroll-snap-align: center;
}

.work__text {
    width: 100%;
    margin: 0 auto;
    background: var(--white);
    padding: 1rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
    font-size: clamp(1rem, 0.824rem + 0.75vw, 1.2rem);
    background-image: url(../images/work__text__decoration.svg);
    background-repeat: no-repeat;
    background-position: 100% 100%;
    background-size: 8%;
}

.work__text__title {
    padding-left: 1.5em;
    position: relative;
}

.work__text__title::after {
    content: "";
    position: absolute;
    top: 0.2em;
    left: 0;
    width: 1em;
    height: 1em;
    background: var(--yellow);
}

.work__text__content {
    padding-left: 2em;
    font-size: 1.2em;
    line-height: 1.6em;
}

.works__slider--wrap {
    width: 100%;
    padding: 1rem 0;
}

.works__slider--wrap h2 {
    font-size: clamp(2.8rem, 1.918rem + 3.76vw, 3.8rem);
    text-align: center;
    margin-bottom: 0;
}

.works__slider--inner {
    width: 100%;
    padding: 1rem 0;
    background: var(--yellow);
    position: relative;
}

.works__slider--inner .slide__arrow {
    width: 20%;
    max-width: 80px;
    position: absolute;
    bottom: 1rem;
    left: 0;
    right: 0;
    margin: 0 auto;
    transform: translateY(100%);
}

.works__slide {
    padding: 1rem 0;
    background: var(--blue);
    display: flex;
    gap: 1rem;
    overflow-x: scroll;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
}

.works__slide img {
    flex-shrink: 0;
    width: 35%;
    max-width: 500px;
    scroll-snap-align: start;
    object-fit: cover;
    scroll-snap-align: center;
}

.work__sub {
    width: 100%;
    background: var(--white);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
    padding: 1rem;
    position: relative;
}

.work__sub h3 {
    font-size: clamp(1.602rem, 1.074rem + 2.25vw, 2.2rem);
}

.work__sub--image {
    width: 100%;
}

.work__sub p {
    font-size: 2.5rem;
    color: var(--orange);
}

.price {
    background: var(--white);
    padding: 1rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.price table {
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.price table caption {
    text-align: center;
    font-size: clamp(1.3rem, 0.859rem + 1.88vw, 1.8rem);
    padding: 0 0 0.5em 0;
    color: var(--orange);
    font-weight: 800;
}

.price tr {
    width: 100%;
    max-width: 500px;
    margin: 0 auto;
    display: flex;
    gap: 2em;
    justify-content: space-between;
    padding: 0.4em 0;
    border-bottom: 2px solid var(--blue2);
}

.price th {
    font-size: clamp(1.1rem, 0.659rem + 1.88vw, 1.6rem);
}

.price td {
    font-size: clamp(1.2rem, 0.671rem + 2.26vw, 1.8rem);
}

.price__banner--wrapper {
    width: 100%;
    text-align: center;
}

.price__banner {
    width: calc(100% - 2rem);
    padding: 1rem;
    border-radius: 1rem;
    box-shadow: 0px 0px 10px var(--box__shadow);
}

/* 補助金 */

.subsidy__image {
    padding: 1rem 0;
    width: 100%;
}

/* Q&A */

.faq {
    width: 100%;
    padding: 1rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.faq h3 {
    font-size: clamp(1.8rem, 1.271rem + 2.26vw, 2.4rem);
    text-align: center;
}

.faq details {
    border: 2px solid var(--blue);
    padding: 0.5em;
}

.faq summary {
    cursor: pointer;
    font-size: clamp(1.1rem, 0.659rem + 1.88vw, 1.6rem);
}

.faq summary i {
    margin-right: 1em;
}

.faq details p {
    font-size: clamp(1rem, 0.647rem + 1.51vw, 1.4rem);
    padding: 1rem 0 0 0;
}

.faq__decoration {
    height: 1.2rem;
    background: var(--yellow);
    text-align: center;
}

.faq__decoration img {
    width: 30%;
    max-width: 140px;
}

.faq__decoration2 {
    height: 1.2rem;
    background: var(--blue);
}

/* まとめパート */

.summary__wrap {
    width: 100%;
    padding: 2rem 0;
    background-image: linear-gradient(var(--blue2), var(--blue));
    background-repeat: no-repeat;
    background-size: 85% 100%;
    background-position: center;
    display: flex;
    flex-direction: column;
    gap: 2rem;
}

/* 外構工事の種類 */

.construction__wrap {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    background: rgba(255, 255, 255, 0.271);
    position: relative;
    z-index: 0;
    background-image: url(../images/construction__bg--top.webp),
        url(../images/construction__bg--bottom.webp);
    background-repeat: no-repeat, no-repeat;
    background-size: 100% auto, 100% auto;
    background-position: 0 0, 0 100%;
}

.construction__wrap h4 {
    background: var(--blue);
    color: var(--white);
    width: fit-content;
    padding: 0.4em 0.5rem 0 1rem;
    font-size: clamp(1.9rem, 1.635rem + 1.13vw, 2.2rem);
}

.construction__list {
    display: flex;
    gap: 2rem;
    overflow-x: scroll;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    padding: 1rem;
}

.construction {
    display: flex;
    flex-direction: column;
    align-items: end;
    background: var(--blue);
    flex-shrink: 0;
    width: 60%;
    max-width: 380px;
    height: 100%;
    scroll-snap-align: center;
}

.construction__list> :nth-child(even) {
    margin-top: 2rem;
}

.construction__img__wrap {
    width: 100%;
    position: relative;
}

.construction__img {
    width: 90%;
}

.decoration__top--right {
    width: 25%;
    position: absolute;
    top: 0;
    right: 0;
}

.decoration__bottom--right {
    width: 25%;
    position: absolute;
    bottom: 0;
    right: 0;
}

.construction h5 {
    color: var(--white);
    line-height: 2em;
    padding-right: 10%;
    font-size: clamp(1.266rem, 0.795rem + 2.01vw, 1.8rem);
}

/* 低価格×高品質 */
.summary__heading {
    width: 80%;
    margin: 0 auto;
}

.contact__announce__text {
    text-align: center;
    color: var(--white);
    font-size: clamp(1.25rem, 0.324rem + 3.95vw, 2.3rem);
}

.summary__list__wrap {
    padding: 1.5rem 0;
    background: var(--button__gradient);
}

.summary__list__inner {
    background: var(--white);
    padding: 1.5rem 0;
}

.summary__list {
    width: fit-content;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
}

.summary__list li {
    font-size: clamp(1.6rem, 0.629rem + 4.14vw, 2.7rem);
    line-height: 1.8em;
}

.summary__list li i {
    margin-right: 0.5em;
    color: var(--light__blue);
}

.summary__info__wrap h2 {
    background: var(--heavy__gray);
    color: var(--white);
    padding: 0.1em 0 0em 0;
    text-align: center;
    font-size: 2.7rem;
}

.summary__info__wrap h2 .small {
    font-size: 1.6rem;
}

.summary__info__wrap h2 .free {
    color: var(--yellow);
}

.summary__decoration--end--wrap {
    text-align: center;
}

.summary__decoration--end {
    width: 85%;
    margin: 0 auto;
}

/* お問い合わせ */

.contact__wrap {
    width: 100%;
    padding: 0 1rem 1rem 1rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.contact {
    background: var(--box__shadow);
    padding: 4rem 1rem 1rem 1rem;
    margin-top: -2.5rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
    border-radius: 1rem;
}

.contact h3 {
    width: fit-content;
    padding: 0.2em 1.5em;
    margin: 0 auto;
    background: var(--blue);
    color: var(--white);
    text-align: center;
    font-size: clamp(1.602rem, 0.986rem + 2.63vw, 2.3rem);
}

.contact__tel {
    background: var(--white);
    padding: 1rem;
    border-radius: 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.5em;
    align-items: center;
}

.contact__tel a {
    font-size: 1.8rem;
    color: var(--orange);
}

.contact__tel a i {
    margin-right: 0.5em;
    color: var(--light__blue);
}

.company__contact__button {
    width: fit-content;
    margin-left: auto;
    padding: 0.2em 0.5em;
    background: var(--yellow);
    font-size: clamp(1.2rem, 0.935rem + 1.13vw, 1.5rem);
}

form {
    width: 100%;
    max-width: 600px;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

input[type="text"],
input[type="email"],
input[type="tel"],
textarea {
    width: 100%;
    background: var(--white);
    border: 1px solid var(--blue);
    padding: 0.2em;
    border-radius: 0.5rem;
    margin-bottom: 1em;
}

.contact__button {
    width: fit-content;
    margin: 0 auto;
    padding: 0.2em 1em;
    background: var(--orange);
    color: var(--white);
    border-radius: 3em;
    font-size: 2rem;
}

.submit__disabled {
    background: var(--gray);
}

/* 工務店用のモーダル */

.company__contact__modal {
    width: 100%;
    height: 100vh;
    position: fixed;
    top: 0;
    left: 0;
    background: var(--box__shadow);
    flex-direction: column;
    gap: 1em;
    z-index: 9999;
    padding: 5% 1rem;
    display: none;
}

.company__contact__modal__inner {
    width: 100%;
    height: auto;
    max-width: 1000px;
    background: var(--white);
    margin: auto;
    padding: 1rem;
    border-radius: 1rem;
    overflow-y: scroll;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

.company__contact__modal__inner h3 {
    background: var(--yellow);
    border-radius: 0.2em;
    padding: 0.2em 0.5em;
    font-size: clamp(1.4rem, 1.222rem + 0.76vw, 1.602rem);
}

.company__contact__modal__inner .text__wrap {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.company__contact__modal__display {
    display: flex;
}

/* プライバシーポリシーのモーダル */

.privacy {
    width: fit-content;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    align-items: center;
}

.privacy__button {
    width: fit-content;
    padding: 0.2em 1em;
    border-radius: 2em;
    background: var(--yellow);
    color: var(--font__color);
    cursor: pointer;
    box-shadow: 0px 0px 5px var(--box__shadow);
    transition: all 0.3s;
}

.privacy__button:hover {
    box-shadow: none;
}

.checkbox {
    width: fit-content;
    margin: 0 auto;
    cursor: pointer;
    padding-left: 1.5em;
    position: relative;
}

.checkbox::before {
    content: '';
    width: 16px;
    height: 16px;
    background: var(--white);
    border: 1px solid var(--box__shadow);
    border-radius: 16px;
    position: absolute;
    top: 0.1em;
    left: 0;
}

.checkbox::after {
    content: '';
    width: 12px;
    height: 12px;
    background: var(--orange);
    border-radius: 12px;
    opacity: 0;
    position: absolute;
    top: 3.6px;
    left: 2px;
    transition: all 0.3s;
}

input[type=checkbox]:checked+.checkbox::after {
    opacity: 1;
}

.privacy__modal {
    width: 100%;
    height: 100vh;
    position: fixed;
    top: 0;
    left: 0;
    background: var(--box__shadow);
    flex-direction: column;
    gap: 1em;
    z-index: 9999;
    padding: 5% 1rem;
    display: none;
}

.privacy__modal__display {
    display: flex;
}

.privacy__modal__inner {
    width: 100%;
    height: 90vh;
    max-width: 1000px;
    background: var(--white);
    margin: 0 auto;
    padding: 1rem;
    border-radius: 1rem;
    overflow-y: scroll;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.privacy__modal__inner h3 {
    text-align: center;
}

.privacy__modal__inner ol {
    padding: 0.5em 0 0 2em;
}

.privacy__modal__inner ol li {
    list-style: decimal;
    line-height: 1.6em;
}


.privacy__modal__close {
    width: fit-content;
    padding: 0.5em 1em;
    background: var(--light__blue);
    border-radius: 0.5em;
    margin: 0 auto;
    box-shadow: 0px 0px 5px var(--box__shadow);
    transition: all 0.3s;
}

.privacy__modal__close:hover {
    box-shadow: none;
}

/* 送信結果のモーダル */

#contact__overlay {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.3);
    z-index: 9999;
}

.contact__dialog {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    overflow-y: auto;
    background: rgba(0, 0, 0, 0.5);
    justify-content: center;
    align-items: center;
    z-index: 99;
}

.contact__dialog__content {
    width: 100%;
    max-width: 800px;
    background: var(--white);
    padding: 20px;
    display: flex;
    flex-direction: column;
    gap: 1em;
    align-items: center;
    justify-content: center;
}

.close__dialog {
    width: fit-content;
    margin: 0 auto;
    padding: 8px 16px;
    border: none;
    background: var(--font__color);
    color: var(--white);
    cursor: pointer;
    border-radius: 5px;
    transition: all 0.3s;
}

.close__dialog:hover {
    background: var(--gray);
}

/* footer */

footer {
    padding: 2rem 2rem 0 2rem;
}

.footer__inner {
    width: fit-content;
    margin: 0 auto;
    background: var(--white);
    padding: 1rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
    align-items: center;
    border-radius: 1rem;
}

.footer__inner img {
    width: 100%;
    max-width: 300px;
}

small {
    line-height: 1.6em;
    display: grid;
    place-items: center;
}