@charset "utf-8";

/* --- 0. 最小限の共通リセット --- */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

ul, ol { list-style: none; }
a { text-decoration: none; color: inherit; }
img { max-width: 100%; height: auto; vertical-align: middle; border: 0; }

h1, h2, h3, h4, h5, h6 {
    font-size: 1em;
    font-weight: normal;
}

/* --- 1. 全体レイアウト --- */
body {
    background-color: #000;
    color: #fff;
    font-family: sans-serif;
    line-height: 1.6;
}

/* --- 2. 背景スリット（固定配置） --- */
.slit-bg {
    position: fixed;
    top: 0;
    height: 100vh;
    background-image: url("../img/bg.jpg");
    background-repeat: no-repeat;
    background-position: center;
    background-size: cover;
    background-attachment: fixed;
    z-index: 1;
    border-right: 1px solid #222;
}
.slit-1 { left: 5%;  width: 80px; opacity: 0.9; }
.slit-2 { left: 16%; width: 40px; opacity: 0.7; }
.slit-3 { left: 23%; width: 20px; opacity: 0.5; }

/* --- 3. メインエリア構造 --- */
.right-scroll-area {
    width: 100%;
    position: relative;
    z-index: 10;
}

main {
    padding: 80px 20px;
    padding-left: 30%;
    display: flex;
    justify-content: center;
    min-height: 80vh;
}

main h1 {
    font-size: 2.5rem;
    font-weight: bold;
    text-align: center;
    margin-bottom: 40px;
    color: #fff;
    text-shadow: 0 0 15px rgba(0, 191, 255, 0.3);
}

.content-box h2 {
    font-size: 1.8rem;
    font-weight: bold;
    margin-bottom: 20px;
    color: #00bfff;
    border-bottom: 1px solid #333;
    padding-bottom: 10px;
}

.content-box {
    max-width: 1000px;
    width: 100%;
    background: rgba(0, 0, 0, 0.85);
    padding: 50px 40px;
    border-radius: 4px;
    border: 1px solid #333;
    box-shadow: 0 0 30px rgba(0, 0, 0, 1);
}

.content-box p {
    margin-bottom: 1em;
    overflow-wrap: break-word;
}


/* 小説バナー専用グリッド */
.novel-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 30px;            
    justify-content: center;
    margin-top: 30px;
}

/* 小説バナー専用カード */
.novel-card {
    flex: 0 1 300px;      
    text-align: center;
}

/* 小説画像（バナー）の装飾 */
.novel-card img {
    width: 100%;
    height: auto;
    border-radius: 6px;
    box-shadow: 0 4px 15px rgba(0,0,0,0.5);
    transition: transform 0.3s ease, filter 0.3s ease;
}

.novel-card img:hover {
    transform: translateY(-5px); 
    filter: brightness(1.1);    
}

/* 小説説明文の装飾 */
.novel-card p {
    margin-top: 15px;
    color: #eee;
    font-size: 0.95rem;
    line-height: 1.6;
    letter-spacing: 0.05em;
}


/* --- 5. 地図グリッド --- */
.map-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 30px;
    justify-content: center;
    margin-top: 40px;
}

.map-card {
    flex: 0 1 calc(50% - 20px);
    min-width: 300px;
}

.map-card img {
    width: 100%;
    height: auto;
    border: 1px solid #444;
    box-shadow: 0 10px 25px rgba(0,0,0,0.5);
    border-radius: 4px;
    transition: transform 0.3s ease;
}

.map-card img:hover {
    transform: scale(1.02);
    border-color: #00bfff;
}

/* --- 6. キャラクターカード・スライダー --- */
.chara-slider-container { 
    position: relative; 
    max-width: 1000px; 
    margin: 40px auto; 
    min-height: 500px; 
}

.chara-slide { 
    display: none; 
}

.chara-slide.active { 
    display: block; 
    animation: slideInRight 0.6s ease-out;
}

@keyframes slideInRight { 
    from { transform: translateX(-150px); opacity: 0; } 
    to { transform: translateX(0); opacity: 1; } 
}

.chara-info { 
    text-align: center; 
    margin-bottom: 30px; 
}

.chara-images { 
    display: flex; 
    justify-content: center; 
}

.img-wrapper { 
    display: flex; 
    gap: 25px; 
    justify-content: center;
    align-items: center;
    padding: 25px;
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.1); 
    border-radius: 20px;
    box-shadow: 0 15px 35px rgba(0, 0, 0, 0.8);
    max-width: fit-content;
    margin: 0 auto;
}

.img-wrapper img, .qr-img { 
    width: 250px; 
    height: 250px; 
    object-fit: cover;
    border: 2px solid #555; 
    border-radius: 15px;
    box-shadow: 0 5px 15px rgba(0,0,0,0.5);
    transition: transform 0.3s ease, border-color 0.3s;
}

.img-wrapper img:hover {
    transform: translateY(-8px);
    border-color: #00bfff;
}

.slider-arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    background: rgba(0,0,0,0.7);
    color: #fff;
    border: 1px solid #666;
    padding: 10px 15px;
    cursor: pointer;
    z-index: 100;
    font-size: 14px;
    transition: 0.3s;
    border-radius: 4px;
    white-space: nowrap;
}

.prev { left: 20px; }
.next { right: 20px; }
.slider-arrow:hover { background: #00bfff; border-color: #00bfff; }


.right-scroll-area .site-footer {
    position: relative;
    z-index: 100;
    width: 100%;
    background: #0a0a0a;
    border-top: 2px solid #00bfff;
    padding: 80px 0;
    display: block;
}

