* { box-sizing: border-box; margin: 0; padding: 0; }

body {
    font-family: "Helvetica Neue", Arial, "Hiragino Kaku Gothic ProN", "Hiragino Sans", Meiryo, sans-serif;
    background-color: rgb(1,1,1);
    line-height: 1.6;
    font-size: 16px;
    overflow-x: hidden;
    width: 100%;
    padding-top: 60px; 
}

a { text-decoration: none; color: inherit; transition: 0.3s; }
a:hover { opacity: 0.8; }
img { max-width: 100%; height: auto; display: block; }

/* --- Header  --- */
.header{background-color:#111;position:fixed;top:0;left:0;width:100%;height:60px;z-index:1000;box-shadow:0 2px 5px rgba(0,0,0,.5)}.header-inner{max-width:1320px;width:100%;height:100%;margin:0 auto;display:flex;align-items:center;justify-content:space-between;padding:0 20px}.logo{font-family:Impact,Haettenschweiler,'Arial Narrow Bold',sans-serif;font-weight:600;font-size:1.4rem;color:#fff;white-space:nowrap}.header-actions{display:flex;align-items:center;height:100%;gap:15px}.instagram{height:36px;width:36px;display:block}.instagram img{height:100%;width:100%;object-fit:contain}.header-btn{background-color:transparent;color:#fff;font-size:1.8rem;padding:0;line-height:1;border:none;cursor:pointer;display:flex;align-items:center}.admission{width:70px;height:60px;text-align:center;background-color:#e80000;display:flex;flex-direction:column;align-items:center;justify-content:center;margin-right:-20px;color:#fff}.admission img{width:24px;height:24px;margin-bottom:4px}.admission p{margin:0;font-size:10px;line-height:1;font-weight:700}.menu{background:#000;position:fixed;top:0;right:-250px;width:250px;height:100%;z-index:2000;transition:.3s;padding-top:60px;box-shadow:-2px 0 5px rgba(0,0,0,.5);overflow-y:auto}.menu a{display:flex;align-items:center;padding:15px 20px;font-size:16px;color:#fff;border-bottom:1px solid #333;transition:background .3s}.menu a:hover{background:#0b43dc}.overlay{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.5);z-index:1500;backdrop-filter:blur(2px)}

/* --- Breadcrumb --- */
.breadcrumb {
    max-width: 1100px;
    margin: 20px auto 0;
    padding: 0 20px;
    font-size: 0.8rem;
    color: var(--gray);
}
.breadcrumb ol {
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    gap: 5px 0;
}
.breadcrumb li {
    display: inline-flex;
    align-items: center;
}
.breadcrumb li:not(:last-child)::after {
    content: '>';
    margin: 0 8px;
    color: #ccc;
    font-size: 0.7rem;
}
.breadcrumb a { color: white; text-decoration: underline; }
.breadcrumb li:last-child { color: yellow; font-weight: 500; pointer-events: none; }

/* body*/
.container { max-width: 1100px; margin: 0 auto; padding: 0 20px;
}
.text-center { text-align: center; color: white;}
.mb-40 { margin-bottom: 40px; }
.section-spacing { padding: 30px 0; }

/* 見出しスタイル */
.section-title {font-size: 1.8rem; text-align: center; margin-bottom: 4.5rem; text-transform: uppercase; letter-spacing: 2px; color: white;
}
.section-title span {border-bottom: 3px solid yellow;  padding-bottom: 10px;
}
.section-desc {max-width: 700px; margin: 0 auto; font-size: 0.95rem; color: white; padding: 0 5px;
}

/* ボタン */
.btn-primary {display: inline-block; background-color: yellow; 
    color: #000000; padding: 14px 30px; font-weight: bold; font-size: 1rem; border-radius: 5px; transition: transform 0.2s, box-shadow 0.2s;
}
.btn-primary:hover {transform: translateY(-3px); box-shadow: 0 5px 15px rgba(255, 204, 0, 0.4); opacity: 1; 
}

/* --- 1. ヒーローセクション --- */
.hero {
    position: relative; width: 100%; height: 80vh; min-height: 500px; overflow: hidden; display: flex; align-items: center;
    justify-content: center; text-align: center; color: #ffffff;
}
/* 画像コンテナ */
.hero-media {position: absolute; top: 0; left: 0; width: 100%;
    height: 100%; z-index: 1;
}
/* オーバーレイ（画像を暗くする） */
.hero-media::after {content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); /* 黒の半透明 */
}
/* 画像本体 */
.hero-img { width: 100%; height: 100%; object-fit: cover; object-position: center; will-change: transform; animation: slowZoom 10s ease-out forwards;
}
/* コンテンツ */
.hero-content {position: relative; z-index: 2; padding: 0 20px; width: 100%; max-width: 600px; font-weight: 600;
}

