/* style.css */
:root {
    /* Colors - Light Mode (Bright blueish-white) */
    --clr-bg-deep: #F4F7FB; 
    --clr-bg-panel: #FFFFFF; 
    --clr-gold: #D4AF37; 
    --clr-gold-light: #F3E5AB;
    --clr-gold-dark: #996515;
    --clr-text: #1E293B; /* Dark slate text */
    --clr-text-gray: #475569; /* Gray text */
    --clr-error: #EF4444;
    
    /* Gradients */
    --gradient-gold: linear-gradient(135deg, #F3E5AB 0%, #D4AF37 50%, #996515 100%);
    --gradient-dark: linear-gradient(180deg, #F4F7FB 0%, #E2E8F0 100%);
    
    /* Typography */
    --font-sans: 'Noto Sans JP', sans-serif;
    --font-heading: 'Outfit', 'Noto Sans JP', sans-serif;
    
    /* Spacing */
    --spacing-xs: 0.25rem;
    --spacing-sm: 0.5rem;
    --spacing-md: 1rem;
    --spacing-lg: 2rem;
    --spacing-xl: 4rem;
    --spacing-2xl: 6rem;
    
    /* Effects */
    --shadow-soft: 0 4px 20px rgba(0,0,0,0.05);
    --shadow-glow: 0 0 30px rgba(212, 175, 55, 0.2);
    --radius-md: 0.75rem;
    --radius-lg: 1.5rem;
}

/* Reset */
*, *::before, *::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html {
    scroll-behavior: smooth;
    font-size: 16px;
}

body {
    background-color: var(--clr-bg-deep);
    color: var(--clr-text);
    font-family: var(--font-sans);
    line-height: 1.6;
    overflow-x: hidden;
}

h1, h2, h3, h4, .font-outfit {
    font-family: var(--font-heading);
    line-height: 1.3;
}

.text-gold { color: var(--clr-gold); }
.text-gray { color: var(--clr-text-gray); }
.text-white { color: #FFF; }
.text-center { text-align: center; }
.text-left { text-align: left; }

.mb-4 { margin-bottom: 1rem; }
.mb-6 { margin-bottom: 1.5rem; }
.mb-8 { margin-bottom: 2rem; }
.mb-12 { margin-bottom: 3rem; }
.mb-16 { margin-bottom: 4rem; }

.mt-2 { margin-top: 0.5rem; }
.mt-4 { margin-top: 1rem; }
.mt-6 { margin-top: 1.5rem; }
.mt-8 { margin-top: 2rem; }
.mt-12 { margin-top: 3rem; }

.py-8 { padding-top: 2rem; padding-bottom: 2rem; }
.py-20 { padding-top: 5rem; padding-bottom: 5rem; }
.py-24 { padding-top: 6rem; padding-bottom: 6rem; }

.px-4 { padding-left: 1rem; padding-right: 1rem; }
.px-5 { padding-left: 1.5rem; padding-right: 1.5rem; }
.py-2 { padding-top: 0.5rem; padding-bottom: 0.5rem; }

.flex { display: flex; }
.flex-col { flex-direction: column; }
.items-center { align-items: center; }
.justify-center { justify-content: center; }
.gap-2 { gap: 0.5rem; }
.gap-4 { gap: 1rem; }
.gap-6 { gap: 1.5rem; }
.gap-8 { gap: 2rem; }

.w-1-3 { width: 32%; }
.h-32 { height: 8rem; }
.w-6 { width: 1.5rem; display: inline-block; text-align: center; }
.max-w-xs { max-width: 20rem; }
.mx-auto { margin-left: auto; margin-right: auto; }

.object-contain { object-fit: contain; }

.rounded { border-radius: 0.5rem; }
.rounded-full { border-radius: 9999px; }
.rounded-xl { border-radius: 1rem; }

.shadow { box-shadow: var(--shadow-soft); }
.shadow-gold { box-shadow: var(--shadow-glow); }
.border-t { border-top: 1px solid rgba(0,0,0,0.1); }
.border-gray-600 { border-color: #CBD5E1; }
.pt-4 { padding-top: 1rem; }

.bg-darker { background-color: #EBF0F5; } /* Light mode distinct section */
.bg-deep { background-color: var(--clr-bg-deep); }

.display-block { display: block; }
.inline-block { display: inline-block; }
.opacity-70 { opacity: 0.7; }
.font-bold { font-weight: 700; }
.text-sm { font-size: 0.875rem; }
.text-lg { font-size: 1.125rem; }
.text-xl { font-size: 1.25rem; }
.text-2xl { font-size: 1.5rem; }
.text-3xl { font-size: 1.875rem; }
.tracking-wide { letter-spacing: 0.05em; }
.uppercase { text-transform: uppercase; }

.relative { position: relative; }
.absolute { position: absolute; }
.overflow-hidden { overflow: hidden; }

/* Setup common widths */
.container {
    width: 90%;
    max-width: 1200px;
    margin: 0 auto;
}
.container-md { max-width: 900px; }
.container-sm { max-width: 700px; }

/* Lead text */
.lead {
    font-size: 1.125rem;
    line-height: 1.8;
}

/* Base Titles */
.section-title {
    font-size: 2.25rem;
    font-weight: 900;
}
@media (max-width: 768px) {
    .section-title { font-size: 1.75rem; }
}

/* Glassmorphism Panel (Light Mode) */
/* 注意: backdrop-filterはChromeでホバー時のbox-shadow変更でもGPU描画崩壊を引き起こすため完全廃止。
   不透明な白背景で同等の視覚効果を安全に再現する */
.glass-panel {
    background: #FFFFFF;
    border: 1px solid rgba(0,0,0,0.08);
    border-radius: var(--radius-lg);
    padding: 2.5rem;
    box-shadow: 0 10px 30px rgba(0,0,0,0.06);
    transition: box-shadow 0.3s ease, border-color 0.3s ease;
}
.glass-panel:hover {
    border-color: rgba(212, 175, 55, 0.4);
    box-shadow: 0 15px 40px rgba(0,0,0,0.1), 0 0 25px rgba(212, 175, 55, 0.25);
}

/* Glow Effect - シンプルなborder/shadow実装（描画負荷を最小限に） */
.glow-effect {
    border: 2px solid transparent;
    transition: border-color 0.4s ease, box-shadow 0.4s ease;
}

.glow-effect:hover {
    border-color: var(--clr-gold);
    box-shadow: 0 0 20px rgba(212, 175, 55, 0.35), 0 0 40px rgba(212, 175, 55, 0.15);
}

/* サイトヘッダー */
.site-header {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 100;
    background: rgba(15, 20, 35, 0.95);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border-bottom: 1px solid rgba(212, 175, 55, 0.2);
    padding: 0.6rem 1.5rem;
}
.site-header-inner {
    display: flex;
    align-items: center;
    max-width: 1200px;
    margin: 0 auto;
}
.site-header-logo {
    flex: 0 0 auto;
    width: 100px;
}
.site-header-logo img {
    width: 80px;
    height: auto;
    display: block;
    filter: brightness(0) invert(1) drop-shadow(0 2px 5px rgba(0,0,0,0.3));
}
.site-header-title {
    flex: 1;
    text-align: center;
    font-family: var(--font-heading);
    font-size: 1.1rem;
    font-weight: 700;
    color: rgba(255, 255, 255, 0.9);
    letter-spacing: 0.05em;
}
/* ロゴと対称にするためのスペーサー */
.site-header-spacer {
    flex: 0 0 auto;
    width: 100px;
}
@media (max-width: 768px) {
    .site-header-logo { width: 60px; }
    .site-header-logo img { width: 50px; }
    .site-header-title { font-size: 0.85rem; }
    .site-header-spacer { width: 60px; }
}

/* Hero Section */
.hero {
    position: relative;
    padding: 10rem 0 6rem; /* ヘッダー分のパディングを増加 */
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    overflow: hidden;
}

/* Hero Header Logo */
.hero-logo-container {
    position: absolute;
    top: 2.5rem;
    left: 2.5rem;
    z-index: 10;
}
.hero-logo {
    width: 140px;
    filter: drop-shadow(0 5px 10px rgba(0,0,0,0.5));
}
@media (max-width: 768px) {
    .hero-logo-container { top: 1rem; left: 1rem; }
    .hero-logo { width: 100px; }
}

.hero-bg {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    background-image: url('materials/jazz_hero_bg.png'); /* Linked dynamic generated image */
    background-size: cover;
    background-position: center;
    background-attachment: fixed;
    z-index: -2;
}

.hero-bg::after {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    /* Overlay for the hero to allow white text to pop on the image */
    background: linear-gradient(135deg, rgba(11, 15, 25, 0.7) 0%, rgba(8, 11, 19, 0.8) 100%),
                radial-gradient(ellipse at top right, rgba(212, 175, 55, 0.2) 0%, transparent 60%);
    z-index: -1;
}

.hero-content {
    z-index: 1;
    position: relative;
    max-width: 900px;
    color: #FFF; /* Enforce white text over the dark hero overlay */
}

.hero-title {
    font-size: 3rem;
    font-weight: 900;
    margin-bottom: 1.5rem;
    letter-spacing: -0.02em;
    text-wrap: balance;
}

.hero-subtitle {
    font-size: 1.5rem;
    color: rgba(255,255,255,0.9);
    margin-bottom: 2rem;
    font-weight: 500;
    line-height: 1.5;
}

.hero-desc {
    font-size: 1.125rem;
    margin-bottom: 2rem;
    color: rgba(255,255,255,0.8);
    max-width: 700px;
    margin-left: auto;
    margin-right: auto;
}

/* ヒーローセクション: 教則本3冊の立体配置 */
.hero-books {
    display: flex;
    justify-content: center;
    align-items: flex-end;
    gap: 0;
    perspective: 1200px;
    margin-bottom: 3rem;
    position: relative;
    height: 280px;
}
.hero-book {
    position: relative;
    transform-style: preserve-3d;
    transition: transform 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275), box-shadow 0.5s ease;
    cursor: pointer;
    z-index: 1;
}
.hero-book img {
    width: 180px;
    height: auto;
    border-radius: 4px;
    display: block;
    /* 書籍の質感を表現する内側シャドウ */
    box-shadow:
        rgba(0, 0, 0, 0.1) 4px 0px 10px 0px inset,
        rgba(255, 255, 255, 0.3) -1px 0px 2px 0px inset,
        0 15px 35px rgba(0, 0, 0, 0.4);
}
/* Vol.1 — 左 */
.hero-book-1 {
    transform: rotateY(-20deg) rotateX(5deg) translateX(30px) translateZ(-30px);
    z-index: 1;
}
.hero-book-1:hover {
    transform: rotateY(-5deg) rotateX(3deg) translateX(30px) translateZ(10px) translateY(-15px);
    z-index: 10;
}
.hero-book-1:hover img {
    box-shadow:
        rgba(0, 0, 0, 0.1) 4px 0px 10px 0px inset,
        rgba(255, 255, 255, 0.3) -1px 0px 2px 0px inset,
        0 25px 50px rgba(212, 175, 55, 0.4);
}
/* Vol.2 — 中央（最前面） */
.hero-book-2 {
    transform: rotateY(-15deg) rotateX(5deg) translateZ(0);
    z-index: 3;
}
.hero-book-2:hover {
    transform: rotateY(-3deg) rotateX(2deg) translateZ(30px) translateY(-20px);
    z-index: 10;
}
.hero-book-2:hover img {
    box-shadow:
        rgba(0, 0, 0, 0.1) 4px 0px 10px 0px inset,
        rgba(255, 255, 255, 0.3) -1px 0px 2px 0px inset,
        0 30px 60px rgba(212, 175, 55, 0.5);
}
/* Vol.3 — 右 */
.hero-book-3 {
    transform: rotateY(-10deg) rotateX(5deg) translateX(-30px) translateZ(-30px);
    z-index: 2;
}
.hero-book-3:hover {
    transform: rotateY(-2deg) rotateX(3deg) translateX(-30px) translateZ(10px) translateY(-15px);
    z-index: 10;
}
.hero-book-3:hover img {
    box-shadow:
        rgba(0, 0, 0, 0.1) 4px 0px 10px 0px inset,
        rgba(255, 255, 255, 0.3) -1px 0px 2px 0px inset,
        0 25px 50px rgba(212, 175, 55, 0.4);
}
/* モバイル対応 */
@media (max-width: 768px) {
    .hero-books {
        height: 200px;
    }
    .hero-book img {
        width: 120px;
    }
}

/* CTA Button */
.cta-button {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    background: var(--gradient-gold);
    color: #111 !important; /* Fixed dark color for button text */
    text-decoration: none;
    padding: 1rem 3rem;
    border-radius: 100px;
    font-weight: 900;
    transition: all 0.3s ease;
    box-shadow: 0 10px 25px rgba(212, 175, 55, 0.3);
    position: relative;
    overflow: hidden;
    cursor: pointer;
    border: none;
}
.btn-lg {
    padding: 1.5rem 4rem;
}
.cta-main {
    font-size: 1.25rem;
}
.btn-lg .cta-main {
    font-size: 1.5rem;
}
.cta-sub {
    font-size: 0.85rem;
    opacity: 0.8;
    margin-top: 0.25rem;
    font-weight: 700;
}
.cta-button:hover {
    transform: translateY(-3px) scale(1.02);
    box-shadow: 0 15px 35px rgba(212, 175, 55, 0.4);
}
.cta-button::after {
    content: '';
    position: absolute;
    top: 0; left: -100%;
    width: 50%; height: 100%;
    background: linear-gradient(to right, transparent, rgba(255,255,255,0.4), transparent);
    transform: skewX(-20deg);
    animation: shine 4s infinite 2s;
}

@keyframes shine {
    0% { left: -100%; }
    20% { left: 200%; }
    100% { left: 200%; }
}
@keyframes pulse {
    0% { box-shadow: 0 0 0 0 rgba(212, 175, 55, 0.4); }
    70% { box-shadow: 0 0 0 15px rgba(212, 175, 55, 0); }
    100% { box-shadow: 0 0 0 0 rgba(212, 175, 55, 0); }
}
.pulse-animation {
    animation: pulse 2s infinite;
}

/* Pain Points List */
/* 6項目を2カラムグリッドで配置 */
.pain-list {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 1.5rem;
}
.pain-item {
    display: flex;
    background: rgba(255, 255, 255, 0.8);
    border: 1px solid rgba(0,0,0,0.05);
    padding: 1.5rem;
    border-radius: var(--radius-md);
    gap: 1.5rem;
    align-items: flex-start;
}
.pain-icon {
    font-size: 1.5rem;
    color: var(--clr-error);
    margin-top: 0.2rem;
}
.pain-title {
    font-size: 1.25rem;
    font-weight: 700;
    margin-bottom: 0.5rem;
}
.pain-desc {
    color: var(--clr-text-gray);
    font-size: 0.95rem;
}

/* Grid Layouts */
.grid-3 {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 2rem;
}

/* Solution Cards */
.solution-cards {
    align-items: stretch;
}
.solution-card {
    padding: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}
.card-image-wrap {
    height: 250px;
    overflow: hidden;
    position: relative;
    background: #FFF;
}
.card-image-wrap::after {
    content:'';
    position: absolute;
    bottom:0; left:0; right:0;
    height: 100px;
    background: linear-gradient(to top, rgba(255,255,255,1), transparent);
}
.card-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: 0.9;
}
.card-content {
    padding: 2rem;
    flex-grow: 1;
}
.card-number {
    display: inline-block;
    color: var(--clr-gold-dark);
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    font-size: 0.8rem;
    margin-bottom: 1rem;
    border-bottom: 1px solid var(--clr-gold-dark);
}
.card-title {
    font-size: 1.3rem;
    margin-bottom: 1rem;
    line-height: 1.4;
}
.card-desc {
    color: var(--clr-text-gray);
    font-size: 0.95rem;
}

/* 3 Steps */
.image-full {
    width: 100%;
    max-width: 100%;
    height: auto;
    display: block;
    margin: 0 auto;
}

/* Ecosystem */
.eco-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 2rem;
}
.eco-icon {
    font-size: 2.5rem;
    margin-bottom: 1.5rem;
    text-align: center; /* アイコンを中央に */
}
.eco-title {
    font-size: 1.5rem;
    margin-bottom: 1rem;
    text-align: center; /* タイトルも中央に */
    min-height: 4.5rem; /* 2〜3行分の高さを確保して、説明文の開始位置を揃える */
    display: flex;
    align-items: center;
    justify-content: center;
}
.eco-desc {
    color: var(--clr-text-gray);
    text-align: center; /* 説明文も中央に */
}
/* 3冊の本の立体配置とホバーアクション */
.perspective-container {
    perspective: 1000px;
    position: relative;
    height: 280px;
    margin-top: 2rem;
}
.book-3d {
    position: absolute;
    width: 150px;
    left: 50%; /* 中央基準ライン */
    margin-left: -75px; /* 幅の半分戻す */
    border-radius: 6px;
    box-shadow: -5px 10px 15px rgba(0,0,0,0.2), inset 2px 0 5px rgba(255,255,255,0.5);
    transition: transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275), box-shadow 0.4s ease;
    transform-origin: bottom center;
    cursor: pointer;
}
/* 左の本 */
.book-1 {
    transform: translateX(-90px) translateZ(-40px) rotateY(20deg) rotateZ(-5deg);
    z-index: 1;
}
.book-1:hover {
    transform: translateX(-100px) translateZ(20px) rotateY(10deg) rotateZ(0deg) translateY(-10px);
    box-shadow: -8px 15px 25px rgba(212, 175, 55, 0.4);
    z-index: 4;
}
/* 中央の本 */
.book-2 {
    transform: translateX(0) translateZ(0) rotateY(0deg);
    z-index: 3;
}
.book-2:hover {
    transform: translateX(0) translateZ(40px) rotateY(0deg) translateY(-15px) scale(1.05);
    box-shadow: 0 20px 30px rgba(212, 175, 55, 0.5);
    z-index: 5;
}
/* 右の本 */
.book-3 {
    transform: translateX(90px) translateZ(-40px) rotateY(-20deg) rotateZ(5deg);
    z-index: 2;
}
.book-3:hover {
    transform: translateX(100px) translateZ(20px) rotateY(-10deg) rotateZ(0deg) translateY(-10px);
    box-shadow: 8px 15px 25px rgba(212, 175, 55, 0.4);
    z-index: 4;
}

/* Author Section */
.author-layout {
    display: grid;
    grid-template-columns: 1fr 1.3fr;
    gap: 4rem;
    align-items: stretch;
}
.author-image-col {
    position: relative; /* 子要素の絶対配置の基準 */
    min-height: 400px; /* スマートフォン等で1カラムになった際の最低高さ */
}
.author-image-wrapper {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    overflow: hidden;
    border-radius: var(--radius-lg);
    box-shadow: 0 10px 40px rgba(0,0,0,0.15);
}
.author-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: top center;
}
.author-name {
    font-size: 1.75rem;
    font-weight: 900;
    margin-bottom: 1rem;
}
.author-title {
    font-size: 1rem;
    font-weight: 400;
    color: var(--clr-text-gray);
}
.author-achievements {
    list-style: none;
}
.author-achievements li {
    margin-bottom: 0.5rem;
    font-size: 1.1rem;
}
.author-story p {
    margin-bottom: 1rem;
    color: var(--clr-text-gray);
    font-size: 1.05rem;
}

