/* =====================================================
     ここからCSS（見た目のデザイン）です。
     初心者の方でも追いやすいように、
     「何のための設定か」を1行ずつコメントで説明しています。
     ===================================================== */

  /* ---- 全体の共通設定（リセットCSS） ---- */
  * {
    /* 全ての要素の余白計算をわかりやすくする設定 */
    box-sizing: border-box;
  }

  html {
    position: relative;   /* ★修正★ 背景をぼかすための、位置の基準をbodyからhtmlに変更した */
    overflow-x: hidden;   /* 横方向にはみ出しても、横スクロールバーを出さないようにする */
    overflow-y: auto;   /* スクロールの主役はhtml側だけにする(理由は下記) */
  }

  /* ==========================================================
     ★修正メモ(2回目)★
     --------------------------------------------------------------
     スマホで見たときに、ページの下の方に「左右に動く横スクロール
     バー」が出てしまう不具合があった。

     原因:このすぐ下にあった「ぼかし背景(body::before)」が、
     top/left/right に -20px を指定していたため、body の横幅より
     20px×2(左右)ぶん広がっていた。それを覆い隠す担当のはずの
     overflow-x: hidden が html にしか付いておらず、bodyには
     付けていなかったため(1つ上の修正メモ参照)、はみ出した分が
     隠しきれず、横スクロールできてしまっていた。

     直し方:ぼかし背景を「body::before」ではなく「html::before」に
     変更した(detail.htmlのdetail.cssと同じ方式)。こうすることで、
     はみ出す相手が body ではなく html 自身になるので、html に
     付けてある overflow-x: hidden だけで、はみ出した分をきちんと
     隠せるようになる。bodyの方に overflow-x: hidden を追加する
     必要が無くなったので、スクロールバーが2本になる古い不具合も
     再発しない。
     ========================================================== */

  /* 背景専用のぼかしレイヤー(オープニング画面・他ページと同じ仕組み) */
  html::before {
    content: "";
    position: absolute;

    top: -20px;
    /* ★修正★ ここを -20px にしていたことが、スマホで横スクロール
       バーが出てしまう原因だった(overflow-x: hidden を付けていても、
       html自身の疑似要素がはみ出す場合はうまく隠しきれないことがある)。
       左右はどうせ画面いっぱいに背景を敷いているので、0にしても
       見た目はほとんど変わらない。 */
    left: 0;
    right: 0;
    bottom: 0;   /* ★修正★ ここが-20pxだと、ページの一番下からさらに
                    20px分はみ出してしまい、フッターの下に余計な余白が
                    出来てしまっていた。下方向だけ、はみ出させないようにした */

    background-image: url("images/opening-washi-bg.jpg");
    background-size: cover;
    background-position: center;

    filter: blur(6px);   /* 数値を大きくすると、もっとぼやける */

    z-index: 0;   /* 中身より、必ず奥に表示する */
  }

  body {
    /* サイト全体のベースになるフォントを指定 */
    font-family: "Shippori Mincho", serif;

    /* html::before(ぼかし背景)より手前に表示するために必要 */
    position: relative;
    z-index: 1;

    /* 万が一、画像が読み込めなかったときの保険の色(温かみのあるオフホワイト) */
    background-color: #FAF7F1;
    /* 文字の基本色：濃い紺色（インクのようなイメージ） */
    color: #2B2B2B;
    margin: 0;
    padding: 0;
    line-height: 1.7;
  }


  /* 中身(見出し・記事一覧など)を、ぼかしレイヤーより手前に表示する */
  body > * {
    position: relative;
    z-index: 1;
  }

  /* ---- ページ全体を中央寄せするコンテナ ----
     PCで2列に並べるため、以前より横幅を広めに設定しています。
     ★修正★ パンくずリストをposition: absoluteに変更したことで、
     本文がヘッダー・パンくずリストの下に隠れてしまうため、
     上の余白を広げた(スマホ:124px)。PC用は下の
     @media (min-width: 768px) でさらに広げている。 */
  .container {
    max-width: 1080px;
    margin: 0 auto;
    padding: 124px 24px 60px;
  }

  @media (min-width: 768px) {
    .container {
      padding-top: 146px;
    }
  }

  /* =====================================================
     パンくずリスト専用の「外側の入れ物」（ラッパー）
     -----------------------------------------------------
     ＜これまでの問題点1（最初の修正前）＞
     以前は <ul class="breadcrumb"> を .container の「中」に
     置いていたため、.container 自身が持っている padding
     （余白：上60px・左右24px）の影響を受けてしまい、
     マイナスマージンで無理やり位置をずらしていました。

     ＜これまでの問題点2（2回目の修正：max-width + 中央寄せ）＞
     そこで .container の外に出し、.breadcrumb-wrapper に
       ・max-width: 1080px
       ・margin: 0 auto（中央寄せ）
     を指定して、本文と左端を揃える方法にしました。
     ただしこの方法だと、画面の横幅が1080px＋余白より広い
     PC画面のときに .breadcrumb-wrapper 自体が「中央寄せ」
     されてしまい、パンくずリストが画面の真ん中あたりに
     浮いて見える、という問題がありました。

     ＜これまでの問題点3（3回目の修正：position: fixed）＞
     画面の本当の左端に貼り付けるために position: fixed を
     使いましたが、これだとスクロールしても常に画面上の
     同じ位置に留まり続けてしまい（＝ずっと画面についてくる）、
     使い勝手が悪いことが分かりました。

     ＜今回の直し方（一番シンプルな方法）＞
     実は、真ん中に寄ってしまう原因は「max-width + margin: 0
     auto（中央寄せ）」を指定していたことにありました。
     この2つを外して、左右の余白（padding）だけを指定すれば、
     入れ物（div）は画面幅いっぱいに広がったまま、中身
     （パンくずリスト）は padding の分だけ内側にずれた位置＝
     常に画面の左端近くに表示されます。

     position: fixed を使わない「普通の並び（static）」に戻る
     ので、スクロールすれば他の本文と同じように画面の外へ
     流れていきます（＝ついてこなくなります）。
     ===================================================== */
  /* ★修正★ お問い合わせページ(faq.css)と同じ位置(ロゴの下・左端揃え)に
     揃えるため、.breadcrumb-wrapper の余白で位置を管理するやり方をやめ、
     .breadcrumb 自体を position: absolute で直接配置する方式に変更した。
     そのため .breadcrumb-wrapper には、もう位置に関する指定は不要。 */
  .breadcrumb-wrapper {
    /* ★追加★ .breadcrumb-wrapper は body の直接の子要素で、
       「body > * { z-index: 1 }」の指定を受けている。
       本文(.container/.detail-container)も同じくbodyの直接の
       子要素で同じz-index:1のため、あとから並んでいる本文の方が
       手前に表示され、中にあるパンくずリストのリンクが押せなく
       なってしまっていた。
       ここでz-indexを本文より高くすることで、中の.breadcrumbが
       確実に手前に表示され、押せるようにする。 */
    position: relative;
    z-index: 5;
  }

  /* ---- パンくずリスト ----
     「今、サイトのどこにいるか」を示す小さなナビゲーション。
     news.html・詳細ページなど、複数のページで共通して使います。 */
  .breadcrumb {
    list-style: none;
    display: flex;
    align-items: center;
    gap: 4px;

    /* -----------------------------------------------------
       【変更メモ】スマホでの改行(折り返し)をやめて一列にする
       -----------------------------------------------------
       以前は flex-wrap: wrap にしていたため、画面が狭い
       スマホだと、パンくずの項目数や文字の長さによって
       ページごとに改行される・されないがバラバラになって
       いました(例:新着情報一覧は2項目で1行に収まるが、
       詳細ページは4項目あって2行になってしまう、など)。

       flex-wrap: nowrap にすることで、項目数や文字数に
       関わらず、必ず横一列(1行)で表示されるようにします。 */
    flex-wrap: nowrap;

    margin: 0;
    padding: 0;

    font-size: 12.5px;
    color: #8A8377;

    /* ★修正★ お問い合わせページ(faq.css)と同じ位置に揃える */
    position: absolute;
    top: 74px;   /* スマホ用の位置(faq.cssと同じ数値) */
    left: 20px;  /* ロゴ画像の左端と揃える(faq.cssと同じ数値) */

    /* ★追加★ 「body > * { z-index: 1 }」の指定により、後ろにある
       .container/.detail-container(本文)と重なり順が同じになり、
       あとから並んでいる本文の方が手前に表示されて、パンくずリストの
       リンクが押せなくなる不具合があった。これより高いz-indexを
       指定して、必ず手前に表示されるようにする。 */
    z-index: 5;
  }

  @media (max-width: 767px) {
    .breadcrumb {
      font-size: 11px;
    }
  }

  @media (min-width: 768px) {
    .breadcrumb {
      top: 92px;   /* PC用の位置(faq.cssと同じ数値) */
      left: 40px;  /* PCではロゴの左端が40pxになるため、それに合わせる */
    }
  }

  /* パンくずリストの1項目（<li>）ごとの文字も、
     窮屈な幅の中で折り返して2行にならないよう、
     念のため「絶対に折り返さない」設定にしておく */
  .breadcrumb li {
    white-space: nowrap;
    flex-shrink: 0;
  }

  .breadcrumb a {
    color: #8A8377;
    text-decoration: none;
  }

  .breadcrumb a:hover {
    text-decoration: underline;
  }

  /* 現在地（リンクではない、一番最後の項目） */
  .breadcrumb .is-current {
    color: #333333;
  }

  /* -----------------------------------------------------
     【変更メモ】
     以前はここに、PC画面（700px以上）のときだけ
     .breadcrumb にマイナスマージンをかけて、.container の
     padding を打ち消す…という調整コードがありました。

     今回、パンくずリストを .container の外に出し
     .breadcrumb-wrapper（上のほうで定義）で位置を管理する
     方式に変更したため、このマイナスマージンの調整は
     不要になったので削除しました。
     ----------------------------------------------------- */

  /* ---- ページタイトル部分 ---- */
  .page-header {
    margin-bottom: 48px;
    border-bottom: 3px solid #2C3E66;
    padding-bottom: 20px;
  }

  .page-header .eyebrow {
    display: inline-block;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.15em;
    color: #B5722F;
    margin-bottom: 8px;
  }

  .page-header h1 {
    font-size: 32px;
    font-weight: 900;
    margin: 0;
    color: #1E2A47;
  }

  /* =====================================================
     お知らせ一覧
     -----------------------------------------------------
     スマホでは1列、PC（画面幅700px以上）では2列のグリッドに
     並べる仕様です。列数の切り替えは下の方にある
     @media (min-width: 700px) の中で行っています。
     ===================================================== */
  .news-list {
    list-style: none;
    margin: 0;
    padding: 0;

    /* display: grid を使うと、要素をきれいに列・行で並べられる */
    display: grid;
    /* 1fr は「使える幅を全部使う1列」という意味。まずは1列（スマホ用）から */
    grid-template-columns: 1fr;
    /* 列と列の間のすき間（PCで2列になったときに効いてくる） */
    column-gap: 56px;
  }

  /* ---- お知らせ1件分（日付＋画像＋タイトルの横並び） ---- */
  .news-item {
    display: flex;
    align-items: flex-start;
    gap: 14px;

    padding: 18px 0;
    /* 1件ずつの下に、細い区切り線を入れる */
    border-bottom: 1px solid #E5DFD3;

    /* -------------------------------------------
       ふわっと表示させるフェードインアニメーション
       ------------------------------------------- */
    opacity: 0;
    transform: translateY(16px);
    animation: fadeInUp 0.6s ease forwards;
  }

  /* 上から順に、少しずつ遅れて表示されるようにする */
  .news-item:nth-child(1) { animation-delay: 0s; }
  .news-item:nth-child(2) { animation-delay: 0.1s; }
  .news-item:nth-child(3) { animation-delay: 0.2s; }
  .news-item:nth-child(4) { animation-delay: 0.3s; }
  .news-item:nth-child(5) { animation-delay: 0.4s; }

  /* マウスを乗せたときに、薄く背景色をつけて反応をわかりやすくする */
  .news-item:hover {
    background-color: #F2EEE3;
    transition: background-color 0.2s ease;
  }

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

  /* ---- 日付（縦書き） ----
     writing-mode: vertical-rl を使うと、数字やアルファベットが
     自動的に横向き（回転した状態）で縦方向に並びます。
     日本語の「縦書き」の仕組みを応用した書き方です。 */
  .news-date {
    writing-mode: vertical-rl;
    font-size: 11px;
    font-weight: 700;
    color: #8A8377;
    letter-spacing: 2px;
    padding-top: 2px;
    flex-shrink: 0; /* 横幅が縮まないようにする */
  }

  /* ---- 画像とタイトルをまとめて横並びにするための入れ物 ----
     クリックすると詳細ページに移動できるよう <a> タグにしているので、
     リンクの標準スタイル（下線・文字色）を解除しています。 */
  .news-row {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    width: 100%;
    text-decoration: none;
    color: inherit;
  }

  .news-row:hover .news-title {
    /* リンクだとわかるように、ホバー時だけタイトルに下線をつける */
    text-decoration: underline;
  }

  /* ---- サムネイル画像 ---- */
  .news-thumb {
    width: 84px;
    height: 76px;
    /* 画像の縦横比を保ったまま、指定した箱にきれいに収める */
    object-fit: cover;
    border-radius: 4px;
    flex-shrink: 0;
  }

  /* ---- タイトル ---- */
  .news-title {
    font-size: 15px;
    font-weight: 700;
    color: #333333;
    margin: 0;
    line-height: 1.5;
  }

  /* =====================================================
     PC（画面幅700px以上）向けのレイアウト調整
     ===================================================== */
  @media (min-width: 700px) {
    .news-list {
      /* 1fr 1fr で「同じ幅の列を2つ」作る＝2列グリッドになる */
      grid-template-columns: 1fr 1fr;
    }

    .news-thumb {
      /* PCでは画像を少し大きく見せる */
      width: 130px;
      height: 110px;
    }

    .news-title {
      font-size: 15px;
    }
  }

  /* ★修正★ 以前ここにあった、768px以上のときの
     .breadcrumb-wrapper { padding-top: 100px; } は削除した。
     今はパンくずリストの位置を .breadcrumb 自体の
     position: absolute (top/left) で管理しているため不要。 */

  /* ---- スマートフォンなど画面が狭い場合の調整 ---- */
  @media (max-width: 480px) {
    .container {
      /* 上の余白(124px)はヘッダー・パンくずリストとの
         重なりを防ぐために必要なので、そのまま残す。
         左右だけ狭くする。 */
      padding-left: 16px;
      padding-right: 16px;
    }
    .page-header h1 {
      font-size: 26px;
    }
  }

  /* ==========================================================
     「上に戻る」ボタン
     ==========================================================
     普段は透明で隠れていて(opacity: 0)、
     JS側(news-list.js)で一定量スクロールしたときに is-visible クラスが付き、
     ふわっと見えるようになる仕組みです。
     ========================================================== */
