/* Custom Scrollbars */
::-webkit-scrollbar { 
    width: 5px; 
    height: 5px; 
}
::-webkit-scrollbar-track { 
    background: #EAECEF; 
}
::-webkit-scrollbar-thumb { 
    background: #E05000; 
}
::selection { 
    background: #E05000; 
    color: #FFF; 
}

/* Glassmorphism Header */
.glass-header {
    background: rgba(234, 236, 239, 0.88);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
}

/* ★ Parallax Layer Styles（GPU描画＆チラつき制御） ★ */
.parallax-layer {
    will-change: transform;
    transform-style: preserve-3d;
    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
    transform: translate3d(0, 0, 0);
}

/* Scroll Reveal Animations */
.reveal {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1), transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
}
.reveal.active { 
    opacity: 1; 
    transform: translateY(0); 
}

/* 画像表示アニメーション */
.img-reveal {
    opacity: 1;
    transform: none;
}

@media (min-width: 640px) {
    .img-reveal {
        opacity: 0;
        transform: translateY(24px) scale(0.98);
        transition: opacity 0.9s cubic-bezier(0.16, 1, 0.3, 1), transform 0.9s cubic-bezier(0.16, 1, 0.3, 1);
        will-change: opacity, transform;
    }

    .img-reveal.active {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

/* 画像底部のフチライン・隙間チラつきの完全防止 */
.card-swap-img {
    border: none !important;
    outline: none !important;
    box-shadow: none !important;
    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
    display: block;
    width: 100%;
    height: 100%;
    will-change: opacity;
}

/* Arrow Link Animations */
.arrow-link-icon { 
    display: inline-block; 
    transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1); 
}
.arrow-link-group:hover .arrow-link-icon { 
    transform: translate(4px, -4px) scale(1.1); 
}

/* Editorial Fonts */
.editorial-title { 
    font-family: 'Italiana', serif; 
}
.editorial-sub { 
    font-family: 'Cormorant Garamond', serif; 
}

/* Brand Logo Typography Styling */
.logo-beams { 
    font-family: 'Century Gothic', sans-serif; 
    font-weight: 400; 
    letter-spacing: -0.02em; 
}
.logo-beams-plus { 
    font-family: 'Syne', sans-serif; 
    font-weight: 800; 
    letter-spacing: 0.05em; 
}
.logo-ray-beams { 
    font-family: 'Italiana', serif; 
    font-weight: 400; 
    font-style: italic; 
}
.logo-beams-boy { 
    font-family: 'Cormorant Garamond', serif; 
    font-weight: 600; 
    letter-spacing: 0.1em; 
}
.logo-demi-luxe { 
    font-family: 'Italiana', serif; 
    font-weight: 400; 
}
.logo-international { 
    font-family: 'Century Gothic', sans-serif; 
    font-weight: 400; 
    letter-spacing: 0.2em; 
}

/* 標準日本語フォント指定 */
.font-standard, .font-kodomo {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Hiragino Kaku Gothic ProN", "Hiragino Sans", Meiryo, sans-serif !important;
    letter-spacing: 0.02em !important;
}

/* カードタイトルの長文レイアウト崩れ防止 */
.card-label-text {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 100%;
}

/* Utility Scrollbars */
.no-scrollbar::-webkit-scrollbar { 
    display: none; 
}
.no-scrollbar { 
    -ms-overflow-style: none; 
    scrollbar-width: none; 
}

/* Intro Animations */
#introOverlay {
    transition: transform 1.0s cubic-bezier(0.77, 0, 0.175, 1);
}

.intro-full-picture {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    transition: opacity 0.3s ease;
}
.intro-full-picture.active { 
    opacity: 1; 
}
.intro-full-picture img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.zoom-from-center {
    transform: scale(0.3);
    opacity: 0;
    transition: transform 1.2s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.8s ease;
}
.zoom-from-center.expanded { 
    transform: scale(1); 
}

#introLogo {
    will-change: transform, filter, top, left;
}

/* SCROLL 下の縦ライン流動モーション */
@keyframes scrollLineMove {
    0% {
        transform: translateY(-100%);
    }
    50%, 100% {
        transform: translateY(100%);
    }
}

.scroll-line-anim {
    animation: scrollLineMove 2.2s cubic-bezier(0.16, 1, 0.3, 1) infinite;
}