@charset "utf-8";

/* ==========================================
   1. 基本設定（レイアウト崩れ防止・通常配置）
   ========================================== */
body {
    margin: 0;
    font-family: sans-serif;
    scroll-behavior: smooth;
    min-height: 100vh;
    color: #333;
   
}

/* ヘッダー・メニュー固定 */
header { 
    position: fixed; 
    top: 0; 
    width: 100%; 
    background:  #F4FAF8; 
    color: white; 
    padding: 10px; 
    text-align: center; 
    z-index: 2000;
}
header a { 
    color: white; 
    margin: 0 15px; 
    text-decoration: none; 
}

/* ==========================================
   2. コンセプトページのレイアウト
   ========================================== */
#Concept {
    max-width: 1000px; 
    margin: 80px auto; 
    padding: 0 20px;
    box-sizing: border-box;
}

.concept-ttl {
    text-align: center;
    font-size: 2rem;
    text-transform: uppercase;
    letter-spacing: 0.2em; 
    margin-bottom: 50px;
    color: #2F4F4F;
}


/* PC時は横並びにする共通の箱 */
.item-container {
    display: flex;
    align-items: center; 
    gap: 8%;            
}

.item-image {
    flex: 1;
    width: 50%;
}
.item-image img {
    display: block;
    width: 100%;
    height: auto;
    object-fit: cover;
    border-radius: 50px;
}

.item-text {
    flex: 1;
    width: 50%;
    
}
.item-text h2 {
    font-size: 1.5rem;
    margin-bottom: 30px;
    color: #333;
    letter-spacing: 0.05em;
    
}

.concept-lead {
    font-size: 1.1rem;
    line-height: 2.2;
    margin-bottom: 30px;
    color: #333;
}

/* --- 「もっと読む」 --- */
.more-details {
    margin-top: 20px;
}
/* 矢印（三角マーカー）を消去 */
.more-details summary::-webkit-details-marker {
    display: none;
}
.more-button {
    display: inline-block;
    padding: 12px 40px;
    border: 1px solid #2F4F4F;
    background-color: transparent;
    color: #2F4F4F;
    font-size: 0.9rem;
    cursor: pointer;
    text-align: center;
    transition: all 0.3s ease;
    list-style: none; /* Firefox用 */
}
.more-button:hover {
    background-color: #2F4F4F;
    color: #fff;
}

/* ボタンを開いた時の文字。隙間を40pxに広げて調整 */
.more-content {
    margin-top: 40px; 
    font-size: 16px;
    line-height: 2;
    color: #555;
    animation: fadeIn 0.5s ease;
}
/* セクション全体の調整 */
#Concept {
  padding: 60px 20px;
  max-width: 1200px;
  margin: 0 auto;
  font-family: "Helvetica Neue", Arial, "Hiragino Kaku Gothic ProN", "Hiragino Sans", sans-serif;
  
  /* ▼ ここを追加（固定ヘッダーの高さ＋余白の数値を指定します） */
  scroll-margin-top: 90px; 
}
/* ==========================================
   3. アバウトページのレイアウト（左右交互・反転）
   ========================================== */
#about {
    max-width: 1000px; 
    margin: 80px auto;
    padding: 0 20px;
    box-sizing: border-box;
}

.about-ttl {
    text-align: center;
    font-size: 2rem;
    text-transform: uppercase;
    letter-spacing: 0.2em;
    margin-bottom: 60px;
    color: #2F4F4F;
}
/* 各要素の間の縦のゆったりとした隙間 */
#about .item-container {
    margin-bottom: 100px; 
}

/* PCの画面サイズ時のみ、左右交互に反転させる設定 */
#about .item-container.reverse {
    flex-direction: row-reverse; 
}

#about .item-image {
    flex: 1;
    width: 50%;
}
#about .item-image img {
    display: block;
    width: 100%;
    height: auto;
    object-fit: cover;
}

#about .item-text {
    flex: 1;
    width: 50%;
}
#about .item-text h2 {
    font-size: 1.5rem;
    margin-bottom: 25px;
    color: #333;
    letter-spacing: 0.05em;
}
/* about　本文間隔全体調整 */
.about-body-text {
    font-size: 1rem;
    line-height: 2.2;
    color: #555;
}
/* 英語のテキストと左右の極細線 */
.en-text {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
  color: #2F4F4F;
  letter-spacing: 0.3em;
  margin-bottom: 8px;
}

.en-text::before,
.en-text::after {
  content: "";
  flex-grow: 1;
  max-width: 30px;
  height: 1px;
  background-color: #B3CBCB;
}
.en-text::before { margin-right: 10px; }
.en-text::after { margin-left: 10px; }



