body { font-family: "Noto Sans JP", sans-serif; color: #2C2C2A; background-color: #FFFFFF; line-height: 2; font-feature-settings: "palt"; }
h1, h2, h3, h4, h5, h6 { font-family: "Noto Serif JP", serif; color: #3A2E28; font-weight: 300; }
.text-body { font-size: 14.5px; letter-spacing: 0.08em; }
.text-sm-spaced { font-size: 13px; letter-spacing: 0.1em; line-height: 1.8; }
.heading-large { font-size: clamp(2.2rem, 5vw, 3.8rem); letter-spacing: 0.15em; line-height: 1.4; }
.heading-section { font-size: clamp(1.6rem, 3.5vw, 2.4rem); letter-spacing: 0.15em; line-height: 1.6; }
.section-label { font-family: "Noto Sans JP", sans-serif; font-size: 0.75rem; letter-spacing: 0.2em; color: #005bac; text-transform: uppercase; margin-bottom: 1.5rem; display: block; opacity: 0.7; }

.btn-primary { background-color: #1A2E44; color: #FFFFFF; padding: 1.25rem 3rem; border-radius: 2px; font-size: 13px; letter-spacing: 0.15em; transition: background-color 0.4s ease; display: inline-flex; align-items: center; justify-content: center; gap: 0.75rem; border: 0.5px solid #1A2E44; }
.btn-primary:hover { background-color: #2C4A6B; }
.btn-secondary { background-color: #FFFFFF; color: #005bac; border: 0.5px solid #1A2E44; padding: 1.25rem 3rem; border-radius: 2px; font-size: 13px; letter-spacing: 0.15em; transition: all 0.4s ease; display: inline-flex; align-items: center; justify-content: center; gap: 0.75rem; }
.btn-secondary:hover { background-color: #1A2E44; color: #FFFFFF; }

.link-arrow { display: inline-block; width: 6px; height: 6px; border-top: 1px solid currentColor; border-right: 1px solid currentColor; transform: rotate(45deg); transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1); margin-bottom: 1px; }
.group:hover .link-arrow { transform: translateX(4px) rotate(45deg); }
.nav-arrow { display: inline-block; width: 5px; height: 5px; border-top: 1px solid currentColor; border-right: 1px solid currentColor; transform: rotate(45deg); transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.4s ease; opacity: 0.5; margin-bottom: 1px; }
.group:hover .nav-arrow { transform: translateX(3px) rotate(45deg); opacity: 1; }

#main-header { transition: background-color 0.4s ease, color 0.4s ease, box-shadow 0.4s ease; }
.scrolled-header { background-color: #FFFFFF !important; color: #3A2E28 !important; box-shadow: 0 1px 0 rgba(0, 91, 172, 0.1); }

.fade-up { opacity: 0; transform: translateY(30px); transition: opacity 1s ease-out, transform 1s ease-out; }
.fade-up.visible { opacity: 1; transform: translateY(0); }
.bg-overlay::before { content: ""; position: absolute; inset: 0; background: rgba(0, 91, 172, 0.2); z-index: 1; }

.divide-fade { position: relative; }
.divide-fade::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 20%; background: linear-gradient(to bottom, #edebe9, transparent); z-index: 1; pointer-events: none; }

.footer-banner { max-width: 1200px; margin: 0 auto; display: flex; flex-direction: row; justify-content: center; align-items: center; gap: 30px; }
.footer-banner-item { height: 90px; }
.footer-banner-img { height: 100%; width: auto; display: block; object-fit: contain; box-shadow: 0 0 0 1px #666666; margin: 0 auto; }

/* ハンバーガーメニュー */
#hamburger.open .hamburger-line:nth-child(1) { transform: translateY(6px) rotate(45deg); }
#hamburger.open .hamburger-line:nth-child(2) { opacity: 0; }
#hamburger.open .hamburger-line:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }
#sp-menu.open { transform: translateX(0); }

/* トップへ戻るボタン */
#page-top.visible { opacity: 1; pointer-events: auto; }
