@charset "utf-8";
/* CSS Document */


/* ========================================================

　Global Setting

=========================================================== */

*,
*::before,
*::after {
    box-sizing: border-box;
}

:root {
    scroll-behavior: smooth;
}

/*　ページ内でテキスト等を選択したときの背景色
----------------------------------------------------------- */
*::selection {
    background-color: rgba(90, 150, 175, 0.25);
}

/*　プレイスホルダー
----------------------------------------------------------- */
*::placeholder {
    opacity: 0.8;
    transition: 0.3s
}

/*　Pseudo-hide placeholders when in focus */
*:focus::placeholder {
    opacity: 0;
}

html {
    font-size: 62.5%; /* 1.0rem = 10px */
    text-size-adjust: 100%;
    -webkit-tap-highlight-color: var(--black-color);
}


/* ========================================================

　<body>

=========================================================== */

body {
    background-color: var(--white-color);
    color: var(--text-color);
    font: normal 400 1.6rem / 160% var(--sans-font);
    letter-spacing: 0.0625rem;
}

/*　スクロールバー
----------------------------------------------------------- */
body::-webkit-scrollbar {
    width: 1.0rem;
}

body::-webkit-scrollbar-track {
    background-color: var(--contrast-color);
}

body::-webkit-scrollbar-thumb {
    border-radius: 0.5rem;
    background-color: var(--blue-color-02);
}


/* ========================================================

　Link Color

=========================================================== */

a,
a:visited {
    color: var(--blue-color-01);
    outline: none;
    text-decoration: none;
    transition: 0.3s
}

a:hover,
a:focus {
    color: var(--surface-color);
}

main a[href*="tel:"] {
    color: var(--text-color);
}

/* 電話番号の発信をオフ */
@media (min-width: 576px) {

    a[href*="tel:"] {
        pointer-events: none;
    }

    footer a[href*="tel:"] {
        color: var(--gray-color-03);
    }

}


/* ========================================================

　Typography

=========================================================== */

h1,
h2,
h3,
h4,
h5,
span,
p,
li,
dt,
dd,
aside,
a {
    margin: 0;
    padding: 0;
    line-height: 1;
}

em {
    font-style: normal;
}

ul {
    margin: 0;
    padding: 0;
    list-style: none;
}

main .section p,
main .section li,
main .section dt,
main .section dd,
main .section th,
main .section td {
    line-height: 160%;
}


/* ========================================================

　<header>

=========================================================== */

header {
    display: flex;
    align-content: center;
    justify-content: space-between;
    padding: 1.0rem;
    transition: 0.5s;
    z-index: 997;
}

/* ロゴ領域 */
header #brand {
    width: 70%;
    z-index: 9999;
}

header #brand img {
    width: auto;
    height: min(13.0vw, 5.0rem);
    transition: 0.5s
}

/* マウスオーバー時 */
header #brand img:hover {
    opacity: 0.7;
}

/* お問い合わせボタン非表示 */
header #contact {
    display: none;
}

/* スクロール時の処理 */
.scrolled header {
    background-color: var(--white-color);
    box-shadow: 0 0 1.0rem rgba(0, 0, 0, 0.25);
}

@media (min-width: 992px) {

    header {
        display: flex;
        align-items: center;
        height: 10.0rem;
        padding: 2.0rem min(2.5vw, 5.0rem);
        animation: fade 2.0s; /* フェードアニメーション */
    }

    .scrolled header {
        border-bottom: 0.1rem solid rgba(90, 150, 175, 0.50);
    }

    header #brand img {
        height: min(4.75vw, 6.0rem);
    }

    /* お問い合わせボタン表示と設定 */
    header #contact {
        display: flex;
        align-items: center;
        justify-content: center;
        position: fixed;
        inset: 0 0 auto auto;
        width: 10.0rem;
        height: 10.0rem;
        background-color: var(--blue-color-01);
        overflow: hidden;
        /* transition: 0.3s; AOSが効かなくなるので無効 */
    }

    /* お問い合わせアイコン */
    header #contact img {
        width: 100%;
        transition: 0.3s;
    }

    /* マウスオーバー時 */
    header #contact a:hover img {
        transform: scale(1.05);
    }

}

