@charset "utf-8";

/* normalize
------------------------------------------------------------*/

html {
line-height: 1.5;
-webkit-text-size-adjust: 100%;
}

hr {
box-sizing: content-box;
height: 0;
overflow: visible;
}

pre {
font-family: monospace, monospace;
font-size: 1em;
}

a {
background-color: transparent;
}

abbr[title] {
border-bottom: none;
text-decoration: underline;
text-decoration: underline dotted;
}

b,
strong {
font-weight: bolder;
}

code,
kbd,
samp {
font-family: monospace, monospace;
font-size: 1em;
}

small {
font-size: 80%;
}

sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}

sub {
bottom: -0.25em;
}

sup {
top: -0.5em;
}

img {
border-style: none;
}

button,
input,
optgroup,
select,
textarea {
font-family: inherit;
font-size: 100%;
line-height: 1.5;
margin: 0;
}

button,
input {
overflow: visible;
}

button,
select {
text-transform: none;
}

button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}

button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
border-style: none;
padding: 0;
}

button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
outline: 1px dotted ButtonText;
}

fieldset {
padding: 0.35em 0.75em 0.625em;
}

legend {
box-sizing: border-box;
color: inherit;
display: table;
max-width: 100%;
padding: 0;
white-space: normal;
}

progress {
vertical-align: baseline;
}

textarea {
overflow: auto;
}

[type="checkbox"],
[type="radio"] {
box-sizing: border-box;
padding: 0;
}

[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}

[type="search"] {
-webkit-appearance: textfield;
outline-offset: -2px;
}

[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}

::-webkit-file-upload-button {
-webkit-appearance: button; /* 1 */
font: inherit; /* 2 */
}

details {
display: block;
}

summary {
display: list-item;
}

template {
display: none;
}

[hidden] {
display: none;
}

/* End normalize */


/* formatting style
------------------------------------------------------------*/

* {
margin: 0;
padding: 0;
font-style: normal;
}

html {
font-size: 100%;
height: 100%;
}

body {
color: #121212;
font-family: "游ゴシック Medium", "Yu Gothic Medium", "游ゴシック体", YuGothic, -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, "ヒラギノ角ゴ ProN W3", "Hiragino Kaku Gothic ProN", "メイリオ", "Meiryo", "verdana", sans-serif;
font-optical-sizing: auto; /* for Variable Fonts */
font-variation-settings: "wdth" 100; /* for Variable Fonts */
font-style: normal; /* from Google fonts */
font-weight: 400; /* normal */
font-size: 0.875rem;
line-height:1.5;
margin: 0;
padding: 0;
height: 100%;
text-size-adjust: 100%;
-webkit-text-size-adjust: 100%; /*スマホのランドスケープで文字を拡大させない*/
background: #f5f5f5;
}
@media only screen and (min-width: 768px) { /* 768px以上で適用、タブレット～PC用CSS */
body {
font-size: 1rem;
}
}

.bold { /* 見出し等で「游ゴシック Medium」では太すぎる場合 */
font-family: "游ゴシック", "Yu Gothic", "游ゴシック体", YuGothic, -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, "ヒラギノ角ゴ ProN W3", "Hiragino Kaku Gothic ProN", "メイリオ", "Meiryo", "verdana", sans-serif;
font-weight: 700; /* bold */
}

.serif {
font-family: "Noto Serif JP", serif;
font-optical-sizing: auto; /* for Variable Fonts */
font-weight: 400; /* normal */
}

*,
*::before,
*::after {
box-sizing: border-box;
}

h1, h2, h3, h4, h5, h6 {
font-weight: 400; /* normal */
font-size: 1rem;
line-height:1.5;
}

p {
line-height:1.8;
text-align: justify;
}
@media only screen and (max-width: 767px) { /* 767px以下で適用、スマホ専用CSS */
p {
margin-right: 0.5em;
margin-left: 0.5em;
}
}

p + p {
padding-top: 1em;
}

ul {
list-style: none;
}

a {
text-decoration: none;
color: inherit;
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
a {
transition: 0.6s;
}
}

a:hover {
opacity: 0.6;
}

a img {
border: none;
}