/* ==========================================================
   予約バッジ(画面下に固定表示・丸いフレームデザイン)
   ==========================================================
   常に画面に固定表示することで、いつでもすぐに
   予約ページ(食べログ)に飛べるようにする。
   ★変更★ トップページと同じデザインに揃えるため、
   赤色→黄色、丸背景の「上に戻る」ボタン→矢印だけのデザインに
   作り替えた。
   ========================================================== */
/* ==========================================================
   右下に固定表示する「上に戻る」ボタンを入れる箱
   ==========================================================
   予約バッジ(.reserve-badge)は、矢印ボタンの斜め左上に
   独自の位置(position:fixed)で固定表示するため、
   この箱には含まれない。
   ========================================================== */
.fixed-actions {
  position: fixed;
  right: 20px;
  bottom: 20px;
  z-index: 95;

  display: flex;
  align-items: center;
}

/* ==========================================================
   予約バッジ(丸いフレームデザイン)
   ==========================================================
   矢印ボタン(.back-to-top)の斜め左上に固定表示する。
   ========================================================== */
.reserve-badge {
  position: fixed;
  right: 58px;
  bottom: 78px;
  z-index: 95;

  width: 76px;
  height: 76px;

  display: flex;
  align-items: center;
  justify-content: center;

  text-decoration: none;

  opacity: 0;
  visibility: hidden;
  transition: opacity 0.3s ease, visibility 0.3s ease;
}