@media (min-width: 1200px) {

    header {
        height: 12.0rem;
    }

    header #brand img {
        height: min(4.75vw, 8.2rem);
    }

    header #contact {
        width: 12.0rem;
        height: 12.0rem;
    }

}

@media (min-width: 1400px) {

    header {
        height: 14.0rem;
    }

    header #contact {
        width: 14.0rem;
        height: 14.0rem;
    }

}


/* ========================================================

　<nav>

=========================================================== */

/* メニューリスト共通設定 */
#navmenu ul {
    white-space: nowrap;
    z-index: 9998;
    transition: 0.3s;
}

#navmenu li:nth-last-of-type(n+2) a,
#navmenu li:nth-last-of-type(n+2) a:visited {
    color: var(--black-color);
    font-weight: 500;
}

#navmenu li:nth-last-of-type(n+2) a span {
    color: var(--accent-color);
    font-size: 1.2rem;
    font-weight: 400;
    text-transform: uppercase;
}

/*　モバイルデバイスのグローバルナビゲーション（SP～TB）
----------------------------------------------------------- */
@media (max-width: 991.98px) {

    /* メニュー領域 */
    #navmenu {
        display: flex;
        align-items: center;
        z-index: 9997;
    }

    /* <h1>非表示 */
    #navmenu h1 {
        display: none;
    }

    /* メニューリスト */
    #navmenu ul {
        display: none;
        position: absolute;
        inset: 8.0rem 0 2.0rem;
        padding: 3.0rem min(6.0vw, 3.0rem);
        overflow-y: auto;
    }

    #navmenu li:nth-last-of-type(n+2) {
        text-align: center;
    }

    #navmenu li:nth-of-type(n+2) {
        margin-top: 2.0rem;
    }

    /* アンカー設定（※アンカー適用は、メニューリストの最後から２番目以前） */
    #navmenu li:nth-last-of-type(n+2) a,
    #navmenu li:nth-last-of-type(n+2) a:visited {
        display: inline-flex;
        align-items: center;
        justify-content: space-between;
        width: min(100%, 30.0rem);
        height: 6.0rem;
        padding: 0 min(5.0vw, 2.5rem);
        border-radius: 3.0rem;
        background-color: var(--gray-color-03);
        font-size: 1.8rem;
    }

    /* アンカーのアクティブ時の処理 */
    #navmenu li:nth-last-of-type(n+2) a.active,
    #navmenu li:nth-last-of-type(n+2) a.active:focus,
    #navmenu li:nth-last-of-type(n+2).current a,
    #navmenu li:nth-last-of-type(n+2).current a span {
        color: var(--contrast-color);
        background-color: var(--surface-color);
    }

    #navmenu li:nth-last-of-type(n+2) a.active span,
    #navmenu li:nth-last-of-type(n+2) a.active:focus span {
        color: var(--contrast-color);
    }

    /* メニュー名の欧文表記前後の装飾 */
    #navmenu li:nth-last-of-type(n+2) a span::before {
        content: "- ";
    }

    #navmenu li:nth-last-of-type(n+2) a span::after {
        content: " -";
    }

    /* ハンバーガートグル */
    .toggle {
        color: var(--black-color);
        font-size: 4.0rem;
        line-height: 0;
        cursor: pointer;
        transition: 0.3s;
    }

    .toggle-active {
        overflow: hidden;
    }

    .toggle-active .toggle {
        position: absolute;
        top: 2.0rem;
        right: 2.0rem;
        color: var(--contrast-color);
        z-index: 9999;
    }

    /* ナビゲーションオープン時、背景暗転 */
    .toggle-active #navmenu {
        position: fixed;
        inset: 0;
        background-color: rgba(0, 0, 0, 0.70);
        overflow: hidden;
        transition: 0.3s;
    }

    /* メニュー領域表示 */
    .toggle-active #navmenu > ul {
        display: block;
    }

    /* 会社名（メニューリストの最後から２番目） */
    #navmenu li:nth-last-of-type(2) {
        margin-top: 5.0rem;
        text-align: center;
    }

    #navmenu li:nth-last-of-type(2) img {
        width: min(100%, 24.0rem);
    }

    /* 所在地（メニューリストの最後） */
    #navmenu li:last-of-type {
        color: var(--contrast-color);
    }

    #navmenu li:last-of-type p {
        width: min(100%, 24.0rem);
        margin: 0 auto;
        color: var(--gray-color-03);
        font-size: 1.4rem;
    }

    #navmenu li:last-of-type span {
        display: block;
        margin: 0.75rem 0;
    }

    #navmenu li:last-of-type a {
        color: var(--gray-color-03);
    }

    #navmenu li:last-of-type a[href*="#map"] {
        text-decoration: underline;
    }

}