.crayon-line {
  /* 線の色と太さの基本設定 */
  background: linear-gradient(transparent 60%, #ffdf33 60%);
  
  /* クレヨン特有のガタガタした質感を表現 */
  box-shadow: 
    0 4px 1px -1px #ffdf33, 
    1px 6px 2px -1px #fff077, 
    -1px 5px 1px -1px #ffdf33;
    
  /* 線の位置調整 */
  padding: 0 2px;
}
/* セクション全体の調整 */
#about {
  padding: 60px 20px;
  max-width: 1200px;
  margin: 0 auto;
  font-family: "Helvetica Neue", Arial, "Hiragino Kaku Gothic ProN", "Hiragino Sans", sans-serif;
  
  /* ▼ ここを追加（固定ヘッダーの高さ＋余白の数値を指定します） */
  scroll-margin-top: 90px; 
}

/* ==========================================
   4. class・contactレイアウト（共通追加）
   ========================================== */
/* アバウトページと同じ横並び・レスポンシブの基盤を設定 */
#class, #contact {
    max-width: 1000px; 
    margin: 80px auto;
    padding: 0 20px;
    box-sizing: border-box;
}

/* 見出しのスタイルを共通化 */
.class-ttl, .contact-ttl {
    text-align: center;
    font-size: 2rem;
    text-transform: uppercase;
    letter-spacing: 0.2em;
    margin-bottom: 60px;
    color: #2F4F4F;
}

/* 【追加】PCでのリンク飛びズレ対策 */
.class-ttl {
    scroll-margin-top: 100px; /* PC用固定ヘッダーの高さ */
}

/* リンクボタンのスタイル（レイアウトを崩さないブロック配置） */
.section-link {
    display: inline-block;
    margin-top: 20px;
    padding: 10px 25px;
    background-color: #2F4F4F;
    color: #fff;
    text-decoration: none;
    font-size: 14px;
    letter-spacing: 0.1em;
    transition: background-color 0.3s;
}

.section-link:hover {
    background-color: #437070;
}


/* ==========================================
   4. classレイアウト
   ========================================== */

.retreat-text::before {
  content: "🌿"; /* ハーブの絵文字 */
  margin-right: 0.5em; /* 文字との隙間 */
  font-size: 1.0em; /* 必要に応じてサイズを調整 */
}

/* ボックス全体の共通デザイン */
.retreat-box {
    background-color: #f0f4f1; /* 優しい薄緑 */
    border-left: 4px solid #4a5d4e; /* 深緑の左線 */
    padding: 20px;
    border-radius: 4px;
    margin: 30px 0;
}

/* コース名（見出し）のデザイン */
.retreat-title {
    font-size: 1.1rem;
    font-weight: bold;
    color: #4a5d4e; /* 左線と同じ深緑 */
    margin-top: 0;
    margin-bottom: 10px;
}

/* 本文テキストの余白調整 */
.about-body-text {
    margin: 0;
    line-height: 1.6;
}




   
/* ==========================================
   5. 地図・テーブルのレイアウト
   ========================================== */


/* 1. 表と地図を横並びにする設定 */
.flex-container {
    display: flex;
    gap: 40px;            /* 表と地図の間のスキマ */
    align-items: flex-start;
    font-family: sans-serif;
}

/* 左側ブロックの幅調整 */
.table-area {
    flex: 1;
    max-width: 450px;
}

/* 2. 表（テーブル）に線を引く設定 */
.bordered-table {
    border-collapse: collapse; /* 隣り合う線を1本にする */
    width: 100%;
}

/* 表のセルに対して「下の線だけ」を設定 */
.bordered-table th, 
.bordered-table td {
    border-bottom: 2px solid #2F4F4F; /* 下の横線 */
    padding: 12px 10px;               /* 上下の余白 */
    text-align: left;
    vertical-align: top;
    font-size: 15px;
}


/* 一番上のセルだけ、上に線を引く */
.bordered-table tr:first-child th,
.bordered-table tr:first-child td {
    border-top: 2px solid #2F4F4F;
}
/* 表の左側（項目名）の設定 */
.bordered-table th {
    width: 30%;
    font-weight: bold;
    white-space: nowrap;       /* 文字の途中で勝手に改行させない */
}

/* テーブルの下のテキスト（craft pono 概要） */
.table-caption {
    margin-top: 15px;
    font-size: 14px;
    color: #333;
}
/* 3. 地図エリアの設定 */
.map-area {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;                 /* ボタンと地図の間のスキマ */
}

/* 「マップで開く」ボタンのスタイル */
.map-btn {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 6px 14px;
    border: 1px solid #4a90e2;
    color: #4a90e2;
    text-decoration: none;
    font-size: 13px;
    background-color: #fff;
}
.map-btn:hover {
    background-color: #f0f7ff;
}

/* Googleマップの枠（画像と同じ正方形に近いサイズ感に固定） */
.map-container {
    width: 360px;              
    height: 270px;
    border: 1px solid #ccc;
}

.map-container iframe {
    width: 100%;
    height: 100%;
}
/* ==========================================
   5. フッターのレイアウト（最下部へ配置）
   ========================================== */
.site-footer {
    width: 100%;
    color: #333;
    padding: 40px 0 20px 0;      
    text-align: center;
    background-color:  #F4FAF8;  
    
    margin-top: 80px; /* aboutセクションとの隙間を確保 */
}