/* スマホでは、予約バッジを標準サイズより少しだけ大きくする */
@media (max-width: 767px) {
  .reserve-badge {
    width: 81px;
    height: 81px;
  }
}

.reserve-badge.is-visible {
  opacity: 1;
  visibility: visible;
}

.reserve-badge:hover {
  opacity: 0.85;
}

/* 黄色い円 */
.reserve-badge__fill {
  position: absolute;
  top: 12%;
  left: 12%;
  width: 76%;
  height: 76%;
  border-radius: 50%;
  background-color: #FFD400;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.25);
}

/* 装飾フレーム画像(バッジ全体を覆う) */
.reserve-badge__frame {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

/* 「ご予約」「Reservation」の文字 */
.reserve-badge__txt {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  color: #2b2620;
  font-family: "Shippori Mincho", serif;
  line-height: 1.3;
  text-shadow: none;
}

.reserve-badge__jp {
  font-size: 14px;
  font-weight: bold;
}

.reserve-badge__en {
  font-size: 8px;
  letter-spacing: 0.05em;
}

/* PC(画面幅768px以上)では、少し大きく表示する */
@media (min-width: 768px) {
  .reserve-badge {
    width: 110px;
    height: 110px;

    /* PCでは矢印ボタンが64pxに大きくなるため、重ならないよう調整 */
    bottom: 90px;
  }

  .reserve-badge__jp {
    font-size: 17px;
  }

  .reserve-badge__en {
    font-size: 9.5px;
  }
}


  /* ==========================================================
     「上に戻る」ボタン(丸い背景をやめ、矢印だけのデザインに)
     ========================================================== */
  .back-to-top {
    width: 56px;
    height: 56px;

    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;

    border: none;
    background-color: transparent;

    /* 普段は透明・クリックできない状態にしておき、
       JSで「表示する」クラス(is-visible)が付いたときだけ見えるようにする */
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s ease, visibility 0.3s ease;
  }

  /* 上向きの三角形(先端・動かない)、動く線、TOPの文字を縦に並べる */
  .back-to-top__icon {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    transition: transform 0.2s ease;
    filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.25));
  }

  .back-to-top__arrowhead {
    width: 0;
    height: 0;
    border-left: 6px solid transparent;
    border-right: 6px solid transparent;
    border-bottom: 9px solid #C5A059;
  }

  .back-to-top__line {
    position: relative;
    width: 1px;
    height: 20px;
    overflow: hidden;
    background-color: rgba(197, 160, 89, 0.25);
  }

  .back-to-top__line::before {
    content: "";
    position: absolute;
    left: 0;
    bottom: 0;
    width: 100%;
    height: 40%;
    background-color: #C5A059;
    animation: backToTopLineMove 1.8s ease-in-out infinite;
  }

  @keyframes backToTopLineMove {
    0% { bottom: -40%; opacity: 0; }
    30% { opacity: 1; }
    70% { opacity: 1; }
    100% { bottom: 100%; opacity: 0; }
  }

  .back-to-top__label {
    font-family: "Shippori Mincho", serif;
    font-size: 9px;
    letter-spacing: 0.15em;
    color: #C5A059;
  }

  .back-to-top.is-visible {
    opacity: 1;
    visibility: visible;
  }

  .back-to-top:hover .back-to-top__icon {
    transform: scale(1.15);
  }

  /* スマホの中でも特に幅が狭い画面では、ボタンを少しだけ小さくする */
  @media (max-width: 480px) {
    .back-to-top {
      width: 52px;
      height: 52px;
    }
  }

  /* PC(768px以上)では、矢印アイコンをさらに大きくする */
  @media (min-width: 768px) {
    .back-to-top {
      width: 64px;
      height: 64px;
    }
    .back-to-top__arrowhead {
      border-left: 8px solid transparent;
      border-right: 8px solid transparent;
      border-bottom: 12px solid #C5A059;
    }
    .back-to-top__line {
      height: 26px;
    }
    .back-to-top__label {
      font-size: 10px;
    }
  }

/* ==========================================================
   翻訳メニューの背景色を、このページの実際の背景色に近づける
   ========================================================== */
body #lang-menu {
  background-color: #f8fafa;
}