@media (min-width: 375px) and (max-width: 991.98px) {

    #navmenu ul {
        padding: 3.0rem;
    }

    #navmenu li:nth-last-of-type(n+2) a,
    #navmenu li:nth-last-of-type(n+2) a:focus {
        padding: 0 2.4rem;
    }

}

/*　デスクトップ時のグローバルナビゲーション（PC）
----------------------------------------------------------- */
@media (min-width: 992px) {

    /* ハンバーガートグルとメニューリスト「個人情報保護方針」から最後までを非表示 */
    .toggle,
    #navmenu li:nth-last-of-type(-n+4) {
        display: none;
    }

    /* <h1>表示 */
    #navmenu h1 {
        display: block;
        position: absolute;
        top: 1.5rem;
        padding-left: min(2.5vw, 8.0rem);
        color: var(--accent-color);
        font-size: min(1.1vw, 1.4rem);
    }

    /* メニューリスト */
    #navmenu {
        margin-top: 1.75rem;
        margin-right: 8.0rem;
    }

    #navmenu ul {
        display: flex;
    }

    /* フェードアニメーション */
    #navmenu li {
        animation: fade 1.0s backwards;
    }

    #navmenu li:nth-of-type(1) {
        animation-delay: 0.1s;
    }

    #navmenu li:nth-of-type(2) {
        animation-delay: 0.3s;
    }

    #navmenu li:nth-of-type(3) {
        animation-delay: 0.5s;
    }

    #navmenu li:nth-of-type(4) {
        animation-delay: 0.7s;
    }

    #navmenu li:nth-of-type(5) {
        animation-delay: 0.9s;
    }

    /* アンカー設定（※アンカー適用は、メニューリストの「ホーム」から「お知らせ」まで） */
    #navmenu a,
    #navmenu a:visited {
        display: block;
        position: relative;
        padding: 0 min(2.5vw, 8.0rem);
        font-size: min(1.5vw, 1.8rem);
    }

    /* メニュー名の欧文表記 */
    #navmenu a span {
        display: block;
        position: relative;
        width: 100%;
        margin-top: 0.4rem;
        padding-top: 0.4rem;
        border-top: 0.1rem solid var(--blue-color-02);
        text-align: center;
        transition: border-top 0.5s;
    }

    /* アンカーのマウスオーバー時の処理 */
    #navmenu a span::before {
        position: absolute;
        inset: -0.1rem auto auto 0;
        width: 100%;
        height: 0.1rem;
        content: "";
        transform: scale(0, 1);
        transform-origin: left top;
        transition: 0.5s ease-in-out;
        animation: colorIn 0.3s forwards;
    }

    #navmenu a:hover span::before {
        transform: scale(1, 1);
        animation: colorIn 0.3s forwards;
    }

    /* アンカーのアクティブ時の処理 */
    #navmenu li:nth-last-of-type(n+2) a.active,
    #navmenu li:nth-last-of-type(n+2) a.active span,
    #navmenu li:nth-last-of-type(n+2).current a,
    #navmenu li:nth-last-of-type(n+2).current a span {
        color: var(--blue-color-01);
    }

    /* アンカーのアクティブ時のパルスアニメーション */
    #navmenu a.active::before,
    #navmenu a.active::after,
    #navmenu li.current a::before,
    #navmenu li.current a::after {
        display: block;
        position: absolute;
        inset: 0;
        width: 10.0rem;
        height: 10.0rem;
        margin: auto;
        border: 0.1rem solid rgba(80, 115, 145, 0.30);
        border-radius: 50%;
        content: "";
        animation: pulsate 3.0s linear infinite;
    }

    #navmenu a.active::after,
    #navmenu li.current a::after {
        animation-delay: 1.5s;
    }

}

