
/* ==========================================================================
    RESET & VARIABLES
    ========================================================================== */
:root {
    --primary-color: #e80000;
    --primary-hover: #ff1a1a;
    --bg-dark: #050505;
    --bg-card: #111111;
    --bg-light-dark: #1a1a1a;
    --text-main: #ffffff;
    --text-muted: #aaaaaa;
    --font-main: "Helvetica Neue", Arial, "Hiragino Kaku Gothic ProN", "Hiragino Sans", Meiryo, sans-serif;
    --font-impact: Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif;
}

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

body {
    font-family: var(--font-main);
    background-color: var(--bg-dark);
    color: var(--text-main);
    line-height: 1.6;
    font-size: 16px;
    overflow-x: hidden;
    width: 100%;
    padding-top: 60px; 
    -webkit-font-smoothing: antialiased;
}

html { scroll-padding-top: 60px; scroll-behavior: smooth; }
a { text-decoration: none; color: inherit; transition: 0.3s ease; }
a:hover { opacity: 0.8; }
img { max-width: 100%; height: auto; display: block; }

/* ==========================================================================
    UTILITY CLASSES (NEW DESIGN)
    ========================================================================== */
.container {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 20px;
}

.section-padding {
    padding: 20px 0 20px;
}

/* 洗練された見出しデザイン */
.section-header {
    position: relative;
    text-align: center;
    margin-bottom: 60px;
}
.section-en {
    font-family: var(--font-impact);
    font-size: 4rem;
    color: rgba(255, 255, 255, 0.12);
    letter-spacing: 0.1em;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 100%;
    pointer-events: none;
    z-index: 0;
}
.section-jp {
    font-size: 1.5rem;
    font-weight: bold;
    color: var(--text-main);
    position: relative;
    z-index: 1;
    letter-spacing: 0.05em;
}
.section-jp::after {
    content: '';
    display: block;
    width: 50px;
    height: 3px;
    background-color: var(--primary-color);
    margin: 15px auto 0;
}

@media (min-width: 768px) {
    .section-en { font-size: 6rem; }
    .section-jp { font-size: 2rem; }
    .section-padding { padding: 30px 0 30px; }
}

/* プライマリーボタン */
.btn-primary {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background-color: transparent;
    border: 2px solid var(--primary-color);
    color: var(--text-main);
    padding: 16px 40px;
    font-size: 1rem;
    font-weight: bold;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    border-radius: 4px;
    transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
    cursor: pointer;
    position: relative;
    overflow: hidden;
    z-index: 1;
}
.btn-primary::before {
    content: '';
    position: absolute;
    top: 0; left: 0; width: 0%; height: 100%;
    background-color: var(--primary-color);
    transition: width 0.3s ease;
    z-index: -1;
}
.btn-primary:hover::before { width: 100%; }
.btn-primary:hover { color: #fff; box-shadow: 0 4px 20px rgba(232, 0, 0, 0.4); transform: translateY(-3px); }

/* ==========================================================================
    HEADER & FOOTER (EXISTING CODE - DO NOT CHANGE)
    ========================================================================== */
.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)}

