@charset "utf-8";

.poppins-regular {
  font-family: "Poppins", sans-serif;
  font-weight: 400;
  font-style: normal;
}

.noto-sans-jp-<uniquifier> {
  font-family: "Noto Sans JP", sans-serif;
  font-optical-sizing: auto;
  font-weight: <weight>;
  font-style: normal;
}

body,p,td,li, h5,h6 {
	font-family: "Poppins","Noto Sans JP", "ヒラギノ角ゴ Pro W3","Hiragino カク Gothic Pro","メイリオ",Meiryo,"ＭＳ Ｐゴシック","MS PGothic",sans-serif;
	font-weight: 400;
	font-size:1rem;
	line-height:1.8em;
}
h1,h2,h3,h4,.h1,.h2,.h3,.h4,.h5,.h6 {
	font-family: "Poppins","Noto Sans JP", "ヒラギノ明朝 Pro W3","Hiragino Mincho Pro",source-han-serif-japanese,"游明朝","Yu Mincho","游明朝体",YuMincho,"HGS明朝E","ＭＳ Ｐ明朝","MS PMincho",serif;
	font-weight:300;
	line-height:1.5em;
}

footer a, footer a:hover { color: #fff!important; text-decoration:none; }

.font-g {
	font-family: "Noto Sans JP", "ヒラギノ角ゴ Pro W3","Hiragino Kaku Gothic Pro","メイリオ",Meiryo,"ＭＳ Ｐゴシック","MS PGothic",sans-serif;
}

.font-m {
	font-family: "BIZ UDPMincho", "ヒラギノ明朝 Pro W3","Hiragino Mincho Pro",source-han-serif-japanese,"游明朝","Yu Mincho","游明朝体",YuMincho,"HGS明朝E","ＭＳ Ｐ明朝","MS PMincho",serif;
}

.bold {
	font-weight:800;
}

.ls-n1 { letter-spacing: -1px; }

.fs-1 {
    font-size: calc(1.5rem + 1.5vw) !important;
}
.fs-3 {
    font-size: calc(1.1rem + .6vw) !important;
}
@media (min-width: 900px) {
    .fs-1 {
        font-size: 3rem !important;
    }
}

h2 { font-size: 32px; }

/* アニメーション */
.fade-in-up {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 0.8s ease, transform 0.8s ease;
}
.fade-in-up.is-inview {
    opacity: 1;
    transform: translateY(0);
}

/* ヘッダー */
.container {
	max-width: 1000px;
    --bs-gutter-x: 3rem;
}

.navbar-brand img {
    max-width: 100%;
    height: auto;
    max-height: 34px;
}

.offcanvas {
    max-width: 100%;
}

.nav-link:hover {
    color: #526380 !important;
}

/* ヒーロー */
.hero-section {
    width: 100%;
    height: 100vh;
    max-height: 1000px;
    overflow: hidden;
}
.hero-bg {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}
.hero-text {
    top: 25%;
    left: 8%;
    width: 85%;
    max-width: 600px;
}
.scroll-down {
    bottom: 0px;
    z-index: 2;
}
.scroll-text {
    font-size: 18px;
    color: #333;
    letter-spacing: 0.1em;
    text-decoration:none;
}
.scroll-line-wrapper {
    position: relative;
    width: 1px;
    height: 148px;
}
.scroll-line-base {
    position: absolute;
    top: 0;
    left: 0;
    width: 1px;
    height: 100%;
    background-color: #ccc;
}
.scroll-line-anim {
    position: absolute;
    top: 0;
    left: 0;
    width: 1px;
    height: 100%;
    background-color: #000;
    animation: scrollLineMove 2s cubic-bezier(0.65, 0, 0.35, 1) infinite;
}

@keyframes scrollLineMove {
    0% {
        transform: scaleY(0);
        transform-origin: top;
    }
    50% {
        transform: scaleY(1);
        transform-origin: top;
    }
    50.1% {
        transform: scaleY(1);
        transform-origin: bottom;
    }
    100% {
        transform: scaleY(0);
        transform-origin: bottom;
    }
}

/* アバウト */
.about-section {
    background-color: #526380;
}

/* ソリューション */
.solutions-section {
    padding-bottom: 120px;
}
.solution-sub-title,
.solution-category-title {
    color: #00275d;
}
.solution-card {
    background-color: #f2f3f5;
    border-radius: 8px;
}

/* ビジョン */
.vision-section {
    position: relative;
    background: linear-gradient(45deg, #b4d1ec 0%, #fbfbfb 100%);
    overflow: hidden;
}
.vision-section::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(45deg, #fbfbfb 0%, #b4d1ec 100%);
    opacity: 0;
    animation: visionGradientShift 8s ease-in-out infinite alternate;
    pointer-events: none;
    z-index: 0;
}

@keyframes visionGradientShift {
    0% {
        opacity: 0;
    }
    100% {
        opacity: 1;
    }
}

.vision-section .container {
    position: relative;
    z-index: 2;
}
.vision-sub-title {
    color: #00275d;
}
.vision-beam-container {
    pointer-events: none;
    z-index: 1;
}
.vision-beam {
    position: absolute;
    bottom: 0px;
    background: linear-gradient(to top, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 1) 50%, rgba(255, 255, 255, 0) 100%);
    box-shadow: 0 0 8px rgba(255, 255, 255, 0.9), 0 0 16px rgba(180, 220, 255, 0.8);
    opacity: 0;
    animation: beamFlow linear infinite;
}

@keyframes beamFlow {
    0% {
        transform: translateY(0);
        opacity: 0;
    }
    15% {
        opacity: 1;
    }
    85% {
        opacity: 1;
    }
    100% {
        transform: translateY(-120vh);
        opacity: 0;
    }
}

.vision-img-wrapper {
    width: 100%;
    max-width: 800px;
    margin-left: auto;
    margin-right: auto;
    z-index: 2;
}
.vision-img-item {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.6s ease;
}
.vision-img-item:first-child {
    position: relative;
}
.vision-img-item.is-visible {
    opacity: 1;
}

/* 会社案内 */
.company-info-wrapper {
    border-top: 1px solid #e0e0e0;
}
.company-info-row {
    border-bottom: 1px solid #e0e0e0;
    padding-top: 20px;
    padding-bottom: 20px;
}

/* フッター */
.img-btn-link {
    transition: opacity 0.3s;
}
.img-btn-link:hover {
    opacity: 0.8;
}
.footer {
    background-color: #526380;
}
.footer-nav .list-inline-item {
    margin-right: 0;
}
.footer-nav a {
    transition: opacity 0.3s;
}
.footer-nav a:hover {
    opacity: 0.7;
}

@media (max-width: 767px) {
    .footer-nav .list-inline-item {
        display: block;
    }
}

/* トップに戻るボタン */
.page-top-btn {
    position: fixed;
    display: flex;
    align-items: center;
    justify-content: center;
    right: 20px;
    bottom: 20px;
    cursor: pointer;
    opacity: 0;
    visibility: hidden;
    border: 0;
    background: none;
    transition: .2s;
    z-index: 1000;
}

@media (min-width: 768px) {
    .page-top-btn {
        right: 40px;
    }
}

.page-top-btn.is-active {
    opacity: 1;
    visibility: visible;
}

.page-top-btn-text {
    font-size: 16px;
    font-weight: bold;
    writing-mode: vertical-rl;
    text-decoration: none;
    text-transform: uppercase;
    height: 85px;
    margin: 0;
    letter-spacing: 5px;
    text-align: right;
    position: relative;
    color: #333;
}

.page-top-btn-text:before {
    content: "";
    position: absolute;
    top: 0;
    right: -6px;
    width: 2px;
    height: 20px;
    background: #333;
    transform: skewX(-150deg);
}

.page-top-btn-text:after {
    content: "";
    position: absolute;
    bottom: 0px;
    right: 0;
    width: 2px;
    height: 85px;
    background: #333;
}