/* Reviews */
.review-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 2rem;
}
.review-icon {
    font-size: 2rem;
    color: rgba(212, 175, 55, 0.4);
    margin-bottom: 1rem;
}
.review-headline {
    font-size: 1.15rem;
    margin-bottom: 1rem;
    line-height: 1.5;
}
.review-text {
    color: var(--clr-text-gray);
    font-size: 0.95rem;
    font-style: italic;
}
.author-initials {
    display: block;
    font-weight: 700;
    color: var(--clr-text);
}
.author-inst {
    display: block;
    font-size: 0.85rem;
    color: var(--clr-text-gray);
}

/* 商品ラインナップ */
.lineup-box {
    padding: 1.5rem 2rem;
    background: rgba(255, 255, 255, 0.02);
    border: 1px dashed rgba(255, 255, 255, 0.2);
    border-radius: var(--radius-lg);
}
.lineup-list {
    list-style: none;
    padding: 0;
    max-width: 420px;
    margin: 0 auto;
}
.lineup-list li {
    padding: 0.6rem 0;
    font-size: 1.15rem;
    font-weight: 700;
    white-space: nowrap;
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}
.lineup-list li:last-child {
    border-bottom: none;
}

/* Offer Box */
.offer-box {
    border: 2px solid rgba(212, 175, 55, 0.3);
}
.highlight-bg {
    background: rgba(212, 175, 55, 0.15);
    border: 1px solid rgba(212, 175, 55, 0.3);
    color: #D4AF37;
}
.micro-copy {
    font-size: 0.85rem;
    max-width: 560px;
    line-height: 1.7;
    text-align: center;
}