.footer{background-color:#111;color:#ccc;padding:50px 0 20px;margin-top:0;font-size:.9rem;border-top:3px solid #e80000}.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}}

/* ==========================================================================
    HERO SECTION
    ========================================================================== */
.hero {
    position: relative;
    width: 100%;
    height: 85vh;
    min-height: 600px;
    overflow: hidden;
    background: var(--bg-dark);
    display: flex;
    align-items: center;
    justify-content: center;
}
.hero-slide {
    position: absolute; top: 0; left: 0; width: 100%; height: 100%;
    opacity: 0; animation: slideAnimation 18s infinite; z-index: 1;
}
.hero-slide img { width: 100%; height: 100%; object-fit: cover; }
.hero-slide::after {
    content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%;
    background: linear-gradient(135deg, rgba(0,0,0,0.8) 0%, rgba(0,0,0,0.4) 50%, rgba(0,0,0,0.8) 100%);
}
.slide-1 { animation-delay: 0s; }
.slide-2 { animation-delay: 6s; }
.slide-3 { animation-delay: 12s; }
@keyframes slideAnimation {
    0% { opacity: 0; transform: scale(1); }
    5%, 33% { opacity: 1; transform: scale(1.02); }
    38% { opacity: 0; transform: scale(1.05); }
    100% { opacity: 0; }
}
.hero-content {
    position: relative; z-index: 10;
    text-align: center; color: var(--text-main); width: 90%; max-width: 900px;
}
.hero-subtitle {
    font-family: var(--font-impact);
    font-size: 3rem; letter-spacing: 0.1em; margin-bottom: 10px;
    color: transparent;
    -webkit-text-stroke: 1px var(--primary-color);
    text-shadow: 0 0 20px rgba(232, 0, 0, 0.3);
    text-transform: uppercase;
}
.hero-title {
    font-size: 1.5rem; font-weight: 800; letter-spacing: 0.05em; margin-bottom: 40px;
    line-height: 1.4; text-shadow: 0 4px 10px rgba(0,0,0,0.8);
}
.hero-note {
    display: inline-block;
    margin-top: 25px; font-size: 0.9rem; color: #ddd; line-height: 1.6;
    background: rgba(0,0,0,0.6); padding: 10px 20px; border-radius: 4px;
    border-left: 3px solid var(--primary-color);
}
.hero-note .highlight-text { color: #ff4b4b; font-weight: bold; }

@media(min-width:768px){
    .hero-subtitle { font-size: 5rem; -webkit-text-stroke: 2px var(--primary-color); }
    .hero-title { font-size: 2.2rem; }
    .hero-note { font-size: 1rem; }
}

/* ==========================================================================
    CLASSES SECTION
    ========================================================================== */
.class-section { background-color: var(--bg-dark); }
.class-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 20px;
    margin-bottom: 50px;
}
.class-item {
    position: relative;
    height: 300px;
    border-radius: 8px;
    overflow: hidden;
    display: block;
    box-shadow: 0 10px 30px rgba(0,0,0,0.8);
}
.class-item img {
    width: 100%; height: 100%; object-fit: cover;
    transition: transform 0.7s cubic-bezier(0.25, 0.8, 0.25, 1);
}
.class-overlay {
    position: absolute; inset: 0;
    background: linear-gradient(to top, rgba(0,0,0,0.9) 0%, rgba(0,0,0,0.2) 60%, rgba(0,0,0,0) 100%);
    transition: background 0.4s ease;
    display: flex; align-items: flex-end; justify-content: center;
    padding-bottom: 30px;
}
.class-item h3 {
    color: #fff; font-size: 1.3rem; font-weight: bold; letter-spacing: 0.1em;
    text-transform: uppercase; margin: 0;
    transition: transform 0.4s ease;
}
.class-item:hover img { transform: scale(1.15); }
.class-item:hover .class-overlay { background: linear-gradient(to top, rgba(232,0,0,0.9) 0%, rgba(232,0,0,0.4) 60%, rgba(0,0,0,0) 100%); }
.class-item:hover h3 { transform: translateY(-10px); }
.class-action { text-align: center; }
.class-text { margin-bottom: 25px; color: var(--text-muted); }

/* ==========================================================================
    FACILITIES SECTION
    ========================================================================== */
.facilities-section { background-color: var(--bg-card); border-top: 1px solid #222; border-bottom: 1px solid #222;}
.facility-row {
    display: flex;
    flex-direction: column;
    gap: 30px;
    margin-bottom: 60px;
    align-items: center;
}
.facility-row:last-child { margin-bottom: 0; }
.facility-img {
    width: 100%;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 15px 30px rgba(0,0,0,0.5);
    position: relative;
}
.facility-img::after {
    content: ''; position: absolute; inset: 0; border: 1px solid rgba(255,255,255,0.1); border-radius: 12px; pointer-events: none;
}
.facility-img img { width: 100%; height: auto; aspect-ratio: 16/10; object-fit: cover; transition: transform 0.5s;}
.facility-row:hover .facility-img img { transform: scale(1.05); }
.facility-content { width: 100%; }
.facility-content h3 {
    font-size: 1.8rem; font-family: var(--font-impact); letter-spacing: 0.05em; color: var(--text-main); margin-bottom: 15px;
    display: flex; align-items: center;
}
.facility-content h3::before {
    content: ''; display: inline-block; width: 4px; height: 1.2em; background-color: var(--primary-color); margin-right: 15px;
}
.facility-content p { color: var(--text-muted); font-size: 1rem; line-height: 1.8; }

@media (min-width: 768px) {
    .facility-row { flex-direction: row; gap: 60px; margin-bottom: 100px; }
    .facility-row:nth-child(even) { flex-direction: row-reverse; }
    .facility-img { width: 55%; }
    .facility-content { width: 45%; padding: 20px 0; }
    .facility-content h3 { font-size: 2.5rem; }
}

/* ==========================================================================
    PLAN SECTION
    ========================================================================== */
.plan-section {
    background: radial-gradient(circle at center, var(--bg-light-dark) 0%, var(--bg-dark) 100%);
}
.plan-grid {
    display: flex; flex-wrap: wrap; justify-content: center; gap: 40px; align-items: stretch;
}
.plan-card {
    background: var(--bg-card);
    border: 1px solid rgba(255,255,255,0.05);
    border-radius: 16px;
    padding: 50px 30px;
    width: 100%;
    max-width: 400px;
    box-shadow: 0 10px 40px rgba(0,0,0,0.6);
    position: relative;
    display: flex; flex-direction: column;
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.plan-card:hover { transform: translateY(-10px); box-shadow: 0 20px 50px rgba(0,0,0,0.8); }
.plan-card.recommended {
    border: 2px solid var(--primary-color);
    background: linear-gradient(180deg, rgba(232,0,0,0.05) 0%, var(--bg-card) 100%);
    transform: scale(1);
}
@media (min-width: 992px) {
    .plan-card.recommended { transform: scale(1.05); z-index: 2; }
    .plan-card.recommended:hover { transform: scale(1.05) translateY(-10px); }
}
.plan-badge {
    position: absolute; top: 0; left: 50%; transform: translate(-50%, -50%);
    background: #333; color: #fff; font-size: 0.8rem; font-weight: bold; letter-spacing: 0.1em;
    padding: 8px 24px; border-radius: 30px; border: 1px solid #555; white-space: nowrap;
}
.plan-card.recommended .plan-badge {
    background: var(--primary-color); border: none; box-shadow: 0 4px 15px rgba(232,0,0,0.5);
}
.plan-desc { text-align: center; color: var(--text-muted); font-size: 0.9rem; margin-bottom: 10px; }
.plan-name { text-align: center; font-size: 1.4rem; font-weight: bold; margin-bottom: 20px; }
.plan-price-wrap { text-align: center; margin-bottom: 30px; }
.plan-price { font-size: 3rem; font-weight: 900; line-height: 1; font-family: var(--font-impact); letter-spacing: 0.02em; }
.plan-tax { font-size: 1rem; font-weight: normal; font-family: var(--font-main); color: var(--text-muted); }
.plan-note { display: block; font-size: 0.85rem; color: var(--primary-color); font-weight: bold; margin-top: 5px; }
.plan-divider { height: 1px; background: rgba(255,255,255,0.1); margin: 0 0 30px 0; }
.plan-features { list-style: none; flex-grow: 1; }
.plan-features li {
    position: relative; padding-left: 30px; margin-bottom: 15px; color: #ddd; font-size: 0.95rem; line-height: 1.5;
}
.plan-features li::before {
    content: '✔'; position: absolute; left: 0; top: 2px; color: var(--primary-color); font-size: 1.1rem;
}
.plan-action { margin-top: 60px; text-align: center; }

/* ==========================================================================
    REVIEWS SECTION
    ========================================================================== */
.reviews-section { background-color: var(--bg-card); border-top: 1px solid #222; border-bottom: 1px solid #222; }
.reviews-container { max-width: 1000px; margin: 0 auto; min-height: 200px; }

/* ==========================================================================
    BLOG SECTION
    ========================================================================== */
.blog-section { background-color: var(--bg-dark); }
.blog-grid { display: grid; gap: 30px; grid-template-columns: 1fr; }
@media (min-width: 768px) { .blog-grid { grid-template-columns: repeat(3, 1fr); } }
.blog-card {
    background: var(--bg-card);
    border-radius: 12px;
    overflow: hidden;
    border: 1px solid rgba(255,255,255,0.05);
    transition: all 0.3s ease;
    display: flex; flex-direction: column;
    height: 100%;
}
.blog-card:hover {
    transform: translateY(-8px); border-color: rgba(232,0,0,0.5); box-shadow: 0 15px 30px rgba(0,0,0,0.6);
}
.blog-img { width: 100%; aspect-ratio: 16 / 10; overflow: hidden; position: relative; }
.blog-img img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.6s ease; }
.blog-card:hover .blog-img img { transform: scale(1.1); }
.blog-category {
    position: absolute; top: 15px; left: 15px; background: var(--primary-color); color: #fff;
    font-size: 0.75rem; font-weight: bold; padding: 4px 12px; border-radius: 4px; letter-spacing: 0.05em; z-index: 2;
}
.blog-content { padding: 25px; display: flex; flex-direction: column; flex-grow: 1; }
.blog-date { font-size: 0.85rem; color: var(--text-muted); margin-bottom: 10px; font-family: Impact, sans-serif; letter-spacing: 0.05em;}
.blog-title {
    font-size: 1.1rem; font-weight: bold; line-height: 1.5; color: var(--text-main);
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.blog-action { text-align: center; margin-top: 50px; }

/* ==========================================================================
    Q&A SECTION
    ========================================================================== */
.qa-section { background-color: var(--bg-card); border-top: 1px solid #222; }
.faq-container { max-width: 800px; margin: 0 auto; }
.faq-item {
    border-bottom: 1px solid rgba(255,255,255,0.1);
}
.faq-question {
    padding: 25px 0; cursor: pointer; display: flex; justify-content: space-between; align-items: center;
    font-weight: bold; color: var(--text-main); font-size: 1.1rem; transition: color 0.3s;
}
.faq-question:hover { color: var(--primary-color); }
.faq-icon {
    width: 24px; height: 24px; position: relative; flex-shrink: 0; margin-left: 20px;
}
.faq-icon::before, .faq-icon::after {
    content: ''; position: absolute; background-color: var(--primary-color);
    top: 50%; left: 50%; transform: translate(-50%, -50%); transition: transform 0.3s ease;
}
.faq-icon::before { width: 16px; height: 2px; }
.faq-icon::after { width: 2px; height: 16px; }
.faq-item.active .faq-icon::after { transform: translate(-50%, -50%) rotate(90deg); opacity: 0; }

.faq-answer {
    max-height: 0; overflow: hidden; transition: max-height 0.4s cubic-bezier(0, 1, 0, 1);
}
.faq-item.active .faq-answer { transition: max-height 0.5s ease-in-out; }
.faq-answer-inner {
    padding: 0 0 30px 0; color: var(--text-muted); font-size: 1rem; line-height: 1.7;
}
.faq-answer-inner p { margin: 0; }

/* ==========================================================================
    REVIEWS SECTION
    ========================================================================== */
.reviews-section { background-color: var(--bg-card); border-top: 1px solid #222; border-bottom: 1px solid #222; }

/* レビュー用のグリッドレイアウト */
.reviews-grid {
    display: grid;
    gap: 30px;
    grid-template-columns: 1fr;
}
@media (min-width: 768px) {
    .reviews-grid { grid-template-columns: repeat(3, 1fr); }
}

/* レビューカードのデザイン */
.review-card {
    background: var(--bg-dark);
    border: 1px solid rgba(255,255,255,0.05);
    border-radius: 12px;
    padding: 30px;
    box-shadow: 0 10px 30px rgba(0,0,0,0.5);
    display: flex;
    flex-direction: column;
    transition: transform 0.3s ease, border-color 0.3s ease;
}
.review-card:hover {
    transform: translateY(-5px);
    border-color: rgba(232,0,0,0.3);
}
.review-stars {
    color: var(--primary-color);
    font-size: 1.2rem;
    margin-bottom: 15px;
    letter-spacing: 2px;
}
.review-text {
    color: var(--text-muted);
    font-size: 0.95rem;
    line-height: 1.7;
    margin-bottom: 20px;
    flex-grow: 1;
}
.review-author {
    color: var(--text-main);
    font-weight: bold;
    font-size: 0.9rem;
    text-align: right;
}