@charset "utf-8";

/* 先にスマートフォン用の画面を作り、後に920px以上のPC用ページを作る。
   （PCが先だと、スマホ用にdisplay:flexを解除したりで記述が増える為） */

body {
    font-family: 'Catamaran', 'Noto Sans JP', sans-serif;
    font-size: 16px;
    line-height: 1.5;
    /* フォントの種類とサイズを指定。行間は、行の高さ1.5倍に指定 */
}

img {
    max-width: 100%;
    /* 画像が画面、親要素からはみ出すのを防ぐ為、MAX100％に指定。
       indexのリンク画像は670x290 の画像
       単にwidth100％にしてしまうと、親要素より小さい画像も全て引き延ばされてしまうので注意 */
}


/* index */

.topPage header {
    /* headerの背景画像を設定し、背景を多く見せる為に高さを画面90％にする */
    background: url(../img/index_bgSweets.jpg) no-repeat center top/cover;
    /* background-image -repeat -position/-size */
    height: 90vh;
    /* 背景画像を見せたいので、<header>ごと画面90％の高さに指定。
       でなければ、背景である為 <h1>のロゴ画像分しか背景画像が表示されない */
    padding-top: 50px;
    /* ロゴ画像<h1>の上に余白が欲しいので指定 */
    margin-bottom: 64px;
    /* 下の要素、リンク画像<li>との間に余白を指定 */
}

.topPage header h1 {
    margin-left: 20px;
}

.linkLi {
    padding: 0 20px;
    /* <lu>リスト全体の要素の左右内側に余白つける。 */
}

.linkLi li {
    margin-bottom: 40px;
    /* <lu>1つ1つのリストに、下側の余白をつける。 */
}

.linkLi li a {
    display: block;
    /* リンクのクリック範囲が狭いので、画像全体に範囲広げる為にdisplay:blockに指定
       ★ a は元々インラインinline */
    background-color: #ffd1e6;
    /* background-color: rgb(248, 222, 187); */
    /* 画像下のテキスト部分の背景色をつけてみる。 */
}

.linkLi li a span {
    /* ★ リンク <a> に含まれるテキストは、<span>で個別に囲んで余白等の指定をする。
       <a>の方にpaddingをつけると、文字＋画像の周りを囲う形で余白がついてしまう。 */
    display: block;
    /* 元々inlineで上下の余白が指定できないので、blockに指定 */
    padding: 12px 15px 10px;
    /* 背景色の範囲でテキストが大きすぎないよう、余白をつける */
}

.linkLi li a:hover {
    /* filter: sepia(100%); */
    filter: brightness(115%);
}


/* index以外のページ　共通の指定　------------------------------------------------
   このCSSファイルを全体で共有している為、<body>に他ページのCSS指定用のclassを作成 */

.subBody header {
    border-top: 14px solid #f5f5f5;
    /* 一番上に線を入れる */
    padding-top: 40px;
    /* 上に余白指定。入れた線があるので内側の方に入れる */
    margin-bottom: 30px;
    /* 下に余白指定。こちらは外側でいい。 */
}

.subBody header h1 {
    text-transform: uppercase;
    /* 元々小文字のテキストを全て大文字に指定 */
    text-align: center;
    /* 見出しを中央寄せに指定 */
    font-size: 42px;
    font-weight: 700;
    letter-spacing: .17em;
    /* フォントのサイズや太さ、そして文字の間隔を指定 */
}

