@charset "UTF-8";

/* --- Base Settings --- */
body {
    background-color: #FDFBF7;
    color: #334155;
    -webkit-font-smoothing: antialiased;
    overflow-x: hidden;
}

/* --- Grain Texture (Rich Feel) --- */
/* 画面全体にザラッとした質感を乗せることで、デジタルの冷たさを消す */
body::before {
    content: "";
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.05'/%3E%3C/svg%3E");
    pointer-events: none;
    z-index: 9999;
    opacity: 0.4;
}

/* --- Smooth Scroll (Lenis) Required --- */
html.lenis {
    height: auto;
}
.lenis.lenis-smooth {
    scroll-behavior: auto;
}
.lenis.lenis-smooth [data-lenis-prevent] {
    overscroll-behavior: contain;
}
.lenis.lenis-stopped {
    overflow: hidden;
}

/* --- Utilities --- */
.glass {
    background: rgba(255, 255, 255, 0.65);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid rgba(255, 255, 255, 0.4);
}

/* 画像の表示アニメーション用マスク */
.img-reveal {
    clip-path: inset(0 100% 0 0);
    transition: clip-path 1.2s cubic-bezier(0.77, 0, 0.175, 1);
}
.img-reveal.active {
    clip-path: inset(0 0 0 0);
}

/* ページ遷移用カバー */
.page-transition-curtain {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: #FDFBF7;
    z-index: 10000;
    pointer-events: none;
    display: flex;
    justify-content: center;
    align-items: center;
}