a:link,
a:visited,
a:hover,
a:active {
text-decoration: none;
color: inherit;
}

img {
vertical-align: bottom; /* aタグ等の余白対策 */
max-width: 100%;
height: auto;
}

a[href^="tel:"] {
cursor: default;
}

a:focus, *:focus {
outline: none;
}

/* End formatting style */


/* responsive
------------------------------------------------------------*/

@media only screen and (max-width: 767px) { /* 767px以下で適用、スマホ専用CSS */
.sp-none {
display: none;
}
.sp-br-none br {
display: none;
}
}

@media only screen and (min-width: 768px) { /* 768px以上で適用、タブレット～PC用CSS */
.sp-only {
display: none;
}
}

@media only screen and (max-width: 1024px) { /* 1024px以下で適用、PC以外用CSS */
.pc-only {
display: none;
}
}

@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
.tab-sp-only {
display: none; 
}
}

@media only screen and (min-width: 1248px) { /* 1248px以上で適用、PCフルサイズ用CSS */
}

@media only screen and (max-width: 374px) { /* 374px以下で適用、for mini */
}

/* End responsive */


/* gnav
------------------------------------------------------------*/

@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
#header.scroll-1 {
margin-top: -122px;
}
#header.scroll-2 {
margin-top: 0;
}
}

#header.at-footer {
margin-top: -62px;
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
#header.at-footer {
margin-top: -122px;
}
}

.gnav {
width: 100%;
position: fixed;
top: 0;
left: 0;
z-index: 2000;
box-shadow: 0 1px 2px #d4d4d4;
transition: 0.6s;
background-color: #fff;
-webkit-overflow-scrolling: touch;
}

@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
.gnav-inner {
padding: 0 0 0 24px;
position: relative;
}
}
@media only screen and (min-width: 1248px) { /* 1248px以上で適用、PCフルサイズ用CSS */
.gnav-inner {
padding: 0 0 0 48px;
position: relative;
}
}

.gnav-inner p.site-title {
position: absolute;
color: #a9a9a9;
font-size: 0.875rem;
top: 14px;
left: 26px;
}
@media only screen and (min-width: 1248px) { /* 1248px以上で適用、PCフルサイズ用CSS */
.gnav-inner p.site-title {
left: 50px;
}
}
#header.scroll-1 .gnav-inner p.site-title { /* scroll-1 の時点で変更 */
top: -60px;
}

.gnav-menu {
height: 60px;
transition: 0.6s;
width: 100%;
color: #121212;
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
.gnav-menu {
height: 120px;
overflow-y: hidden;
}
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
#header.scroll-2 .gnav-menu {
height: 60px;
overflow-y: hidden;
}
}

.gnav-header {
height: 60px;
display: flex;
flex-direction: row;
justify-content: space-between;
scroll-snap-align: start;
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
.gnav-header {
height: 120px;
margin-right: auto;
}
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
#header.scroll-2 .gnav-header {
height: 60px;
}
}

a.gnav-brand {
display: block;
height: 40px;
margin: 10px 0 0 16px;
}
@media only screen and (min-width: 768px) { /* 768px以上で適用、タブレット～PC用CSS */
a.gnav-brand {
margin: 10px 0 0 24px;
}
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
a.gnav-brand {
height: 50px;
margin: 50px 0 0 0;
}
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
#header.scroll-2 a.gnav-brand {
margin: 5px 0 0 0;
}
}

a.gnav-brand img {
height: 100%;
width: auto;
}

.gnav-hamburger {
padding: 29px 16px;
position: relative;
cursor: pointer;
background-color: #00488c;
}
@media only screen and (min-width: 768px) { /* 768px以上で適用、タブレット～PC用CSS */
.gnav-hamburger {
padding: 29px 24px;
}
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
.gnav-hamburger {
display: none; 
}
}

.gnav-hamburger span,
.gnav-hamburger span:before,
.gnav-hamburger span:after {
display: block;
height: 2px;
width: 32px;
transition: 0.6s;
background-color: #fff;
}

.gnav-hamburger span:before,
.gnav-hamburger span:after {
content: '';
position: absolute;
}

.gnav-hamburger span:before {
margin-top: -12px;
}