@media (min-width: 1200px) {

    #navmenu {
        margin-top: 3.5rem;
        margin-right: 10.0rem;
    }

}

@media (min-width: 1400px) {

    #navmenu h1 {
        top: 2.0rem;
        font-size: 1.5rem;
    }

    #navmenu {
        margin-top: 4.0rem;
        margin-right: 12.0rem;
    }

}

@media (min-width: 1900px) {

    #navmenu h1 {
        letter-spacing: 0.25rem;
    }

}


/* ========================================================

　<main>
　<section>

=========================================================== */

.home main {
    margin-top: -8.0rem;
}

@media (min-width: 992px) {

    .home main {
        margin-top: -10.1rem; /* headerの高さ + border（0.1rem）*/
    }

}

@media (min-width: 1200px) {

    .home main {
        margin-top: -12.1rem;
    }

}

@media (min-width: 1400px) {

    .home main {
        margin-top: -14.1rem;
    }

}


/*　Sections
----------------------------------------------------------- */
main .section {
    padding: min(12.0vw, 6.0rem) 0;
    scroll-margin-top: 6.0rem;
    overflow: clip;
    animation: fadeUp 2.0s;
}

@media (min-width: 768px) {

    main .section {
        scroll-margin-top: 9.0vw;
    }

}

@media (min-width: 992px) {

    main .section {
        scroll-margin-top: 10.0vw;
    }

}

@media (min-width: 1900px) {

    main .section {
        scroll-margin-top: 7.0vw;
    }

}


/*　Breadcrumbs
----------------------------------------------------------- */

#breadcrumbs {
    padding: 1.0rem 0;
    background-color: var(--contrast-color);
}

#breadcrumbs li {
    display: inline-block;
    font-size: 1.4rem;
}

#breadcrumbs li:nth-of-type(n+2)::before {
    position: relative;
    top: 0.1rem;
    font-family: 'bootstrap-icons';
    font-size: 1.2rem;
    content: "\f285";
}


/* ========================================================

　<footer>

=========================================================== */

footer {
    position: relative;
    width: 100%;
    color: var(--gray-color-03);
}

footer a,
footer a:visited {
    color: var(--gray-color-03);
}

/* 上辺のカーブ */
footer::before {
    display: block;
    inset: 0 auto auto 0;
    width: 100%;
    padding-top: 10.15625%;
    padding-top: 10.15%;
    content: "";
}

footer::after {
    display: block;
    position: absolute;
    inset: 0 auto auto 0;
    width: 100%;
    height: 14.0rem;
    background-image: url("../img/footer_round.png");
    background-size: contain;
    background-repeat: no-repeat;
    content: "";
    z-index: -1;
}

/* 社名・所在地・サイトマップ領域 */
footer section:first-of-type {
    padding-top: 1.0rem;
    padding-bottom: min(5.0vw, 2.0rem);
    background-color: var(--blue-color-02);
    text-align: center;
}

/* 社名（画像） */
footer section:first-of-type .row > div:first-of-type div {
    width: min(100%, 25.75rem);
    margin: 0 auto;
}

footer img {
    width: 100%;
}

/* 所在地 */
footer p {
    width: min(100%, 25.5rem);
    margin: 2.0rem auto 4.0rem;
    color: var(--gray-color-03);
    font-size: 1.4rem;
    text-align: left;
    letter-spacing: 0.075rem;
}

footer p span {
    display: block;
    margin: 0.75rem 0;
}

footer a[href*="#map"] {
    text-decoration: underline;
}

/* サイトマップ */
footer nav {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    grid-template-rows: repeat(2, 1fr);
    grid-column-gap: 2.0rem;
    grid-row-gap: 3.0rem;
    width: min(100%, 38.0rem);
    margin: 0 auto;
    padding: 0 2.5%;
}

footer dl {
    text-align: left;
}

footer dt {
    position: relative;
    margin-bottom: 2.0rem;
    font-size: 2.0rem;
    text-transform: capitalize;
}