.hero-content p { font-size: 2.8rem; line-height: 1.1; margin: 0 0 16px 0; font-style: italic; opacity: 0; animation: fadeInUp 0.8s ease-out 0.3s forwards;
}
.hero-content h1 { font-size: 1rem; margin-bottom: 32px; opacity: 0; animation: fadeInUp 0.8s ease-out 0.5s forwards;
font-weight: 300;
}
.hero-content .btn-primary { opacity: 0; animation: fadeInUp 0.8s ease-out 0.7s forwards;
}

/* --- 2. ワークアウト (Grid) --- */
.workout-grid {display: grid;grid-template-columns: repeat(2, 1fr); gap: 15px;
}
.workout-item {background: #2a2a2a; padding: 15px; text-align: center; border-radius: 8px; font-size: 0.9rem;
}
.workout-item a{font-weight: bold; text-transform: uppercase;color: yellow; 
}

/* --- 3. ナレッジハブ (Grid) --- */
.knowledge-hub {
    background-color: #222222; /* セクション背景 */
}

/* --------------------------------
   グリッドレイアウト（ここが肝）
   -------------------------------- */
.blog-grid {
    display: grid;
    gap: 30px; /* カード間の隙間 */
    /* スマホは1列、PC(768px以上)は3列にする設定 */
    grid-template-columns: 1fr; 
}
@media (min-width: 768px) {
    .blog-grid {
        grid-template-columns: repeat(3, 1fr);
    }
}
/* --------------------------------
   カードのデザイン
   -------------------------------- */
.blog-card {
    background: #393939; /* カードの背景色 */
    text-decoration: none; /* リンクの下線を消す */
    color: #fff;
    display: block;
    border-radius: 8px;
    overflow: hidden; /* はみ出した画像を隠す */
    transition: transform 0.3s; /* ホバー時の動き */
}

/* ホバーした時に少し浮き上がる */
.blog-card:hover {
    transform: translateY(-5px);
}

/* 画像エリア */
.blog-img {
    width: 100%;
    aspect-ratio: 16 / 9; /* 画像の比率を16:9に固定 */
    overflow: hidden;
}

.blog-img img {
    width: 100%;
    height: 100%;
    object-fit: cover; /* 画像を枠いっぱいに表示 */
    transition: transform 0.5s; /* 画像拡大のスピード */
}
.blog-card:hover .blog-img img {
    transform: scale(1.1);
}

/* テキストエリア */
.blog-content {
    padding: 20px;
}

.blog-content time {
    font-size: 0.85rem;
    color: #aaa;
    margin-right: 10px;
}

.category {
    font-size: 0.75rem;
    background: #444;
    padding: 3px 8px;
    border-radius: 4px;
    vertical-align: middle;
}

