/* カスタムCSS：余白とフォントの微調整 */
body {
    color: #334155;
    font-size: 1.125rem; /* 大きめを維持 */
    line-height: 2; /* 行間を広げて上品に */
    overflow-x: hidden;
    font-weight: 300; /* Noto SansのLightウェイトで洗練さを */
}

/* 強い太字が必要な箇所の調整 */
b, strong, .font-bold {
    font-weight: 500;
}

.js-fade {
    opacity: 0;
    transform: translateY(20px); /* 移動距離を短くし上品な現れ方に */
    transition: opacity 1.2s cubic-bezier(0.16, 1, 0.3, 1), transform 1.2s cubic-bezier(0.16, 1, 0.3, 1);
}
.js-fade.is-visible {
    opacity: 1;
    transform: translateY(0);
}

.hero-slide {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    transition: opacity 2.5s ease-in-out;
    background-size: cover;
    background-position: center;
}
.hero-slide.active {
    opacity: 1;
}

/* 洗練されたシャドウ */
.shadow-elegant {
    box-shadow: 0 10px 40px -10px rgba(0,0,0,0.08);
}
.shadow-card {
    box-shadow: 0 4px 20px rgba(0,0,0,0.03);
}

.dynamic-px {
    padding-left: 5%;
    padding-right: 5%;
}
@media (min-width: 768px) {
    .dynamic-px {
        padding-left: 8%;
        padding-right: 8%;
    }
}
@media (min-width: 1280px) {
    .dynamic-px {
        padding-left: 12%;
        padding-right: 12%;
    }
}

#modal-overlay {
    transition: opacity 0.4s ease;
    backdrop-filter: blur(4px); /* 背景をぼかして高級感を出す */
}
#modal-content {
    transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.4s ease;
}