.subBody header h1 span {
    /* 見出しの文字を、グラデーションカラーにする ↓ */
    background-image: linear-gradient(to top, #d5dee7 0%, #ffafbd 0%, #c9ffbf 100%);
    /*background-image: linear-gradient(to top, #fbc2eb 0%, #a6c1ee 100%); */
    /*background-image: linear-gradient(to top, #a8edea 0%, #fed6e3 100%); */
    /* background-image: linear-gradient(135deg, #ff4444 0%, #ffb3ba 100%); */
    /* ★ （傾き、グラデーション開始位置、修了位置） */
    background-clip: text;
    /* 背景をクリップで切り抜く。テキスト指定。↓で透明に指定すれば-image通りの色の文字になる */
    -moz-background-clip: text;
    -webkit-background-clip: text;
    /* ★ 各ブラウザで適用されるよう、ベンダープレフィックスを使用 */
    color: transparent;
    /* テキストを透明に指定。切り抜いた背景色が、文字の形に表示されるようにする */
}


/* 複数ページの共通見出しや<p>を調整  --------------------- */

.subBody h2 {
    /* タイトル下の見出し */
    text-align: center;
    font-weight: 700;
    letter-spacing: .17em;
    /* <h1>の見出しと同じ様に、位置、太さ、文字の間隔を指定。 */
    font-size: 20px;
    margin-bottom: 10px;
    /* 下の<p>との間隔をすこし空ける。 */
}

.subBody .leadText {
    /* 見出しの下のリード文 */
    text-align: center;
    font-size: 12px;
    margin-bottom: 30px;
    letter-spacing: .05em;
    line-height: 2;
    /* 他見出しと同様中央寄せにして、文字は小さめ、下の<section>との間に余白指定、
       文字の間隔を少し空け、行の高さ（行間）を少し大きめに指定。 */
}

.subBody h3 {
    /* 各<section>の見出し */
    text-align: center;
    font-size: 30px;
    font-weight: 700;
    margin-bottom: 30px;
}

.subBody main {
    padding: 0 20px;
    /* 両端がくっつき過ぎなので、<main>全体に、左右の内側余白を指定 */
}

.subBody footer {
    margin-top: 50px;
    /*background: url() no-repeat right top/200%;
     <img>画像の近くに画像を入れたいので、背景として指定。 */
    /* margin-top: 60px; */
    /* padding-top: 68px; */
    /* 背景表示を考えて内側に余白を入れて、外側の上にも少し余白を指定する */
}

footer p {
    background-color: #ffd1e6;
    text-align: center;
    padding: 3px;
    width: 100%;
}


/* conceptページ固有の指定　↓ --------------------------------- */

.conceptDetailSec p img {
    /* 各<section>の写真画像を調整。全て1920x2400 */
    height: 180px;
    width: 100%;
    /* ★ 縦幅が大きいからと高さを小さくすると、比率を保って横幅も小さくなる。
       widthを改めて元と同じ100％にする。画像が横に伸びて歪むので、以下で修正 */
    object-fit: cover;
    /* ボックスに対する、画像等の表示方法を指定。
       background-sizeに似た形、↑だと縦横比を保って領域いっぱいに表示される */
    object-position: center 90%;
    /* ボックスに対する画像等の配置を、真ん中の下方に指定。
       background-positionの様に、表示するX・Y軸の基準位置を指定 */
}

.conceptDetailSec .text {
    /* テキストの大きさ、行の高さ（行間）を調整 */
    font-size: 12px;
    line-height: 1.8;
}

.conceptDetailSec .photo {
    margin-bottom: 14px;
    /* 写真とテキストの間の余白をつける */
}

.conceptDetailSec {
    margin-bottom: 50px;
    /* テキストと次の<section>の見出しの間の余白をつける */
}


/* MENUページ固有の指定　↓ ----------------------------------  */

.menuList {
    display: flex;
    /* リストの画像が、blockのため縦に並んでいるので、横並びにする
       これだとflexのあまり4つの<li>画像全て横並びなので、修正する↓ */
    flex-wrap: wrap;
    /* ★ 折り返しできる様に指定。これだけだと、画像が元の大きさに戻ろうと
       画面いっぱいに広がってしまうため、↓.menuList li で要素の横幅を指定する。*/
    justify-content: space-around;
    /* 「両端の余白 ＝ 子要素間の余白の半分」に指定 */
}

.menuList li {
    flex-basis: 42%;
    /* ★ 個々の<li>の横幅を指定し、丁度2つだけ横並びになるようにする
       50％で2つ並び、33％で3つ並ぶ。↑は8％の余白を引いた数。 */
    margin-bottom: 28px;
    /* リストの画像同士、下の余白も調整 */
}

.menuList li img {
    filter: drop-shadow(3px 4px 3px #dddddd);
    /* 画像の透過箇所に対応した影をつける。
       （X軸の位置　Y軸の位置　ぼかし　影の色） */
}

.menuDetailSec {
    margin-bottom: 50px;
    margin-top: 50px;
    /* 各<section>の下の余白をつける。 */
}

.menuDetailSec p {
    font-size: 12px;
    text-align: center;
    line-height: 1.8;
    letter-spacing: .05em;
    line-height: 2;
    margin-bottom: 30px;
    /* 他見出しと同様中央寄せにして、文字は小さめ、下の<section>との間に余白指定、
       文字の間隔を少し空け、行の高さ（行間）を少し大きめに指定。 */
}


/* INFOページ固有の指定　↓ ----------------------------------  */

.map {
    margin-bottom: 100px;
}

.map iframe {
    /* Google mapsリンクを入れた<p>のclass */
    width: 100%;
    height: 240px;
    margin-bottom: 10px;
}

.photoGarelly {
    /* <ul>に作成したclass。子要素の<li>をグリッド化する */
    display: grid;
    grid-template-rows: 50vw 40vw 30vw 30vw 40vw 50vw;
    /* Y軸。行（縦の連なり）の高さと、何個にするかをVWで指定
       デバイスの横幅に合わせて、セルの高さを比率で決める事で、
       縦横比を保ったままレスポンシブ設定にする */
    grid-template-columns: 50% 50%;
    /* X軸。列（横の連なり）の幅と、何個にするかを％で指定 */
}

.item1 {
    /* <ul>子要素の<li>のリスト画像<img>の表示を、gridで指定する為のclass */
    /* 写真：複数種類のパスタ */
    grid-column-start: 1;
    grid-column-end: 3;
    /* 列（X横の連なり）のitem1の範囲指定 */
    grid-row-start: 1;
    grid-row-end: 2;
    /* 行（Y縦の連なり）のitem1の範囲指定 */
}

.item2 {
    /* 写真：斜め上から見た苺ケーキ */
    grid-column: 1/2;
    grid-row: 2/3;
}

.item3 {
    /* 写真：上から見たジェノベーゼ */
    grid-column: 1/2;
    grid-row: 3/4;
}

.item4 {
    /* 写真：苺のミルクプリン6個*/
    grid-column: 2/3;
    grid-row: 2/4;
}

.item5 {
    /* 写真：バジルを散らしたラザニア */
    grid-column: 2/3;
    grid-row: 4/5;
}

.item6 {
    /* 写真：フルーツティーのガラスポットとカップ */
    grid-column: 2/3;
    grid-row: 5/6;
}

.item7 {
    /* 写真：上から見た沢山のプチフルーツケーキ */
    grid-column: 1/2;
    grid-row: 4/6;
}

.item8 {
    /* 写真：フルーツの大皿とシリアル、ラテ、アボカド */
    grid-column: 1/3;
    grid-row: 6/7;
}

.photoGarelly li img {
    width: 100%;
    height: 100%;
    /* ★ grid内のセルと写真の縦横幅が合っていない所がある為、幅高さを100％に指定 */
    object-fit: cover;
    /* ★ width・heightをgridセル100％にすると縦横比が変わり歪む為、
       縦横比を保ったまま、指定したwidth・height領域いっぱいに表示されるよう指定 */
}

.item8 img {
    object-position: center 85%;
    /* ↑のcoverで拡大表示になっている写真の表示位置を変更 */
}

.item5 img {
    object-position: center bottom;
}

.item1 img {
    object-position: center top;
}

.item6 img {
    object-position: center 35%;
}

.item3 img {
    object-position: right top;
}


/* PCビューのレスポンシブ設定↓ --------------------------------------- */

@media screen and (min-width: 920px) {
    /* 最低値が920px、つまり920px以上の場合の画面を設定 */
    .topPage {
        display: flex;
        /* <body>につけたclass。子要素の <header> <main> を横並びに指定 */
    }
    /* ↓ flext指定した↑の子要素2つに、基準となる大きさを指定する ↓ */
    .topPage header {
        flex-basis: 38%;
    }
    .topPage main {
        flex-basis: 62%;
        /* 横幅の比率を変えずに伸縮させる為に、％で指定する */
    }
    /* ↓ <main>中の<li>も横並びにし、更に折り返し表示にして、<li>達の大きさを指定 */
    .linkLi {
        display: flex;
        flex-wrap: wrap;
        /* <ul>に作成したclass。flexにして、子要素のはみ出し時の折り返しを指定 */
        /* ↓ <li>と::before疑似要素の指定の後、 <li>の余白と位置を調整 ↓ */
        max-width: 800px;
        margin: 0 auto;
        /* <lu>リンク全体の幅を決め、marginを左右均等、中央寄せに指定 */
        justify-content: space-around;
        /* 両端の余白は、子要素間の余白の半分で、均等配置 */
    }
    .linkLi li {
        flex-basis: 47%;
        /* 折り返した時に、横に2つだけ並ぶ位に大きさの基準を指定 */
        margin-bottom: 20px;
        /* 下が空きすぎなので、少なめに指定 */
    }
    .linkLi::before {
        content: "";
        background: url() no-repeat center/80%;
        /* 疑似要素を<ul>のbeforeに表示させる。sizeはcover等ではなく％指定 */
    }
    .topPage main {
        display: flex;
        align-items: center;
        /* ★ 天地中央寄せにする。<main>をflexにし、縦方向の位置プロパティで指定 */
    }
    .topPage header {
        height: 100vh;
        /* 元の高さ指定が90vhなので、100％に指定 */
        margin-bottom: 0px;
        /* 元のスマホ向け指定の下余白も消しておく */
    }
    /* index以下のページの共通箇所を調整。
       横幅が画面いっぱいに広がっているので、指定し直す ---------------------- */
    .subBody {
        max-width: 1280px;
        margin: 0 auto;
        /* 最大幅を指定し、中央寄せにする */
    }
    .subBody header h1 {
        font-size: 60px;
        /* 文字をスマホサイズより大きく指定 */
    }
    .subBody .leadText {
        font-size: 16px;
    }
    .onlySP {
        /* PCページをCSS指定する時、元のCSSを解除する為のclass */
        display: none;
        /* このclassのついている<br>を非表示にして一行にする */
    }
    /* ↓ 共通している見出しの体裁、文字の大きさと余白を調整する */
    .subBody h2 {
        font-size: 34px;
        margin-bottom: 36px;
    }
    .subBody .leadText {
        font-weight: 18px;
        margin-bottom: 160px;
    }
    .subBody h3 {
        font-size: 50px;
        margin-bottom: 40px;
    }
    /* ↓ CONCEPTページの各<section>を、それぞれgrid化。--------------------- ↓
         子要素（<h3>と<p>のテキストと写真）を調整 ↓ */
    .conceptDetailSec {
        display: grid;
        grid-template-columns: 40% 60%;
        grid-template-rows: 360px 360px;
        /* 指定したい子要素を踏まえ、大きさとセルの個数を設定 */
    }
    .conceptDetailSec h3 {
        grid-column: 2/3;
        grid-row: 1/2;
    }
    .conceptDetailSec .photo {
        grid-column: 1/2;
        grid-row: 1/3;
    }
    .conceptDetailSec .text {
        grid-column: 2/3;
        grid-row: 2/3;
    }
    .conceptDetailSec .photo img {
        /* スマホ用設定で高さが180pxになっていて.photoが↑で指定したセル全体を覆えていない
           ので、画像に改めて高さを指定 */
        height: 720px;
    }
    .conceptDetailSec h3 {
        align-self: flex-end;
        /* ↑ はflexのプロパティだが、gridでも使える。
           アイテム自身の縦位置を末尾（下部）に指定。margin-bottomがある為、余白はあり */
    }
    .conceptDetailSec .text {
        text-align: center;
        font-size: 16px;
        /* テキストを少し大きくして、中央寄せにする */
    }
    /* ↓ 真ん中の<section>だけレイアウトを逆にしたいので、.reverseを調整 */
    .reverse {
        grid-template-columns: 60% 40%;
        /* .conceptDetailSecに指定したgridと列の幅を逆に指定 */
    }
    .reverse h3 {
        grid-column: 1/2;
        grid-row: 1/2;
    }
    .reverse .photo {
        grid-column: 2/3;
        grid-row: 1/3;
    }
    .reverse .text {
        grid-column: 1/2;
        grid-row: 2/3;
    }
    /* ↓ MENUページ独自の箇所を調整 ------------------------------------ */
    .menuList li {
        flex-basis: 22%;
        /* 横並びに2つ表示になるよう44％にしていた所を、4つ表示になるよう修正 */
        margin-bottom: 0;
    }
    .menuDetailSec {
        margin-bottom: 160px;
        /* <section>3つにつけたclass、それぞれの間に余白を指定。 */
    }
    .menuDetailSec p {
        font-size: 16px;
    }
    /* ↓ INFOページ独自の箇所を調整 ------------------------------------ */
    /* <ul>gridの<li>セルを修正する。 */
    .photoGarelly {
        grid-template-columns: 35% 30% 35%;
        grid-template-rows: 280px 280px 280px 280px;
        /* grid-template-columns: 15% 15% 20% 20% 15% 15%; */
        /* grid-template-rows: 200px 200px; */
        /* grid-template-columns: 30% 20% 30% 20%; */
        /* grid-template-rows: 180px 180px 280px; */
    }
    .item1 {
        /* <ul>子要素の<li>のリスト画像<img>の表示を、gridで指定する為のclass */
        /* 写真：複数種類のパスタ */
        grid-column: 1/3;
        /* 列（X横の連なり）のitem1の範囲指定 */
        grid-row: 1/2;
        /* 行（Y縦の連なり）のitem1の範囲指定 */
    }
    .item2 {
        /* 写真：斜め上から見た苺ケーキ */
        grid-column: 1/2;
        grid-row: 2/3;
    }
    .item3 {
        /* 写真：上から見たジェノベーゼ */
        grid-column: 2/3;
        grid-row: 2/3;
    }
    .item4 {
        /* 写真：苺のミルクプリン6個*/
        grid-column: 3/4;
        grid-row: 1/3;
    }
    .item5 {
        /* 写真：バジルを散らしたラザニア */
        grid-column: 2/3;
        grid-row: 3/4;
        /* grid-column: 5/6; */
        /* grid-row: 1/2; */
    }
    .item6 {
        /* 写真：フルーツティーのガラスポットとカップ */
        grid-column: 3/4;
        grid-row: 3/4;
        /* grid-column: 6/7; */
        /* grid-row: 1/2; */
    }
    .item7 {
        /* 写真：上から見た沢山のプチフルーツケーキ */
        grid-column: 1/2;
        grid-row: 3/5;
        /* grid-column: 4/5; */
        /* grid-row: 1/3; */
    }
    .item8 {
        /* 写真：フルーツの大皿とシリアル、ラテ、アボカド */
        grid-column: 2/4;
        grid-row: 4/5;
        /* grid-column: 5/7; */
        /* grid-row: 2/3; */
    }
}


/* 参考サイトのハンバーガーメニュー<nav>を設定する。
   1. メニューボタンを押すとチェックボックスのON/OFFが切り替わる
   2. チェックボックスがONの時のCSSは「:checked」で指定可能
   3. チェックボックスがONの時のメニューボタンやメニューのCSSは「:checked」と「~」の組み合わせで指定可能
   4. チェックボックスがONの時 ⇒ メニューを表示。メニューボタンを✕に。
   5. チェックボックスがOFFの時 ⇒ メニューを非表示。メニューボタンを三本線に。 */

.gMenu {
    /* <nav> class。position、位置と幅、レイヤーを指定してメニューを画面上部に固定表示 */
    position: fixed;
    right: 0;
    top: 0;
    width: 100%;
    /* 横幅指定しないと、fixedにした為に『横幅いっぱいの性質』を失ったままになり、右に寄る */
    z-index: 99;
    /* 前側に表示されるよう、レイヤーを上側の数に指定 */
}

.gMenu .menu-icon {
    /* ここからメニューアイコンの設定。アイコンを画面右上に固定する。 
    <input class="menu-btn" type="checkbox" id="menu-btn">
    <label class="menu-icon" for="menu-btn"><span class="navicon"></span></label>
       labelタグのforの値を <input> のidと同じにする事で、label要素をクリックした時に、
       checkboxのON/OFFを切り替えられる。チェックボックスをCSSで非表示にしても動作する */
    cursor: pointer;
    position: absolute;
    right: 10px;
    top: 12px;
    padding-top: 5px;
    height: 12px;
}

.gMenu .menu-icon .navicon {
    /* <label>で囲んだ<span>のclass。メニューアイコン（三本線）の真ん中の線 */
    background: #ffc107;
    /* 色は自由に変更可能 */
    display: block;
    /* ★ <span>は<div>と違ってinlineなので、幅等を指定する為に変更 */
    height: 2px;
    /* 太さ */
    width: 31px;
    /* 長さ */
    position: relative;
    transition: background .4s ease-out;
    /* 形が変わる時のアニメーション */
}

.gMenu .menu-icon .navicon::before,
.gMenu .menu-icon .navicon::after {
    /* <label>で囲んだ<span>のclass。メニューアイコン（三本線）の上と下の線を疑似要素で追加 */
    background: #ffc107;
    /* 色は自由に変更可能 */
    content: '';
    display: block;
    /* ★ <span>は<div>と違ってinlineなので、幅等を指定する為に変更 */
    height: 100%;
    position: absolute;
    transition: all .4s ease-out;
    /* 形が変わる時のアニメーション */
    width: 100%;
}

.gMenu .menu-icon .navicon::before {
    /* このままだと線が重なって見えないので、位置を上にずらす */
    top: 10px;
}

.gMenu .menu-icon .navicon::after {
    /* このままだと線が重なって見えないので、位置を下にずらす */
    top: -10px;
}


/* ▼▼▼ 以下、メニューの詳細指定 ▼▼▼
   <nav class="gMenu">
      <input class="menu-btn" type="checkbox" id="menu-btn">
      <label class="menu-icon" for="menu-btn"><span class="navicon"></span></label>
      <ul class="menu"><li><a href="cafeHeaven'sHP_index.html">HOME</a></li>~</ul> */

.gMenu .menu-btn:checked~.menu {
    /* ★★ まず、『チェックボックスがONの時の』メニュー<ul>、.menuの状態を指定
       この指定がないと、メニューが表示されないので注意！高さ338pxにして表示 */
    max-height: 338px;
    transition: max-height .6s;
    /* アニメーションの対象プロパティと所要時間 -property、-durationを指定 */
}

.gMenu .menu {
    /* 表示されるメニュー。<label>後の<ul>のclass */
    background-color: rgba(255, 255, 255, 0.9);
    overflow: hidden;
    max-height: 0;
    /* ★最初は高さを0にして非表示状態にしておく */
    transition: max-height .6s;
    /* 表示される時のアニメーション */
    text-align: center;
}

.gMenu .menu li:first-of-type {
    /* メニュー部分のデザイン */
    padding-top: 25px;
    padding-top: 50px;
}

.gMenu .menu li a {
    display: block;
    /* 元がインラインなので、paddingつける為にブロックにする */
    padding: 24px 20px;
    text-decoration: none;
    text-transform: uppercase;
    /* 小文字テキストを大文字に変更 */
}

.gMenu .menu li a:hover {
    background-color: #f4f4f4;
}

.gMenu .menu-btn {
    /* ★ チェックボックスは常に非表示にする */
    display: none;
}


/*  ▼▼▼ 以下、チェックボックスONの時のアイコンの状態を指定 ▼▼▼ */

.gMenu .menu-btn:checked~.menu-icon .navicon {
    /* <label>で囲んだ<span>のclass。メニューアイコンの中央の線。
       非表示にして、↓の疑似要素の動きと合わせて「×」に見えるよう指定 */
    background: transparent;
}

.gMenu .menu-btn:checked~.menu-icon .navicon::before {
    /* メニューを開いた時、ボタンの上下の線を45度傾けて✕印を作る */
    transform: rotate(-45deg);
    top: 0;
}

.gMenu .menu-btn:checked~.menu-icon .navicon::after {
    /* メニューを開いた時、ボタンの上下の線を45度傾けて✕印を作る */
    transform: rotate(45deg);
    top: 0;
}