/* Animations (Scroll reveal) */
.fade-in { opacity: 0; transition: opacity 0.8s ease; }
.fade-in-up { opacity: 0; transform: translateY(30px); transition: opacity 0.8s ease, transform 0.8s ease; }
.fade-in-left { opacity: 0; transform: translateX(30px); transition: opacity 0.8s ease, transform 0.8s ease; }
.fade-in-right { opacity: 0; transform: translateX(-30px); transition: opacity 0.8s ease, transform 0.8s ease; }

.is-visible {
    opacity: 1;
    transform: translate(0);
}

/* Responsive adjust */
@media (max-width: 1024px) {
    .grid-3 { grid-template-columns: repeat(2, 1fr); }
    .author-layout { grid-template-columns: 1fr; gap: 3rem; }
    .author-image-col { min-height: 500px; } /* モバイル時は高さを明確に持たせる */
    .author-image-wrapper { max-width: 500px; margin: 0 auto; }
}
@media (max-width: 768px) {
    .hero-title { font-size: 2.2rem; }
    .hero-subtitle { font-size: 1.2rem; }
    .grid-3 { grid-template-columns: 1fr; }
    .eco-grid { grid-template-columns: 1fr; }
    .review-grid { grid-template-columns: 1fr; }
    /* モバイルではpain-listを1カラムに戻す */
    .pain-list { grid-template-columns: 1fr; }
    .btn-lg { padding: 1rem 2rem; }
    .btn-lg .cta-main { font-size: 1.2rem; }
    .w-1-3 { width: 100%; margin-bottom: 1rem; }
    .eco-images { flex-direction: column; }
}
