   /* ==========================
   Hamburger Menu
========================== */
   body.menu-open {
     overflow: hidden;
   }

   .menu-btn {
     display: flex;
     flex-direction: column;
     align-items: center;
     justify-content: space-around;

     position: fixed;
     top: 8px;
     right: 12px;
     z-index: 1200;

     width: 100px;
     height: 58px;
     padding: 6px 0 5px;

     border: none;
     border-radius: 14px;
     background: rgba(255, 255, 255, .94);
     box-shadow: 0 4px 14px rgba(0, 0, 0, .12);
     backdrop-filter: blur(6px);
     -webkit-backdrop-filter: blur(6px);

     cursor: pointer;
   }

   .menu-btn__bars {
     display: flex;
     flex-direction: column;
     align-items: center;
     justify-content: center;

     width: 30px;
     height: 22px;
   }

   .menu-btn__line {
     display: block;
     width: 28px;
     height: 2px;
     margin: 3px 0;

     background: #1d4736;
     border-radius: 999px;

     transition: transform .3s ease, opacity .3s ease;
   }

   .menu-btn__text {
     display: block;
     margin-top: 2px;

     color: #1d4736;
     background: transparent !important;

     font-size: 14px;
     font-weight: 700;
     line-height: 1;
     letter-spacing: .03em;
     white-space: nowrap;
   }

   /* 開いた状態 */
   body.menu-open .menu-btn__line:nth-child(1) {
     transform: translateY(8px) rotate(45deg);
   }

   body.menu-open .menu-btn__line:nth-child(2) {
     opacity: 0;
   }

   body.menu-open .menu-btn__line:nth-child(3) {
     transform: translateY(-8px) rotate(-45deg);
   }

   .sp-nav {
     position: fixed;
     top: 0;
     right: 0;
     width: min(93vw, 360px);
     height: 100vh;
     height: 100dvh;
     z-index: 1100;
     background: #ffffff;
     padding: 88px 22px calc(32px + env(safe-area-inset-bottom));
     transform: translateX(100%);
     transition: transform .3s ease;
     box-shadow: -8px 0 30px rgba(0, 0, 0, .12);
     overflow-y: auto;
     overflow-x: hidden;
     box-sizing: border-box;
     -webkit-overflow-scrolling: touch;
     overscroll-behavior: contain;
   }

   .sp-nav,
   .sp-nav * {
     box-sizing: border-box;
   }

   .sp-nav__list,
   .sp-nav__child {
     list-style: none;
     margin: 0;
     padding: 0;
   }

   .sp-nav__item {
     border-bottom: 1px solid #eeeeee;
   }

   .sp-nav a,
   .sp-nav__accordion {
     display: flex;
     align-items: center;
     justify-content: space-between;
     width: 100%;
     padding: 17px 4px;
     color: #333333;
     font-size: 16px;
     font-weight: 700;
     text-decoration: none;
     background: transparent;
     border: none;
     font-family: inherit;
     line-height: 1.6;
     text-align: left;
     cursor: pointer;
   }

   /* 子メニュー */
   .sp-nav__child {
     list-style: none;
     margin: 0 0 10px;
     padding: 0;
     max-height: 0;
     overflow: hidden;
     opacity: 0;
     visibility: hidden;
     background: #f7f5f0;
     border-radius: 12px;
     transition:
       max-height .28s ease, opacity .2s ease, visibility .2s ease;
   }

   .sp-nav__item.is-open>.sp-nav__child {
     max-height: 1000px;
     opacity: 1;
     visibility: visible;
   }

   .sp-nav__child li {
     border-bottom: 1px solid rgba(0, 0, 0, .05);
   }

   .sp-nav__child li:last-child {
     border-bottom: none;
   }

   .sp-nav__child a {
     display: block;
     align-items: center;
     gap: 8px;
     padding: 12px 14px;
     color: #555555;
     font-size: 14px;
     font-weight: 600;
     line-height: 1.6;
     text-decoration: none;
   }

   .sp-nav__child a::before {
     content: "▶";
     flex: 0 0 auto;
     color: #8a6a3f;
     font-size: 10px;
     line-height: 1;
     padding-right: 8px;
     transform: translateY(1px);
   }

   /* アコーディオンの＋アイコン */
   .sp-nav__accordion-icon {
     position: relative;
     flex: 0 0 auto;
     width: 16px;
     height: 16px;
     margin-left: 12px;
   }

   .sp-nav__accordion-icon::before,
   .sp-nav__accordion-icon::after {
     content: "";
     position: absolute;
     top: 50%;
     left: 50%;
     width: 14px;
     height: 2px;
     background: #1d4736;
     border-radius: 999px;
     transform: translate(-50%, -50%);
     transition: transform .25s ease;
   }

   .sp-nav__accordion-icon::after {
     transform: translate(-50%, -50%) rotate(90deg);
   }

   .sp-nav__item.is-open .sp-nav__accordion-icon::after {
     transform: translate(-50%, -50%) rotate(0deg);
   }

   /* 背景オーバーレイ */
   .menu-overlay {
     position: fixed;
     inset: 0;
     z-index: 1050;
     background: rgba(0, 0, 0, .32);
     opacity: 0;
     visibility: hidden;
     transition: opacity .3s ease, visibility .3s ease;
   }

   /* 開いた状態 */
   body.menu-open .sp-nav {
     transform: translateX(0);
   }

   body.menu-open .menu-overlay {
     opacity: 1;
     visibility: visible;
   }

   /*
   body.menu-open .menu-btn span:nth-child(1) {
     transform: translateY(8px) rotate(45deg);
   }

   body.menu-open .menu-btn span:nth-child(2) {
     opacity: 0;
   }

   body.menu-open .menu-btn span:nth-child(3) {
     transform: translateY(-8px) rotate(-45deg);
   }
*/
   /* PCでは非表示にしたい場合 */
   @media screen and (min-width: 901px) {

     .menu-btn,
     .sp-nav,
     .menu-overlay {
       display: none !important;
     }

     body.menu-open {
       overflow: auto;
     }
   }

   /* お急ぎの方メニュー */
   .sp-nav__item--emergency {
     border-bottom: none;
     margin-bottom: 14px;
   }

   .sp-nav__emergency-link {
     display: block;
     padding: 16px 18px !important;
     background: #368262 !important;
     color: #ffffff !important;
     border-radius: 14px;
     text-decoration: none;
     box-shadow: 0 4px 5px -4px rgba(54, 130, 98, 0.5);
   }

   .sp-nav__emergency-label {
     display: block;
     margin: auto;
     font-size: 17px;
     font-weight: 700;
     line-height: 1.5;
   }

   .sp-nav__emergency-text {
     display: block;
     font-size: 13px;
     font-weight: 600;
     line-height: 1.5;
     opacity: .92;
   }

   /* ==========================
   SPメニュー下部：補助リンク・バナー
========================== */
   .sp-nav .sp-nav__bottom {
     margin-top: 22px;
     padding-top: 18px;
     border-top: 1px solid #eeeeee;
   }

   .sp-nav .sp-nav__subLinks {
     list-style: none;
     margin: 0;
     padding: 0;
   }

   .sp-nav .sp-nav__subLinks li {
     margin: 0;
     padding: 0;
     border-bottom: 1px solid #f0f0f0;
   }

   .sp-nav .sp-nav__subLinks li:last-child {
     border-bottom: none;
   }

   .sp-nav .sp-nav__subLinks a {
     display: block;
     width: 100%;
     padding: 10px 4px;
     color: #666666;
     font-size: 13px;
     font-weight: 500;
     line-height: 1.6;
     text-decoration: none;
   }

   .sp-nav .sp-nav__subLinks a::before {
     content: "›";
     display: inline-block;
     margin-right: 6px;
     color: #8a6a3f;
     font-weight: 700;
   }

   /* 下部バナー */
   .sp-nav .sp-nav__banners {
     display: grid;
     gap: 10px;
     margin-top: 18px;
   }

   .sp-nav .sp-nav__bannerLink {
     display: block;
     width: 100%;
     padding: 0;
     border-radius: 12px;
     overflow: hidden;
     background: #f7f5f0;
     box-shadow: 0 4px 14px rgba(0, 0, 0, .08);
     text-decoration: none;
   }

   .sp-nav .sp-nav__bannerLink img {
     display: block;
     width: 100%;
     height: auto;
   }