.blog-title {
    font-size: 1rem;
    margin-top: 10px;
    line-height: 1.5;
    font-weight: bold;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.view-all {
    text-align: center;
    margin-top: 50px;

}
.rectangle-btn {border: 1px solid white; padding: 10px 20px; margin: auto; display: block; width: fit-content; color: white; transition: all 0.3s ease;
}
.rectangle-btn:hover {background-color: white; color: black;           
}

/* --- 4. CTA --- */
.cta-section {
    background: linear-gradient(45deg, #222222, #111111);
}

/* --- アニメーション定義 --- */
@keyframes fadeInUp {
    from { opacity: 0; transform: translateY(20px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes slowZoom {
    from { transform: scale(1.1); }
    to { transform: scale(1.0); }
}

.fade-in {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 0.8s, transform 0.8s;
}
.fade-in.visible {
    opacity: 1;
    transform: translateY(0);
}

/* --- PC・タブレット向け上書き設定 (768px以上) --- */
@media (min-width: 768px) {
    .section-spacing { padding: 80px 0; }
    .section-title { font-size: 2.5rem; }
    .section-desc { font-size: 1.1rem; }
    .btn-primary { padding: 15px 40px; font-size: 1.1rem; }

    /* Hero */
    .hero { height: 85vh; }
    .hero-content h1 { font-size: 1.25rem; margin-bottom: 24px; }
    .hero-content p { font-size: 4.5rem; }
    .hero-content h1 br, .hero-content p br { display: none; } /* 改行を消す */

    /* Workouts: 4列 */
    .workout-grid {
        grid-template-columns: repeat(4, 1fr); 
        gap: 20px;
    }
    .workout-item { padding: 25px; transition: transform 0.3s; }
    .workout-item:hover { transform: scale(1.05); background: #333333; }

    /* Hub: 3列 */
    .hub-grid {
        grid-template-columns: repeat(3, 1fr); 
    }
    .hub-card:hover { border-color: #ffcc00; }
}






/* --------------------
Footer Styles (Mobile First Optimized)
-------------------- */
.footer{background-color:#111;color:#ccc;padding:50px 0 20px;margin-top:60px;font-size:.9rem;border-top:3px solid #222}.footer-inner{max-width:1200px;margin:0 auto;padding:0 20px;display:flex;flex-wrap:wrap;justify-content:space-between;gap:40px}.footer-col{flex:1;min-width:280px}.footer-title{color:#fff;font-size:1.1rem;font-weight:700;margin-bottom:20px;border-left:4px solid #e80000;padding-left:12px;letter-spacing:.05em}.footer-logo{font-family:Impact,sans-serif;color:#fff;font-size:1.8rem;margin-bottom:15px;line-height:1}.footer-desc{margin-bottom:20px;font-size:.85rem;color:#aaa}.footer-sns{display:flex;gap:15px}.footer-sns a{width:44px;height:44px;transition:opacity .3s}.footer-nav{list-style:none;padding:0;columns:2;column-gap:20px}.footer-nav li{margin-bottom:12px}.footer-nav a{color:#ccc;text-decoration:none;display:block;transition:color .3s;font-size:.9rem}.footer-nav a:hover{color:#e80000}.shop-details{margin-bottom:20px}.address{color:#fff;margin-bottom:15px;line-height:1.6}.hours-box{display:inline-block;background:#222;padding:8px 15px;border-radius:4px;margin-bottom:15px;border:1px solid #333}.hours-box .label{color:#e80000;font-weight:700;font-size:.8rem;margin-right:8px}.hours-box .time{color:#fff;font-weight:700}.tel-btn{display:flex;align-items:center;justify-content:center;background-color:#fff;color:#000;font-weight:700;text-decoration:none;padding:12px;border-radius:50px;margin-top:10px;max-width:260px;transition:background .3s;box-shadow:0 4px 6px rgba(0,0,0,.3)}.tel-btn:hover{background-color:#ddd;opacity:1}.tel-btn .icon{margin-right:10px;font-size:1.2rem}.map-container{width:100%;margin:20px 0;border-radius:8px;overflow:hidden;box-shadow:0 4px 10px rgba(0,0,0,.5);background:#222}.map-container iframe{vertical-align:bottom;filter:grayscale(20%) contrast(1.1)}.access-text{margin-top:15px;font-size:.85rem}.access-item{margin-bottom:12px;border-bottom:1px dashed #333;padding-bottom:12px}.access-item:last-child{border-bottom:none}.access-item strong{color:#fff;display:block;margin-bottom:4px}.access-item p{color:#aaa;margin:0;line-height:1.5}.footer-bottom{margin-top:40px;padding-top:20px;border-top:1px solid #222;text-align:center}.copyright{color:#555;font-size:.75rem;margin:0}@media(min-width:768px){.footer-col.info-col{flex:1.3}.footer-nav{columns:1}.tel-btn{display:inline-flex;width:auto;padding:10px 25px}}