.gnav-hamburger span:after {
margin-top: 12px;
}

.gnav-checkbox:checked ~ .gnav-menu li .gnav-hamburger span {
background-color: transparent;
}

.gnav-checkbox:checked ~ .gnav-menu li .gnav-hamburger span:before,
.gnav-checkbox:checked ~ .gnav-menu li .gnav-hamburger span:after {
margin-top: 0;
}

.gnav-checkbox:checked ~ .gnav-menu .gnav-hamburger span:before {
transform: rotate(225deg);
}
.gnav-checkbox:checked ~ .gnav-menu .gnav-hamburger span:after {
transform: rotate(-225deg);
}

.gnav-checkbox {
display: none; 
}

.gnav-checkbox:not(:checked) ~ .gnav-menu {
overflow: hidden;
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
.gnav-checkbox:not(:checked) ~ .gnav-menu {
overflow: visible;
}
}

.gnav-checkbox:checked ~ .gnav-menu {
transition: height 0.6s;
height: 100vh;
overflow: auto;
scroll-snap-type: y mandatory;
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
.gnav-checkbox:checked ~ .gnav-menu {
height: 120px; /* レスポンシブで開きっぱなしにしない */
}
}

.gnav-navigation {
display: flex;
flex-direction: column;
list-style: none;
padding-left: 0;
margin: 0;
padding-bottom: 120px;
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
.gnav-navigation {
flex-flow: row;
padding-bottom: 0;
}
}

.gnav-menu a,
.gnav-item a {
color: inherit;
cursor: pointer; 
}

.gnav-item {
border-bottom: 1px solid #bfd1e2;
font-size: 1rem;
scroll-snap-align: start;
margin: 0 16px;
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
.gnav-item {
border-bottom: none;
font-family: "游ゴシック", "Yu Gothic", "游ゴシック体", YuGothic, -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, "ヒラギノ角ゴ ProN W3", "Hiragino Kaku Gothic ProN", "メイリオ", "Meiryo", "verdana", sans-serif;
font-weight: 700;
margin: 60px 8px 0;
transition: 0.6s;
}
}
@media only screen and (min-width: 1248px) { /* 1248px以上で適用、PCフルサイズ用CSS */
.gnav-item {
margin: 60px 18px 0;
}
}

@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
.gnav-item.pc-end {
margin-right: 24px;
}
}
@media only screen and (min-width: 1248px) { /* 1248px以上で適用、PCフルサイズ用CSS */
.gnav-item.pc-end {
margin-right: 48px;
}
}

@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
#header.scroll-2 .gnav-item {
margin: 0 8px;
}
#header.scroll-2 .gnav-item.pc-end {
margin-right: 8px;
}
#header.scroll-2 .gnav-item.contact {
margin-right: 0;
}
}
@media only screen and (min-width: 1248px) { /* 1248px以上で適用、PCフルサイズ用CSS */
#header.scroll-2 .gnav-item {
margin: 0 18px;
}
#header.scroll-2 .gnav-item.pc-end {
margin-right: 18px;
}
}

@media only screen and (max-width: 1024px) { /* 1024px以下で適用、PC以外用CSS */
.gnav-checkbox:checked ~ .gnav-menu li.gnav-header { /* メニュー開いた時のヘッダーボーダー */
box-shadow: 0 1px 0 #e1e1e1;
}
}

.gnav-item a {
display: block;
padding: 24px 24px 8px;
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
.gnav-item a {
padding: 8px;
margin-top: 10px;
}
}

@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
.gnav-item.common a {
position: relative;
}
.gnav-item.common a:hover {
color: #00488c;
opacity: 1;
}
.gnav-item.common a:after {
content: "";
position: absolute;
left: 0;
width: 100%;
height: 1px;
background: #00488c;
bottom: 0;
transform: scale(0, 1);
transform-origin: right top; /*変形（アンダーラインの伸長）の原点がaタグ（各メニュー）の右端*/
transition: transform 0.6s;
}
.gnav-item.common a:hover:after {
transform: scale(1, 1);     /*ホバー後、x軸方向に1（相対値）伸長*/
transform-origin: left top; /*左から右に向かう*/
}
}