footer dt::after {
    position: absolute;
    inset: auto auto -1.0rem 0;
    width: 3.0rem;
    height: 0.3rem;
    border-radius: 0.15rem;
    background-color: var(--blue-color-03);
    content: "";
}

footer dd {
    font-size: min(4.0vw, 1.4rem);
    line-height: 200%;
}

/* 著作権表示領域 */
footer section:last-of-type {
    display: flex;
    align-items: center;
    height: 10.0rem;
    padding: 0;
    background-color: var(--accent-color);
    color: var(--contrast-color);
    text-align: center;
    letter-spacing: 0.15rem;
}

footer h3 {
    width: 100%;
    margin-bottom: min(4.0vw, 2.0rem);
    font-size: min(4.5vw, 3.0rem);
}

footer aside {
    width: 100%;
    font-size: min(4.0vw, 1.6rem);
    font-weight: 300;
}

footer em {
    font-weight: 500;
}

@media (min-width: 576px) {

    /* サイトマップを３列に */
    footer nav {
        display: flex;
        flex-wrap: wrap;
        justify-content: space-between;
        column-gap: 0;
        /*grid-template-columns: 30% repeat(2, 35%);*/
        /*grid-template-columns: 31.5% 40.5% 28%;*/
        width: min(100%, 62.0rem);
        padding: 0;
    }

    /* 各カラムのサイズ */
    footer dl:nth-of-type(1) {
        width: 31.5%;
    }

    footer dl:nth-of-type(2) {
        width: 40.5%;
    }

    footer dl:nth-of-type(3) {
        width: 28.0%; /* 固定 */
    }

    footer dd {
        font-size: 1.4rem;
    }

}

@media (min-width: 768px) {

    footer dl:nth-of-type(1) {
        width: 30.5%;
    }

    footer dl:nth-of-type(2) {
        width: 41.5%;
    }

    footer dd {
        font-size: 1.6rem;
    }

}

@media (min-width: 992px) {

    footer::after {
        height: 30.0rem;
    }

    /* 社名・所在地・サイトマップ領域 */
    footer section:first-of-type {
        padding-top: min(2.0vw, 4.0rem);
        padding-bottom: min(1.0vw, 2.0rem);
    }

    footer section:first-of-type .row {
        display: flex;
        align-items: center;
    }

    footer section:first-of-type .row > div:first-of-type {
        text-align: left;
    }

    footer section:first-of-type .row > div:first-of-type div,
    footer p {
        margin-left: 0;
    }

    /* アンカーのマウスオーバー時の処理 */
    footer dd a {
        position: relative;
    }

    footer dd a:hover {
        color: var(--white-color);
    }

    footer dd a::after {
        position: absolute;
        inset: auto auto 0 0;
        width: 0;
        height: 0.1rem;
        background-color: color-mix(in srgb, var(--white-color), transparent 25%);
        content: "";
        transition: 0.3s;
    }

    footer dd a:hover::after {
        width: 100%;
    }

    /* 著作権表示領域 */
    footer section:last-of-type {
        height: 8.0rem;
    }

    footer section:last-of-type div[class^="col-"] {
        display: flex;
        align-items: center;
    }

    footer h3 {
        margin-bottom: 0;
        text-align: left;
    }

    footer aside {
        text-align: right;
    }

}

@media (min-width: 1200px) {

    footer section:first-of-type .row > div:first-of-type div {
        width: min(100%, 30.0rem);
    }

    footer p {
        width: min(100%, 29.75rem);
        font-size: 1.6rem;
        letter-spacing: 0.118rem;
    }

}

@media (min-width: 1400px) {

    footer section:first-of-type {
        padding-top: 0;
    }

}

@media (min-width: 1900px) {

    footer section:first-of-type .row > div {
        margin-top: -4.0rem;
    }

}

@media (min-width: 2560px) {

    footer::after {
        height: 50.0rem;
    }

}


/* ========================================================

　Scroll Top

=========================================================== */

/* アクティブ時 */
.scroll-top.active {
    visibility: visible;
    opacity: 1;
}

.scroll-top {
    display: flex;
    align-items: center;
    justify-content: center;
    position: fixed;
    inset: auto 1.5rem 1.5rem auto;
    background-color: var(--blue-color-01);
    width: 4.0rem;
    height: 4.0rem;
    border-radius: 2.0rem;
    visibility: hidden;
    opacity: 0;
    z-index: 99;
    transition: 0.3s;
}