/* snsロゴ・リスト */
ul {
    display: flex;
    justify-content: center;
    padding-left: 0;            
    margin-top: 15px;
}
li { 
    display: inline-block;
    list-style-type: none;
}
.footer-logo2 {
    margin: 0 15px;             
}

/* 

/* SNSのロゴ画像をすべて「深いグリーン（深緑）」に変換する */
.footer-logo2 img {
    /* 1. 画像を一度真っ白にする */
    filter: brightness(0) invert(1) 
            /* 2. 白い画像に緑のカラーフィルターをかける */
            sepia(1) hue-rotate(85deg) saturate(3) brightness(0.4);
    
    transition: transform 0.2s, opacity 0.2s; /* ホバー時のアニメーション用 */
}

/* マウスを乗せたときに少し明るくして、クリックできる感を出す演出 */
.footer-logo2 img:hover {
    transform: scale(1.1);
    filter: brightness(0) invert(1) 
            sepia(1) hue-rotate(85deg) saturate(3) brightness(0.6); /* 少し明るい緑に */
}
/* ==========================================
   6. タブレット・スマートフォン用（レスポンシブ）
   ========================================== */
@media screen and (max-width: 768px) {
    /* 全体の余白・見出しサイズの縮小 */
    #Concept, #about, #class, #contact { /* ★ここに #class と #contact を追加 */
        margin: 50px auto;
    }
    .concept-ttl, .about-ttl, .class-ttl, .contact-ttl { /* ★ここに .class-ttl と .contact-ttl を追加 */
        margin-bottom: 30px;
        font-size: 1.6rem;
    }
    
    /* 【追加】スマホでのリンク飛びズレ対策 */
    .class-ttl {
        scroll-margin-top: 70px; /* スマホ用固定ヘッダーの高さ（少し低めに設定） */
    }

    /* 表と地図を横並びから「縦並び」に変更 */
    .flex-container {
        flex-direction: column;
        gap: 30px; /* 縦に並んだときの間のスキマ */
    }
    /* ★すべての「item-container」をスマホでは縦並びに統一。
       「reverse」がついているアバウト部分も、一律で【上に画像・下に文字】にリセットされます */
    .item-container,
    #about .item-container,
    #about .item-container.reverse {
        flex-direction: column !important; 
        gap: 25px;
        margin-bottom: 60px; /* 要素同士の間隔をスマホ用に狭める */
    }
    
    /* スマホ・タブレット時は横幅いっぱいに安全に広げる */
    .item-image, .item-text,
    #about .item-image, #about .item-text {
        width: 100%; 
    }
    
    .item-text h2,
    #about .item-text h2 {
        font-size: 1.3rem;
        margin-bottom: 15px;
    }
}
/* ==========================================
   7. アニメーション各種
   ========================================== */
@keyframes fadeIn {
    from {
        opacity: 0;
        transform: translateY(20px); 
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.scroll-item {
    animation: fadeIn 1s ease-out; 
    animation-timeline: view();    
    animation-range: entry 10% cover 40%; 
}
 
.fade-in-text {
    animation-name: fadeIn;
    animation-timing-function: ease-out;
    animation-timeline: view();
    animation-range: entry 20% cover 40%; 
}

/* スクロールダウンの矢印アニメーション */
.scroll {
    display: inline-block;
    padding-top: 70px;
    position: relative;
    color: #2F4F4F;
    text-align: center;         
    margin: 20px auto;          
}
.scroll::before {
    animation: scroll-arrow 3.5s infinite;
    border: solid #2F4F4F;
    border-width: 0 0 1px 1px;
    content: "";
    display: inline-block;
    margin: auto;
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    transform: rotate(-45deg);
    width: 20px;
    height: 20px;
}
@keyframes scroll-arrow {
    0% { transform: rotate(-45deg) translate(0, 0); }
    80% { transform: rotate(-45deg) translate(-30px, 30px); }
    0%, 80%, 100% { opacity: 0; }
    40% { opacity: 1; }
}

/*** 追従するトップへ戻るボタン ***/
#page-top {
    position: fixed;
    right: 5px;
    bottom: 20px;
    height: 50px;
    text-decoration: none;
    font-weight: bold;
    transform: rotate(90deg);
    font-size: 90%;
    line-height: 1.5rem;
    color: #2F4F4F;
    padding: 0 0 0 35px;
    border-top: solid 1px;
    z-index: 1000;              
}
#page-top::before {
    content: "";
    display: block;
    position: absolute;
    top: -1px;
    left: 0px;
    width: 15px;
    border-top: solid 1px;
    transform: rotate(35deg);
    transform-origin: left top;
}

/* 最後の切り札：classの飛び先そのものに強制的にリンク用余白を作る */
#class {
    scroll-margin-top: 100px !important; /* PC用：ヘッダーの高さ */
}

@media screen and (max-width: 768px) {
    #class {
        scroll-margin-top: 70px !important; /* スマホ用：ヘッダーの高さ */
    }
}