.gnav-item.tel {
border-bottom: none;
text-align: center;
margin: 2em 2em 0;
}
@media only screen and (min-width: 768px) { /* 768px以上で適用、タブレット～PC用CSS */
.gnav-item.tel {
margin: 2em auto 0;
}
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
.gnav-item.tel {
margin: 0;
position: absolute;
right: 200px;
top: 0;
}
}
@media only screen and (min-width: 1248px) { /* 1248px以上で適用、PCフルサイズ用CSS */
.gnav-item.tel {
right: 240px;
}
}

@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
#header.scroll-2 .gnav-item.tel {
top: -60px;
}
}

.gnav-item.tel a {
border: solid 1px #00488c;
padding: 8px 24px;
}
@media only screen and (min-width: 768px) { /* 768px以上で適用、タブレット～PC用CSS */
.gnav-item.tel a {
min-width: 300px;
}
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
.gnav-item.tel a {
pointer-events: none;
border: none;
min-width: 240px;
margin: 0;
padding: 6px 0 0 0;
height: 60px;
}
}

.gnav-item.tel span {
display: block;
}

.gnav-item.tel span.num {
font-size: 1.375rem;
color: #00488c;
}

.gnav-item.tel span.num:before {
font-family: "Font Awesome 5 Free";
font-weight: 900;
font-size: 1rem;
content: "\f879";
margin-right: 0.5em;
}

.gnav-item.tel span.note {
color: #a9a9a9;
font-size: 0.75rem;
margin: 4px 0 0 0.5em;
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
.gnav-item.tel span.note {
margin: 0 0 0 0.5em;
}
}

.gnav-item.contact {
border-bottom: none;
text-align: center;
margin: 2em 2em 0;
}
@media only screen and (min-width: 768px) { /* 768px以上で適用、タブレット～PC用CSS */
.gnav-item.contact {
min-width: 300px;
margin: 2em auto 0;
}
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
.gnav-item.contact {
min-width: 200px;
margin: 0;
position: absolute;
right: 0;
top: 0;
}
}
@media only screen and (min-width: 1248px) { /* 1248px以上で適用、PCフルサイズ用CSS */
.gnav-item.contact {
min-width: 240px;
}
}

@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
#header.scroll-1 .gnav-item.contact { /* scroll-1 の時点で変更 */
min-width: 160px;
}
#header.scroll-2 .gnav-item.contact { /* scroll-1 の時点で変更 */
position: relative;
right: auto;
top: auto;
}
}
@media only screen and (min-width: 1248px) { /* 1248px以上で適用、PCフルサイズ用CSS */
#header.scroll-1 .gnav-item.contact { /* 上書き */
min-width: 240px;
}
}

.gnav-item.contact a {
color: #fff;
background: #00488c;
background: -webkit-linear-gradient(left, #002966, #336da3);
background: linear-gradient(to right, #002966, #336da3);
padding: 24px;
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
.gnav-item.contact a {
margin: 0;
padding: 0;
line-height: 60px;
height: 60px;
}
}

.gnav-item.contact a:before {
font-family: "Font Awesome 5 Free";
font-weight: 900;
content: "\f0e0";
margin-right: 0.5em;
}

.gnav-item.copyright {
border-bottom: none;
padding: 20px 0;
font-size: 0.875rem;
}

.gnav-item.copyright p {
text-align: center;
}

/* End gnav */


/* content
------------------------------------------------------------*/

main#content {
margin-top: 60px;
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
main#content {
margin-top: 120px;
transition: margin-top 0.6s;
}
#header.scroll-1 + main#content {
margin-top: 0;
}
}

/* End content */


/* top-common
------------------------------------------------------------*/

#top-common {
background: #edf2f7;
height: 160px;
background-image: url("../images/common/top_common_bg_sp.jpg");
background-position: top left;
background-repeat: no-repeat;
background-size: cover;
box-shadow: 0 -1px 2px #d4d4d4 inset;
}
@media only screen and (min-width: 768px) { /* 768px以上で適用、タブレット～PC用CSS */
#top-common {
height: 320px;
background-image: url("../images/common/top_common_bg_pc.jpg");
}
}