/* 矢印アイコン */
.scroll-top i {
    font-size: 2.4rem;
    color: var(--contrast-color);
    line-height: 0;
}

/* マウスオーバー時 */
.scroll-top:hover {
    transform: scale(1.2);
}


/* ========================================================

　Preloader

=========================================================== */

#preloader {
    position: fixed;
    inset: 0;
    width: 100%;
    height: 100vh;
    background-color: var(--white-color);
    overflow: hidden;
    z-index: 99999;
    transition: 0.6s ease-out;
}

#preloader::before,
#preloader::after {
    position: absolute;
    border: 0.4rem solid var(--blue-color-01);
    border-radius: 50%;
    content: "";
    animation: animate-preloader 2.0s cubic-bezier(0, 0.2, 0.8, 1) infinite;
}

#preloader::after {
    animation-delay: -0.5s;
}


/* ========================================================

　Other

=========================================================== */

/*　写真装飾
----------------------------------------------------------- */
.photo {
    position: relative;
}

.photo span {
    display: inline-block;
    position: absolute;
    width: 1.0rem;
    height: 1.0rem;
    border-top: 0.1rem solid;
    border-left: 0.1rem solid;
    border-color: var(--blue-color-03);
}

.tl,
.tr {
    top: -0.75rem;
}

.tr,
.br {
    right: -0.75rem;
}

.bl,
.br {
    bottom: -0.75rem;
}

.tl,
.bl {
    left: -0.75rem;
}

.tr {
    transform: rotate(90deg);
}

.br {
    transform: rotate(180deg);
}

.bl {
    transform: rotate(270deg);
}

/*　マーカー
----------------------------------------------------------- */
.marker {
    display: inline;
    background: linear-gradient(transparent 50%, rgba(255, 245, 95, 0.70) 50%);
    background-size: 0% 100%;
    background-repeat: no-repeat;
    transition: background-size 3.0s;
}

.marker.on {
    background-size: 100% 100%;
}

/*　モバイルデバイスでAOSアニメーションの遅延を無効にする
----------------------------------------------------------- */
@media (max-width: 767.98px) {

    [data-aos-delay] {
        transition-delay: 0 !important;
    }

}


/* ========================================================

　アニメーション設定

=========================================================== */

/* フェード */
@keyframes fade {

    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }

}

/* 下からフェードイン */
@keyframes fadeUp {

    from {
        opacity: 0;
        transform: translateY(3.0rem);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }

}

/* ズームイン・ズームアウト */
@keyframes zoomIn {

    0% {
        transform: scale(1.0);
    }

    50% {
        transform: scale(1.15);
    }

    100% {
        transform: scale(1.0);
    }

}

/* Scrollのライン */
@keyframes scrollLine {

    0% {
        transform: scale(1, 0);
        transform-origin: 0 0;
    }

    50% {
        transform: scale(1, 1);
        transform-origin: 0 0;
    }

    51% {
        transform: scale(1, 1);
        transform-origin: 0 100%;
    }

    100% {
        transform: scale(1, 0);
        transform-origin: 0 100%;
    }

}

/* パルス（アクティブなナビゲーション） */
@keyframes pulsate {

    0% {
        transform: scale(1);
        opacity: 1;
    }

    100% {
        transform: scale(2);
        opacity: 0;
    }

}

/* スライドインカラー */
@keyframes colorIn {

    0% {
        background-color: var(--contrast-color);
    }

    50% {
        background-color: var(--orange-color);
    }

    100% {
        background-color: var(--orange-color);
    }

}

/* プリローダー */
@keyframes animate-preloader {

    0% {
        width: 1.0rem;
        height: 1.0rem;
        top: calc(50% - 0.5rem);
        left: calc(50% - 0.5rem);
        opacity: 1;
    }

    100% {
        width: 7.2rem;
        height: 7.2rem;
        top: calc(50% - 3.6rem);
        left: calc(50% - 3.6rem);
        opacity: 0;
    }

}



/* ---- End of file --------------------------------------- */