#top-common .inner-common {
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}

#top-common h1,
#top-common p.headline {
color: #00488c;
font-size: 1.5rem;
}
@media only screen and (min-width: 768px) { /* 768px以上で適用、タブレット～PC用CSS */
#top-common h1,
#top-common p.headline {
font-size: 2.5rem;
}
}

/* End top-common */


/* section-common
------------------------------*/

.section-common {
padding: 60px 0 70px;
}
@media only screen and (min-width: 768px) { /* 768px以上で適用、タブレット～PC用CSS */
.section-common {
padding: 80px 0 90px;
}
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
.section-common {
padding: 110px 0 120px;
}
}

.section-common.bg-common {
background: #edf2f7;
}

/* End section-common */


/* div-common
------------------------------*/

div.inner-common {
margin: 0 16px;
}
@media only screen and (min-width: 768px) { /* 768px以上で適用、タブレット～PC用CSS */
div.inner-common {
margin: 0 24px;
}
}
@media only screen and (min-width: 1248px) { /* 1248px以上で適用、PCフルサイズ用CSS */
div.inner-common {
max-width: 1200px;
margin: 0 auto;
}
}

@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
div.flex-1-2 {
display: flex;
justify-content: space-between;
}
}

@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
div.flex-1-2 > div {
width: 48%;
margin: auto 0;
}
}

/* End div-common */


/* common
------------------------------*/

h2.common {
font-family: "Noto Serif JP", serif;
font-optical-sizing: auto; /* for Variable Fonts */
font-weight: 400; /* normal */
color: #00488c;
font-size: 1.375rem;
text-align: center;
position: relative;
margin: 0 0 2em 0;
}
@media only screen and (min-width: 768px) { /* 768px以上で適用、タブレット～PC用CSS */
h2.common {
font-size: 2.125rem;
}
}

h2.common.white {
color: #fff;
}

h2.common:after {
content: "";
display: block;
width: 32px;
height: 8px;
position: absolute;
left: 50%;
bottom: -16px;
margin: 0 0 0 -16px;
background: #00488c;
background: -webkit-linear-gradient(left, #00488c 0%,#00488c 25%,transparent 25%,transparent 37.5%,#5b92ce 37.5%,#5b92ce 62.5%,transparent 62.5%,transparent 75%,#80c1ff 75%,#80c1ff 100%);
background: linear-gradient(to right, #00488c 0%,#00488c 25%,transparent 25%,transparent 37.5%,#5b92ce 37.5%,#5b92ce 62.5%,transparent 62.5%,transparent 75%,#80c1ff 75%,#80c1ff 100%);
}

h2.common.white:after {
background: -webkit-linear-gradient(left, #007ccb 0%,#007ccb 25%,transparent 25%,transparent 37.5%,#5bb1e9 37.5%,#5bb1e9 62.5%,transparent 62.5%,transparent 75%,#80d3ff 75%,#80d3ff 100%);
background: linear-gradient(to right, #007ccb 0%,#007ccb 25%,transparent 25%,transparent 37.5%,#5bb1e9 37.5%,#5bb1e9 62.5%,transparent 62.5%,transparent 75%,#80d3ff 75%,#80d3ff 100%);
}

h3.common {
font-family: "Noto Serif JP", serif;
font-optical-sizing: auto; /* for Variable Fonts */
font-weight: 400; /* normal */
color: #00488c;
font-size: 1.25rem;
text-align: center;
margin: 2.5em 0 1em;
}
@media only screen and (min-width: 768px) { /* 768px以上で適用、タブレット～PC用CSS */
h3.common {
font-size: 1.625rem;
}
}

h3.line {
font-family: "Noto Serif JP", serif;
font-optical-sizing: auto; /* for Variable Fonts */
font-weight: 400; /* normal */
color: #00488c;
font-size: 1.375rem; /* commonより大きい */
position: relative;
margin: 1em 0;
padding: 0 0.5em;
}
@media only screen and (min-width: 768px) { /* 768px以上で適用、タブレット～PC用CSS */
h3.line {
font-size: 1.75rem; /* commonより大きい */
}
}

h3.line:after {
content: "";
display: block;
width: 4px;
height: 100%;
position: absolute;
left: 0;
top: 0;
margin: 0;
background: #00488c;
background: -webkit-linear-gradient(top, #00488c, #80c1ff);
background: linear-gradient(to bottom, #00488c, #80c1ff);
}

p.note {
text-indent: -1em;
padding-left: 1em;
}

span.inline-b {
display: inline-block;
}

/* End common */


/* btn
------------------------------*/

.btn-wrap {
text-align: center;
margin: 3em 0 0 0;
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
.btn-wrap {
margin: 4em 0 0 0;
}
}

.btn-wrap.nomargin {
margin: 0;
}

a.btn {
text-align: center;
min-width: 16em;
padding: 14px 2em;
border: solid #00488c 1px;
background: #fff;
display: inline-block;
position: relative;
z-index: 1;
}

a.btn:hover {
opacity: 1;
color: #fff;
background: transparent;
}

a.btn:before {
content: "";
display: block;
position: absolute;
width: 0;
height: 100%;
background: #00488c;
background: -webkit-linear-gradient(left, #336da3, #002966);
background: linear-gradient(to right, #336da3, #002966);
top: 0;
left: 0;
z-index: -1;
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
a.btn:before {
transition: 0.3s;
}
}

a.btn:hover:before {
width: 100%;
}

a.btn:after {
content: "";
display: block;
position: absolute;
height: 1px;
background: #00488c;
top: 50%;
width: 36px;
right: -18px;
z-index: 1;
}
@media only screen and (min-width: 768px) { /* 768px以上で適用、タブレット～PC用CSS */
a.btn:after {
width: 50px;
right: -25px;
}
}

a.btn:hover:after {
background: linear-gradient(90deg,#fff 0%,#fff 50%,#00488c 50%,#00488c 100%);
}

a.btn-link {
text-align: center;
min-width: 16em;
padding: 14px 2em;
border: solid #00488c 1px;
background: #fff;
display: inline-block;
position: relative;
}

a.btn-link:hover {
opacity: 1;
color: #fff;
background: #00488c;
}

a.btn-link:before,
a.btn-link:after {
content: "";
display: block;
position: absolute;
width: 8px;
height: 6px;
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
a.btn-link:before,
a.btn-link:after {
transition: 0.6s;
}
}

a.btn-link:before {
border: solid 1px #00488c;
top: 6px;
right: 6px;
}

a.btn-link:hover:before {
border: solid 1px #fff;
}

a.btn-link:after {
border-left: solid 1px #00488c;
border-bottom: solid 1px #00488c;
top: 9px;
right: 9px;
}

a.btn-link:hover:after {
border-left: solid 1px #fff;
border-bottom: solid 1px #fff;
}

/* End btn */


/* scroll-in 基本はinnerに使用
------------------------------------------------------------*/

.fadein-up { /* scroll-in fadein-up */
opacity : 0;
transform : translate(0, 30px);
transition : 1.2s;
}
.fadein-up.on {
opacity : 1;
transform : translate(0, 0);
}

.fadein-right { /* 親要素に overflow: hidden; */
opacity : 0;
transform : translate(50px, 0);
transition : 1.2s;
}
.fadein-right.on {
opacity : 1;
transform : translate(0, 0);
}

.slidein-left { /* 必要に応じて display の設定を追加する */
clip-path: inset(0 100% 0 0);
transition: 1.2s ease-in-out;
will-change: clip-path; /* ブラウザに事前通知 */
opacity: 0;
}
.slidein-left.on {
clip-path: inset(0);
opacity: 1;
}

.hoge {
transition-delay: 0.3s;
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
.hoge > .hogehoge:nth-of-type(2) {
transition-delay: 0.3s;
}
}

/* End scroll-in */


/* page-top
------------------------------------------------------------*/

#page-top{
position: fixed;
bottom: 16px;
right: 16px;
width: 46px;
height: 46px;
border-radius: 100vh;
background: #fff;
box-shadow: 0 0 0 1px #dcdcdc;
opacity:0;
transform : translate(0, 100px);
transition : 1.2s;
z-index: 700;
}
@media only screen and (min-width: 768px) { /* 768px以上で適用、タブレット～PC用CSS */
#page-top{
bottom: 24px;
right: 24px;
}
}

#page-top.on{
opacity:1;
transform : translate(0, 0);
}

#page-top a {
display: block;
width: 100%;
height: 100%;
color: #ffffff;
}

#page-top a:before {
content: "";
width: 15px;
height: 15px;
border: 0;
border-top: solid 1px #121212;
border-left: solid 1px #121212;
position: absolute;
top: 50%;
left: 50%;
margin: -7px 0 0 0;
transform: rotate(45deg);
transform-origin:0 0;
}

/* End page-top */


/* fotter-fix
------------------------------------------------------------*/

body {
display: flex;
flex-direction: column;
min-height: 100vh;
}

#footer {
margin-top: auto;
}

/* End fotter-fix */


/* footer
------------------------------------------------------------*/

#footer {
background: #edf2f7;
padding: 0 0 80px;
font-size: 0.875rem;
}
@media only screen and (min-width: 768px) { /* 768px以上で適用、タブレット～PC用CSS */
#footer {
padding: 0 0 100px;
}
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
#footer {
padding: 0 0 140px;
}
}

#footer .footer-contact {
position: relative;
z-index: 1;
padding: 60px 0 0 0;
}
@media only screen and (min-width: 768px) { /* 768px以上で適用、タブレット～PC用CSS */
#footer .footer-contact {
padding: 80px 0 0 0;
}
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
#footer .footer-contact {
padding: 110px 0 0 0;
}
}

#footer .footer-contact p {
color: #fff;
}
@media only screen and (min-width: 768px) { /* 768px以上で適用、タブレット～PC用CSS */
#footer .footer-contact p {
text-align: center;
}
}

#footer .footer-contact:before {
content: "";
position: absolute;
top: 0;
width: 100%;
height: 74%;
background: #00488c;
background-image: url("../images/common/footer_contact_bg_sp.jpg");
background-position: center top;
background-repeat: no-repeat;
background-size: cover;
z-index: -1;
}
@media only screen and (min-width: 768px) { /* 768px以上で適用、タブレット～PC用CSS */
#footer .footer-contact:before {
height: 84%;
background-image: url("../images/common/footer_contact_bg_pc.jpg");
}
}

#footer .contact-area {
background: #fff;
margin: 2em 0 0 0;
padding: 2em;
border-radius: 5px;
box-shadow: 0 2px 12px 4px rgba(176,176,176,0.3);
}
@media only screen and (min-width: 768px) { /* 768px以上で適用、タブレット～PC用CSS */
#footer .contact-area {
display: flex;
justify-content: center;
align-items: center;
}
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
#footer .contact-area {
max-width: 900px;
margin: 2em auto 0;
}
}

#footer .contact-area a {
text-align: center;
display: block;
}
@media only screen and (min-width: 768px) { /* 768px以上で適用、タブレット～PC用CSS */
#footer .contact-area a {
min-width: 300px;
margin: 0 24px;
}
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
#footer .contact-area a {
margin: 0 48px;
font-family: "游ゴシック", "Yu Gothic", "游ゴシック体", YuGothic, -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, "ヒラギノ角ゴ ProN W3", "Hiragino Kaku Gothic ProN", "メイリオ", "Meiryo", "verdana", sans-serif;
font-weight: 700; /* bold */
}
}

@media only screen and (max-width: 767px) { /* 767px以下で適用、スマホ専用CSS */
#footer .contact-area a + a {
margin-top: 2em;
}
}

#footer .contact-area .tel {
border: solid 1px #00488c;
padding: 8px;
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
#footer .contact-area .tel {
pointer-events: none;
border: none;
}
}

#footer .contact-area .tel span {
display: block;
}

#footer .contact-area .tel span.num {
font-size: 1.375rem;
color: #00488c;
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
#footer .contact-area .tel span.num {
font-size: 2rem;
}
}

#footer .contact-area .tel span.num:before {
font-family: "Font Awesome 5 Free";
font-weight: 900;
font-size: 1rem;
content: "\f879";
margin-right: 0.5em;
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
#footer .contact-area .tel span.num:before {
font-size: 1.25rem;
}
}

#footer .contact-area .tel span.note {
color: #a9a9a9;
font-size: 0.75rem;
margin: 4px 0 0 0.5em;
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
#footer .contact-area .tel span.note {
margin: 0 0 0 0.5em;
font-size: 0.875rem;
}
}

#footer .contact-area .contact {
color: #fff;
font-size: 1rem;
background: #00488c;
background: -webkit-linear-gradient(left, #002966, #336da3);
background: linear-gradient(to right, #002966, #336da3);
padding: 24px;
}

#footer .contact-area .contact:before {
font-family: "Font Awesome 5 Free";
font-weight: 900;
content: "\f0e0";
margin-right: 0.5em;
}

#footer .footer-head {
margin-top: 60px;
text-align: center;
}
@media only screen and (min-width: 768px) { /* 768px以上で適用、タブレット～PC用CSS */
#footer .footer-head {
margin-top: 80px;
}
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
#footer .footer-head {
margin-top: 100px;
text-align: left;
display: flex;
align-items: flex-start;
justify-content: center;
}
}

#footer .footer-head img {
height: 40px;
width: auto;
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
#footer .footer-head img {
height: 50px;
}
}

#footer .footer-head p {
margin: 1em 0.5em 0;
text-align: center;
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
#footer .footer-head p {
margin: 0 0 0 2em;
text-align: left;
}
}

#footer ul.sitemap {
margin-top: 2em;
border-top: solid 1px #bfd1e2;
}
@media only screen and (min-width: 768px) { /* 768px以上で適用、タブレット～PC用CSS */
#footer ul.sitemap {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
border-top: none;
}
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
#footer ul.sitemap {
border-top: solid 1px #bfd1e2;
border-bottom: solid 1px #bfd1e2;
margin-top: 3em;
padding: 1em 0 1.5em;
}
}

@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
#footer ul.sitemap:before,
#footer ul.sitemap:after {
content: "";
display: block;
width: 24%;
height: 0;
order: 1;
}
}

#footer ul.sitemap li {
padding: 0.5em 0 0 0;
border-bottom: solid 1px #bfd1e2;
}
@media only screen and (min-width: 768px) { /* 768px以上で適用、タブレット～PC用CSS */
#footer ul.sitemap li {
width: 48%;
}
#footer ul.sitemap li:first-of-type,
#footer ul.sitemap li:nth-child(2) {
border-top: solid 1px #bfd1e2;
}
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
#footer ul.sitemap li {
width: 24%;
border-bottom: none;
text-align: center;
}
#footer ul.sitemap li:first-of-type,
#footer ul.sitemap li:nth-child(2) {
border-top: none;
}
}

#footer ul.sitemap li a {
display: block;
padding: 0.5em 2em 0.5em 1em;
position: relative;
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
#footer ul.sitemap li a {
display: inline-block;
padding: 0.5em 1em;
}
}

@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
#footer ul.sitemap li a:hover {
opacity: 1;
color: #00488c;
}
}

@media only screen and (max-width: 1024px) { /* 1024px以下で適用、PC以外用CSS */
#footer ul.sitemap li a:after {
content: "";
width: 6px;
height: 6px;
border: 0px;
border-top: solid 1px #00488c;
border-right: solid 1px #00488c;
transform: rotate(45deg);
position: absolute;
top: 50%;
right: 16px;
margin-top: -4px;
}
}

@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
#footer ul.sitemap li a:before {
content: "";
position: absolute;
left: 0;
width: 100%;
height: 1px;
background: #00488c;
bottom: 0;
transform: scale(0, 1);
transform-origin: right top; /*変形（アンダーラインの伸長）の原点がaタグ（各メニュー）の右端*/
transition: transform 0.6s;
}
#footer ul.sitemap li a:hover:before {
transform: scale(1, 1);     /*ホバー後、x軸方向に1（相対値）伸長*/
transform-origin: left top; /*左から右に向かう*/
}
}

#footer .copyright {
text-align: center;
margin-top: 2em;
}
@media only screen and (min-width: 1025px) { /* 1025px以上で適用、PC用CSS */
#footer .copyright {
margin-top: 3em;
}
}

/* End footer */







