:root {
  --pulpo-red: #d62828;   /* 背景の赤。好みで変えてOK */
}
@font-face {
  font-family: "whoody";
  src: url("../fonts/whoody.ttf") format("opentype");
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}


/* ベースリセット軽め */
* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

body {
  font-family: system-ui, -apple-system, BlinkMacSystemFont,
    "Hiragino Kaku Gothic ProN", "Yu Gothic", sans-serif;
  background: #f5f2ec;
  color: #111;
  line-height: 1.7;
}

/* ================================
   Pulpo風ヒーロー全体
================================ */
.hero-pulpo {
  position: relative;
  min-height: 100vh;

  /* 背景画像を表示（画像名はカイトのファイルに合わせてOK） */
  background: url("../images/27632777_m.jpg") center/cover no-repeat;

  display: flex;
  align-items: center;
  justify-content: center;
  padding: 40px 16px;
  overflow: hidden;
}

.hero-pulpo-inner {
  position: relative;
  max-width: 1080px;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;

  /* 3Dっぽさ（今はそこまで使ってないけど将来用） */
  perspective: 1200px;
}

/* ================================
   真ん中の大きな回転ロゴ
================================ */
.hero-logo-wrap {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%,-50%);
  z-index: 5;
  display: flex;
  align-items: center;
  justify-content: center;
}

.hero-logo-circle {
  width: min(700px, 70vw);
  height: min(700px, 70vw);
  border-radius: 50%;
  background: url("../images/hero-logo.png") center/80% no-repeat;
  animation: hero-rotate 16s linear infinite;
}

.hero-logo-main {
  font-size: 20px;
  font-weight: 700;
  letter-spacing: 0.25em;
  margin-bottom: 6px;
}

.hero-logo-sub {
  font-size: 11px;
  opacity: 0.7;
}

@keyframes hero-rotate {
  0%   { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

/* ================================
   下から上に登っていくカード（6枚ループ）
   ※ ロゴより後ろ（z-index: 3）
================================ */
/* ================================
   下から上に登っていくカード（6枚ループ・調整版）
================================ */
.hero-cards-layer {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 3;  /* ロゴより後ろ */
  overflow: visible;
}

/* 共通（PCサイズ） */
.hero-floating-card {
  position: absolute;
  width: 220px;
  height: 400px;
  border-radius: 18px;
  overflow: hidden;
  background: radial-gradient(circle at top left, #ffe5b4, #ff8c42);
  box-shadow: 0 18px 38px rgba(0, 0, 0, 0.35);

  opacity: 1;
  will-change: transform;
  animation: card-flow 10s linear infinite;
}

/* ジグザグ大きめ（左⇄右 の振れ幅を広げる） */
.card-1 { left: -10%; animation-delay: -11s; }
.card-2 { right: -10%; animation-delay: -0s; }
.card-3 { left: -0%; animation-delay: -6s; }
.card-4 { right: -0%; animation-delay: -5s; }


/* 全カードを同じスタート位置 → 同じ終了位置へ */
@keyframes card-flow {
  0%   { transform: translateY(100vh); }
  100% { transform: translateY(-140vh); }
}

/* スマホサイズ */
@media (max-width: 768px) {
  .hero-floating-card {
    width: 150px;
    height: 260px;
  }

  /* スマホ時の振れ幅も広めのまま維持 */
  .card-1 { left: 0%; }
  .card-2 { right: 0%; }
  .card-3 { left: 0%; }
  .card-4 { right: 0%; }
  
}


/* ================================
   下の仮コンテンツ
================================ */
.page-main {
  padding: 0px 0 80px;
}

.dummy-section {
  max-width: 960px;
  margin: 0 auto;
}

.dummy-section h1 {
  font-size: 28px;
  margin-bottom: 12px;
}

.dummy-section p {
  font-size: 14px;
  color: #444;
}

/* ================================
   スマホ対応（ヒーロー部分）
================================ */
@media (max-width: 768px) {

  .hero-pulpo {
    padding: 32px 12px 40px;
    min-height: 100vh;
  }

  .hero-logo-circle {
    width: min(220px, 70vw);
    height: min(220px, 70vw);
  }

 
}

/* iPhoneなどもっと小さい時のロゴサイズ微調整 */
@media screen and (max-width: 768px) {
  .hero-logo-circle {
    width: 80vw;
    height: 80vw;
  }
}

/* =====================================
   Pulpo風 浮遊ヘッダー（幅半分＆ポップ）
===================================== */

.site-header {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  padding-top: 18px;          /* 上から少し浮かせる */
  z-index: 100;
  pointer-events: none;
}

.header-frame {
  width: 100%;
  margin: 0;                  /* 画面いっぱい */
  padding: 0 8px;             /* 左右の余白だけ少し残す */
  pointer-events: none;

  display: flex;
  justify-content: flex-start;/* 左寄せにする */
}

/* 白い楕円の本体 */
.header-pill {
  pointer-events: auto;
  background: #ffffff;
  border-radius: 999px;
  box-shadow:
    0 18px 40px rgba(0, 0, 0, 0.35),
    0 0 0 3px rgba(255, 255, 255, 0.9);

  padding: 10px 26px;
  display: flex;
  align-items: center;
  gap: 28px;

  max-width: 730px;      /* ヘッダー枠サイズ */
  width: 100%;
  position: relative;
  overflow: hidden;
}

/* カラフルな装飾（背景のグラデーションライン） */
.header-pill::before {
  content: "";
  position: absolute;
  inset: -40px;
  background: linear-gradient(135deg,
    #ffba08, #f48c06, #d62828, #f72585, #4cc9f0);
  opacity: 0.12;
  transform: rotate(-2deg);
}

/* 中身だけ上に載せるためのラッパー */
.header-pill > * {
  position: relative;
}

/* ロゴ（左） */
.header-logo {
  font-weight: 800;
  font-size: 18px;
  letter-spacing: 0.16em;
  text-decoration: none;
  color: #111;
  white-space: nowrap;
  font-family: "Montserrat", sans-serif;
  letter-spacing: 0.18em;
  font-size: 20px;
}

/* PCメニュー */
.header-nav ul {
  list-style: none;
  display: flex;
  gap: 18px;
}

.header-nav a {
  position: relative;
  text-decoration: none;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.18em;
  color: #555;
  text-transform: uppercase;
  transition: color 0.2s ease, transform 0.2s ease;
}

/* メニューのホバー：下から色付きバー＆少しジャンプ */
.header-nav a::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -4px;
  width: 0;
  height: 3px;
  border-radius: 999px;
  background: linear-gradient(90deg, #ffba08, #d62828, #f72585);
  transition: width 0.2s ease;
}

.header-nav a:hover {
  color: #d62828;
  transform: translateY(-2px);
}

.header-nav a:hover::after {
  width: 100%;
}

/* CONTACTボタン（右端の黒い pill 風） */
.header-contact-btn {
  text-decoration: none;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.16em;
  padding: 9px 18px;
  border-radius: 999px;
  background: #111;
  color: #fff;
  white-space: nowrap;
  box-shadow: 0 8px 18px rgba(0, 0, 0, 0.45);
  transition: transform 0.2s ease, box-shadow 0.2s ease,
              background 0.2s ease, color 0.2s ease;
}

/* CONTACTホバー：ちょい拡大＆色反転っぽく */
.header-contact-btn:hover {
  transform: translateY(-3px) scale(1.05);
  box-shadow: 0 12px 26px rgba(0, 0, 0, 0.6);
  background: #ffffff;
  color: #111;
}

/* SP用トグルは非表示（見えないチェックボックス） */
.nav-toggle {
  display: none;
}

/* ハンバーガーアイコン */
.nav-toggle-label {
  display: none;  /* PCでは隠す */
  width: 26px;
  height: 18px;
  position: relative;
  cursor: pointer;
}

.nav-toggle-label span {
  position: absolute;
  left: 0;
  right: 0;
  height: 2px;
  background: #111;
  border-radius: 999px;
  transition: transform 0.25s ease, top 0.25s ease, opacity 0.25s ease;
}

.nav-toggle-label span:first-child {
  top: 3px;
}

.nav-toggle-label span:last-child {
  top: 13px;
}

/* スマホ用メニュータブ（土台） */
.header-nav-mobile {
  display: none;  /* PCでは表示しない */
}


/* ==============================
   Global (below HERO)
============================== */
.page-main{
  background: linear-gradient(180deg, #f6f7f8 0%, #eef6ff 55%, #f5f2ec 100%);
}

/* reveal */
.reveal{
  opacity: 0;
  transform: translateY(10px);
}
.reveal.is-inview{
  opacity: 1;
  transform: translateY(0);
  transition: opacity .7s ease, transform .7s ease;
}

/* ==============================
   Editorial sections (boxless)
============================== */
.ed-sec{
  padding: 72px 16px;
  position: relative;
  overflow: hidden;
}

.ed-inner{
  max-width: 1080px;
  margin: 0 auto;
}

.ed-title{
  font-family: "Montserrat", sans-serif;
  font-weight: 900;
  letter-spacing: 0.32em;
  font-size: clamp(26px, 3.6vw, 44px);
  margin-bottom: 26px;
}

.ed-lead{
  font-size: clamp(20px, 2.5vw, 30px);
  line-height: 1.6;
  margin-bottom: 16px;
}

.ed-body{
  font-size: 14px;
  line-height: 1.95;
  color: rgba(0,0,0,0.66);
}

.ed-body.wide{ max-width: 680px; }

.ed-note{
  margin-top: 14px;
  font-size: 12px;
  opacity: .55;
}

/* ==============================
   SERVICE × PRICE layout
============================== */
.sp-wrap{
  display: block;
}

@media (min-width: 960px){
  .sp-wrap{
  display: grid;
  grid-template-columns: 1.15fr 0.85fr;
  gap: 6vw;
  align-items: start;

  width: 100%;
  max-width: none;     /* ← 1080px縛りを消す */
  margin: 0;

  padding: 72px 6vw;   /* ← 端ギリにしない余白 */
}

  .sp-wrap > .ed-sec{
    padding: 0;              /* inner sections padding off on PC */
  }
  /* 2カラム化で見出しが窮屈になるのを防ぐ */
  #service .ed-title, #price .ed-title{ margin-bottom: 22px; }
}

@media (max-width: 959px){
  .sp-wrap{ padding: 0; }
}

/* SERVICE list */
.service-points{
  list-style: none;
  padding: 0;
  margin-top: 18px;
  display: grid;
  gap: 10px;
}

.service-points li{
  display: grid;
  grid-template-columns: 22px 1fr;
  align-items: center;
  column-gap: 10px;
  font-size: 14px;
  color: rgba(0,0,0,.76);
}

/* rotating wheel icon (CSS tire) */
.wheel{
  width: 18px;
  height: 18px;
  border-radius: 50%;
  border: 2px solid rgba(0,0,0,.46);
  position: relative;
  display: inline-block;
  animation: wheelSpin 2.2s linear infinite;
  transform-origin: 50% 50%;
  opacity: .9;
}
.wheel::before{
  content:"";
  position:absolute;
  inset: 4px;
  border-radius: 50%;
  border: 2px solid rgba(0,0,0,.18);
}
.wheel::after{
  content:"";
  position:absolute;
  width: 3px; height: 3px;
  border-radius: 50%;
  background: rgba(0,0,0,.46);
  left: 50%; top: 50%;
  transform: translate(-50%,-50%);
  box-shadow:
    0 -7px 0 rgba(0,0,0,.46),
    0  7px 0 rgba(0,0,0,.46),
    -7px 0 0 rgba(0,0,0,.46),
     7px 0 0 rgba(0,0,0,.46);
  opacity: .55;
}

@keyframes wheelSpin{ to{ transform: rotate(360deg);} }

/* Reduce motion */
@media (prefers-reduced-motion: reduce){
  .reveal, .reveal.is-inview{ opacity: 1 !important; transform: none !important; transition: none !important; }
  .wheel{ animation: none !important; }
}

/* PRICE */
.price-inner{
  border-left: 1px solid rgba(0,0,0,.08);
  padding-left: 28px;
}
@media (max-width: 959px){
  .price-inner{
    border-left: none;
    padding-left: 0;
    margin-top: 0;
  }
}

.price-list{
  max-width: 420px;
}

.price-row{
  display: flex;
  justify-content: space-between;
  padding: 14px 0;
  border-bottom: 1px solid rgba(0,0,0,0.10);
  font-weight: 700;
  letter-spacing: 0.12em;
}

/* Buttons (minimal) */
.cta-link{
  display: inline-block;
  padding: 14px 42px;
  border: 1px solid #111;
  text-decoration: none;
  font-weight: 800;
  letter-spacing: 0.24em;
  margin-top: 22px;
  transition: background .25s ease, color .25s ease;
}
.cta-link:hover{ background:#111; color:#fff; }
.cta-link.small{ padding: 12px 32px; }

/* ACCESS map */
.ed-map iframe{
  width: 100%;
  height: 380px;
  border: none;
  margin-top: 28px;
}

/* CTA section */
.ed-cta{
  text-align: center;
  background:
    radial-gradient(900px 520px at 50% 20%, rgba(255,230,160,.16), rgba(255,230,160,0) 62%),
    linear-gradient(180deg, #e9f6ff 0%, #bfe6ff 55%, #7dbdff 100%);
}
.cta-copy{
  font-size: clamp(26px, 4vw, 40px);
  font-weight: 800;
  letter-spacing: 0.12em;
  margin-bottom: 18px;
}

/* RESERVE */
.reserve-text{
  width: 100%;
  max-width: 640px;
  height: 160px;
  margin-top: 18px;
  padding: 16px;
  font-size: 14px;
  line-height: 1.8;
  border: 1px solid rgba(0,0,0,0.18);
  background: transparent;
}

/* footer */
.ed-footer{
  padding: 60px 16px;
  text-align: center;
  font-size: 12px;
  opacity: .55;
}

/* Responsive spacing */
@media (max-width: 768px){
  .ed-sec{ padding: 56px 16px; }
  .ed-title{ margin-bottom: 22px; }
}

/* PRICE グラデ復活（#priceに直当て） */
#price{
  background:
    radial-gradient(600px 360px at 20% 15%, rgba(255,255,255,.18), rgba(255,255,255,0) 60%),
    linear-gradient(180deg, #cfe7ff 0%, #86c5ff 55%, #3a92ff 100%);
}

/* ==============================
   SERVICE / PRICE をフル幅化
============================== */
#service .ed-inner,
#price .ed-inner {
  max-width: none;        /* 制限解除 */
  width: 100%;
  padding-left: 6vw;     /* 画面端ギリギリは避ける */
  padding-right: 6vw;
}

/* 見出しを大胆に */
#service .ed-title,
#price .ed-title {
  font-size: clamp(40px, 7vw, 96px);
  letter-spacing: 0.28em;
  margin-bottom: 32px;
}

#service .ed-split {
  grid-template-columns: 1.2fr 0.8fr; /* テキストを主役に */
  gap: 4vw;
}

.price-list {
  max-width: none;
  width: 100%;
}

.price-row {
  font-size: clamp(16px, 2vw, 22px);
  padding: 20px 0;
}

@media (max-width: 768px) {
  #service .ed-inner,
  #price .ed-inner {
    padding-left: 20px;
    padding-right: 20px;
  }

  #service .ed-title,
  #price .ed-title {
    font-size: clamp(32px, 10vw, 56px);
    letter-spacing: 0.22em;
  }
}


/* PC時の2カラム外枠が1080pxで止まってる問題を潰す */
@media (min-width: 960px){
  .sp-wrap{
    max-width: none !important;
    width: 100% !important;
    margin: 0 !important;
    padding-left: 6vw !important;
    padding-right: 6vw !important;
  }
}

/* ===== PRICE 見出しをセンターにする ===== */


/* ===== FIX: PRICE 見出しを完全センター ===== */
#price .price-inner{
  border-left: none !important;
  padding-left: 0 !important;
}


/* PRICE の中身を中央基準に */
#price .ed-inner{
  display: flex;
  flex-direction: column;
  align-items: center;
}

/* 見出しは横幅100%でセンター */
#price .ed-title{
  width: 100%;
  text-align: center;
}

/* 料金リストは“箱”として中央に残す */
#price .price-list{
  width: 100%;
  max-width: 300px; /* 元の設計値に合わせる */
}


@media (min-width: 960px){
  #price{ margin-top: 200px !important; }
}

/* ===== FORCE MOVE: PRICE の青グラデを“背景だけ”移動 ===== */
#price{
  /* 見え方を動かすために少し拡大 */
  background-size: 130% 130%, 130% 130%;

  /* 2枚（radial, linear）それぞれの位置を指定 */
  background-position: 50% 35%, 30% 35%;

  /* 念のため繰り返しOFF（環境で差が出るのを防ぐ） */
  background-repeat: no-repeat, no-repeat;
}

/* ==============================
   PRICE 背景 作り直し（確定版）
============================== */
#price{
  position: relative;
  background:
    linear-gradient(
      180deg,
      #e7f2ff 0%,
      #b8dcff 45%,
      #6fb2ff 100%
    );
}

#price .ed-inner{
  max-width: 420px;
  margin: 0 auto;        /* 横センター */
  text-align: center;   /* 文字センター */
}

#price .price-list{
  width: auto;
  min-width: 260px;
  max-width: 320px;
  margin: 0 auto;
}

.price-row{
  display: flex;
  justify-content: space-between;
}

/* ===== FINAL FIX: PRICEのリストを“箱として”中央固定 ===== */
#price .price-list{
  width: auto !important;          /* 100%を殺す */
  max-width: 320px !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

/* 行の左右の寄せは維持 */
#price .price-row{
  display: flex;
  justify-content: space-between;
  gap: 24px;                       /* 左右が近すぎる時の保険 */
}

/* 金額側を揃えて「中央に見える」ようにする */
#price .price-row span:last-child{
  min-width: 7ch;
  text-align: right;
}

@media (min-width: 960px){
  #price .ed-inner{
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
}

#price{ outline: 6px solid hotpink !important; }

.service-points li{
  font-weight: 700;
  letter-spacing: .08em;
  background: #fff;
  border: 3px solid #111;
  padding: 10px 16px;
  box-shadow: 4px 4px 0 #111;
}
.service-points li:nth-child(odd){
  transform: rotate(-1.5deg);
}
.service-points li:nth-child(even){
  transform: rotate(1.2deg);
}
#service .ed-title{
  display: inline-block;
  background: #ffba08;
  color: #111;
  padding: 12px 28px;
  border: 4px solid #111;
  box-shadow: 6px 6px 0 #111;
  transform: rotate(-2deg);
}
#service .ed-title{
  max-width: calc(100% + 100px);
}

#service .ed-title{
  max-width: none;   /* ← これ絶対 */
}
@media (min-width: 960px){
  #service .ed-title{
    padding: 0px 18px;      /* ← 枠の余白を縮小 */
    border-width: 3px;      /* ← 線を細く */
    box-shadow: 4px 4px 0 #111; /* ← 影も比例縮小 */
    transform: rotate(-2deg) scale(0.9); /* ← 枠だけ締める */
    transform-origin: left center;
  }
}

@media (min-width: 960px){
  #service{
    padding-top: 15px;    /* ← 上の余白 */
    padding-bottom: 50px; /* ← 下の余白 */
  }
}

/* ==============================
   Flyer layout (自由配置っぽい“ズレ”)
============================== */
.flyer-block{ position: relative; }
.flyer-tilt-a{ transform: rotate(-0.4deg); }
.flyer-tilt-b{ transform: rotate(0.35deg); }
@media (min-width: 960px){
  /* “チラシ感”＝少しズラして置く */
  
  #service{ margin-top: 20px; }
}

/* ==============================
   LINE UP
============================== */
#lineup{
  overflow: hidden;
}

.lineup-inner{ max-width: none; padding-left: 6vw; padding-right: 6vw; }

.lineup-head{ margin-bottom: 18px; }
.lineup-title{
  display: inline-block;
  font-family: "Montserrat", sans-serif;
  font-weight: 900;
  letter-spacing: 0.24em;
  font-size: clamp(42px, 6vw, 92px);

  /* アメコミ見出し（SERVICE/PRICEと揃う） */
  background: #ff4d6d;
  color: #fff;
  padding: 10px 26px;
  border: 4px solid #111;
  box-shadow: 7px 7px 0 #111;
  transform: rotate(-1.2deg);
}
.lineup-sub{
  margin-top: 12px;
  font-size: 14px;
  letter-spacing: .06em;
  color: rgba(0,0,0,.66);
}

/* Tabs */
.lineup-tabs{
  display: flex;
  gap: 10px;
  overflow-x: auto;
  padding: 10px 2px 16px;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
.lineup-tabs::-webkit-scrollbar{ display:none; }

.lineup-tab{
  flex: 0 0 auto;
  border: 3px solid #111;
  background: #fff;
  padding: 10px 14px;
  border-radius: 999px;
  font-weight: 900;
  letter-spacing: .14em;
  font-size: 12px;
  box-shadow: 4px 4px 0 #111;
  cursor: pointer;
  transform: translateY(0);
  transition: transform .15s ease, filter .15s ease;
}
.lineup-tab:hover{ transform: translateY(-2px); }
.lineup-tab.is-active{
  background: #111;
  color: #fff;
}

/* Slider */
.lineup-slider{
  position: relative;
  padding: 6px 0 10px;
}

.lineup-track{
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(260px, 320px);
  gap: 16px;

  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-padding: 20px;
  padding: 10px 44px 20px;

  -webkit-overflow-scrolling: touch;
}
.lineup-track::-webkit-scrollbar{ height: 10px; }
.lineup-track::-webkit-scrollbar-thumb{ background: rgba(0,0,0,.16); border-radius: 999px; }

.lineup-card{
  scroll-snap-align: start;
  background: #fff;
  border: 3px solid #111;
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 6px 6px 0 #111;
  transform: rotate(0.2deg);
}

.lineup-media{
  aspect-ratio: 16/10;
  background: linear-gradient(135deg, rgba(0,0,0,.05), rgba(0,0,0,0));
  display: grid;
  place-items: center;
}
.lineup-media img{
  width: 92%;
  height: 92%;
  object-fit: contain;
  filter: drop-shadow(0 10px 18px rgba(0,0,0,.25));
}

.lineup-body{
  padding: 14px 16px 16px;
}
.lineup-kicker{
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 10px;
}
.lineup-icon{
  width: 34px; height: 34px;
  border-radius: 10px;
  background: #3a92ff;
  display: grid;
  place-items: center;
  border: 3px solid #111;
  box-shadow: 3px 3px 0 #111;
  font-weight: 900;
  color: #fff;
}
.lineup-name{
  font-weight: 1000;
  letter-spacing: .16em;
  font-size: 13px;
}
.lineup-desc{
  font-size: 13px;
  line-height: 1.8;
  color: rgba(0,0,0,.68);
}

/* arrows */
.lineup-nav{
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 36px; height: 54px;
  border-radius: 14px;
  border: 3px solid #111;
  background: #fff;
  box-shadow: 4px 4px 0 #111;
  font-size: 28px;
  font-weight: 900;
  cursor: pointer;
  z-index: 2;
}
.lineup-nav.prev{ left: 4px; }
.lineup-nav.next{ right: 4px; }

@media (max-width: 768px){
  .lineup-inner{ padding-left: 20px; padding-right: 20px; }
  .lineup-track{ padding-left: 12px; padding-right: 12px; }
  .lineup-nav{ display:none; } /* スマホはスワイプ優先 */
}

/* ==============================
   PCだけ SERVICE / PRICE と LINE UP を重ねる
============================== */
@media (min-width: 960px){
  #lineup{
    margin-top: -130px;   /* ← ここで自由に調整 */
    position: relative;
    z-index: 3;
  }
}

@media (min-width: 960px){
  .lineup-title{
    font-size: clamp(36px, 4.5vw, 64px); /* ← 小さく */
    letter-spacing: 0.18em;              /* ← 詰める */
    padding: 6px 18px;                   /* ← 枠を細く見せる */
    border-width: 3px;
    box-shadow: 5px 5px 0 #111;
  }
}

/* ==============================
   SECTION TITLE: 疾走スライドイン
   SERVICE: 左→中 / PRICE: 右→中
============================== */

/* タイトル文字だけ動かす（枠/回転はh2側で保持） */
.ed-title .title-run{
  display: inline-block;
  will-change: transform, opacity, filter;
}

/* 初期（画面外） */
#service.reveal .ed-title .title-run{
  opacity: 0;
  transform: translateX(-130vw);
  filter: blur(6px);
}

#price.reveal .ed-title .title-run{
  opacity: 0;
  transform: translateX(130vw);
  filter: blur(6px);
}

/* 見出し（枠ごと）だけ疾走 */
.ed-title.title-dash{
  will-change: transform, opacity, filter;
}

.ed-title.title-dash.title-dash--left{
  opacity: 0;
  transform: translateX(-130vw) skewX(10deg);
  filter: blur(6px);
}

.ed-title.title-dash.title-dash--right{
  opacity: 0;
  transform: translateX(130vw) skewX(-10deg);
  filter: blur(6px);
}

/* 既存の is-inview をそのまま利用（revealの監視に乗せる） */
#service.reveal.is-inview .ed-title.title-dash--left{
  animation: dashTitleLeft 0.82s cubic-bezier(.12,.9,.16,1) both;
}

#price.reveal.is-inview .ed-title.title-dash--right{
  animation: dashTitleRight 0.82s cubic-bezier(.12,.9,.16,1) both;
}

@keyframes dashTitleLeft{
  0%   { opacity:0; transform:translateX(-130vw) skewX(12deg); filter:blur(8px); }
  62%  { opacity:1; transform:translateX(18px)  skewX(-3deg);  filter:blur(0); }
  78%  { transform:translateX(-8px) skewX(1.5deg); }
  100% { opacity:1; transform:translateX(0) skewX(0); }
}

@keyframes dashTitleRight{
  0%   { opacity:0; transform:translateX(130vw) skewX(-12deg); filter:blur(8px); }
  62%  { opacity:1; transform:translateX(-18px) skewX(3deg);  filter:blur(0); }
  78%  { transform:translateX(8px)  skewX(-1.5deg); }
  100% { opacity:1; transform:translateX(0) skewX(0); }
}

@media (prefers-reduced-motion: reduce){
  .ed-title.title-dash{ opacity:1 !important; transform:none !important; filter:none !important; animation:none !important; }
}

/* 止まった後にブラーが残るのを強制的に消す */
#service.reveal.is-inview .ed-title.title-dash--left,
#price.reveal.is-inview .ed-title.title-dash--right{
  filter: none !important;
}

/* SERVICE 見出しをさらに左へ寄せる（最終位置調整） */
#service.reveal.is-inview .ed-title{
  transform: translateX(-32px) rotate(-2deg) scale(0.9) !important;
}

/* ==============================
   LINE UP：左から疾走スライドイン
============================== */

#lineup.reveal .lineup-title{
  opacity: 0;
  transform: translateX(-130vw) skewX(10deg);
  filter: blur(6px);
  will-change: transform, opacity, filter;
}

/* inview で発火 */
#lineup.reveal.is-inview .lineup-title{
  animation: dashLineupLeft 0.82s cubic-bezier(.12,.9,.16,1) both;
}

/* SERVICEと同系統の疾走カーブ */
@keyframes dashLineupLeft{
  0%   { opacity:0; transform:translateX(-130vw) skewX(12deg); filter:blur(8px); }
  62%  { opacity:1; transform:translateX(18px)  skewX(-3deg);  filter:blur(0); }
  78%  { transform:translateX(-8px) skewX(1.5deg); }
  100% { opacity:1; transform:translateX(0) skewX(0); filter:blur(0); }
}

/* ブラー残り防止 */
#lineup.reveal.is-inview .lineup-title{
  filter: none !important;
}

@media (prefers-reduced-motion: reduce){
  #lineup.reveal .lineup-title{
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    animation: none !important;
  }
}

#service.ed-sec{
  padding-top: 12px;  /* 0〜24pxで好み */
}

/* PRICE基準 */
#price {
  position: relative;
}

/* 上に置くビジュアル */
.price-visual {
  position: absolute;
  top: -180px;          /* ←ここで上下調整 */
  right: 0;             /* PRICEが右カラムだから */
  width: 360px;         /* 好きに */
  z-index: 1;
  pointer-events: none; /* UI邪魔しない */
}

.price-visual img {
  width: 100%;
  height: auto;
  display: block;
}

/* PRICE基準 */
#price {
  position: relative;
}

/* PRICE上のバイク画像（微調整ノブ） */
.price-visual {
  position: absolute;

  /* ==== 🔧 ここだけ触る ==== */
  top: -120px;     /* ↑ 上下（マイナスで上へ） */
  right: 30px;    /* ←→ 左右（マイナスでさらに右へ） */

  width: 500px;    /* サイズ */
  z-index:0;
  pointer-events: none;
  opacity: 30%;
}

.price-visual img {
  width: 100%;
  height: auto;
  display: block;
}

/* PRICE 全体をレイヤー基準にする */
#price {
  position: relative;
  overflow: hidden; /* はみ出し制御（必要なら visible に） */
}

/* バイク画像：文字の後ろ */
#price .price-bike {
  position: absolute;
  inset: 0;
  margin: auto;

  width: 75%;
  max-width: 420px;

  z-index: 1;          /* ← 文字より下 */
  opacity: 0.9;        /* 少しだけ落とすと読みやすい */
  pointer-events: none;
}

/* テキスト類：必ず一番手前 */
#price .ed-title,
#price .price-list,
#price .cta-link,
#price .ed-note {
  position: relative;
  z-index: 2;          /* ← バイクより上 */
}

/* ===== FIX: 料金の左右間隔を広げる（親の幅を広げる） ===== */

/* 料金表の横幅を広げる（←これが主犯） */
#price .price-list{
  width: 100% !important;
  max-width: 520px !important;   /* ここで広さ調整：420〜600で好み */
  margin-left: auto !important;
  margin-right: auto !important;
}

/* 行は左右端へ */
#price .price-row{
  display: flex;
  justify-content: space-between;
  gap: 0 !important;             /* 余計なgapを殺す */
}

/* 金額は右寄せで揃える（見やすさUP） */
#price .price-row span:last-child{
  min-width: 8ch;                /* 桁ぶれ防止 */
  text-align: right;
}

:root{
  --stroke-w: 5px;                 /* ← ストローク幅：ここだけ触る */
  --stroke-color: #ffffff;         /* ← ストローク色 */
}

/* PRICE 料金文字：白ストローク */
#price .price-row span{
  text-shadow:
    calc(var(--stroke-w) * 1) 0 0 var(--stroke-color),
    calc(var(--stroke-w) * -1) 0 0 var(--stroke-color),
    0 calc(var(--stroke-w) * 1) 0 var(--stroke-color),
    0 calc(var(--stroke-w) * -1) 0 var(--stroke-color);
}

/* H2 PRICE：白ストローク */
#price .ed-title{
  text-shadow:
    calc(var(--stroke-w) * 1) 0 0 var(--stroke-color),
    calc(var(--stroke-w) * -1) 0 0 var(--stroke-color),
    0 calc(var(--stroke-w) * 1) 0 var(--stroke-color),
    0 calc(var(--stroke-w) * -1) 0 var(--stroke-color);
}

/* 見出しだけ Urban Jungle */
#service .ed-title,
#price .ed-title,
.lineup-title{
  font-family: "whoody", "Montserrat", sans-serif;
}

/* ==============================
   ヘッダーも Urban Jungle
============================== */

/* ロゴ文字 */
.header-logo{
  font-family: "whoody", "Montserrat", sans-serif;
  letter-spacing: 0.18em;   /* 見出しより少し控えめ */
}

/* ナビゲーション文字 */
.header-nav a{
  font-family: "UrbanJungle", "Montserrat", sans-serif;
  letter-spacing: 0.14em;   /* 小さい文字なので詰める */
}


/* =========================================
   MOBILE HEADER — FINAL (強制復元・上書き)
========================================= */
@media (max-width: 768px){

  /* PC用は隠す / ハンバーガー表示 */
  .header-nav{ display:none !important; }
  .header-contact-btn{ display:none !important; }
  .nav-toggle-label{ display:block !important; margin-left:auto !important; }

  /* ===== オーバーレイ土台 ===== */
  .header-nav-mobile{
    position: fixed !important;
    inset: 0 !important;
    display: block !important;
    opacity: 0 !important;
    pointer-events: none !important;
    transition: opacity .25s ease !important;
    z-index: 120 !important;
  }
  .nav-toggle:checked ~ .header-nav-mobile{
    opacity: 1 !important;
    pointer-events: auto !important;
  }

  /* 背景暗幕 */
  .mobile-menu-backdrop{
    position:absolute !important;
    inset:0 !important;
    background: rgba(0,0,0,.25) !important;
  }

  /* ===== 中央カード ===== */
  .mobile-menu-panel{
    position:absolute !important;
    inset:0 !important;
    margin:auto !important;
    width: 82% !important;
    max-width: 420px !important;
    

    background:#fff !important;
    border-radius: 32px !important;
    box-shadow: 0 20px 50px rgba(0,0,0,.45) !important;
    overflow:hidden !important;

    display:flex !important;
    flex-direction:column !important;

   
   
  }

  /* 下の“空っぽい”グラデ帯 */
  .mobile-menu-panel::after{
    content:"" !important;
    position:absolute !important;
    left:0 !important; right:0 !important; bottom:0 !important;
    height: 70px !important;
    background: linear-gradient(to top, #6fb6ff 0%, #ffffff 100%) !important;
  }

  /* CLOSEボタン（黒いピル） */
  .mobile-menu-close{
    align-self:flex-end !important;
    margin: 16px 18px 4px !important;
    padding: 6px 18px !important;
    border-radius: 999px !important;
    background:#111 !important;
    color:#fff !important;

    font-size: 11px !important;
    font-weight: 700 !important;
    letter-spacing: .16em !important;
    cursor:pointer !important;
    z-index: 2 !important;
  }

  /* ===== メニュー（余計な“灰色ボックス化”を殺す） ===== */
  .mobile-menu-nav{
    list-style:none !important;
    padding: 26px 24px 0 !important;
    margin:0 !important;

    display:flex !important;
    flex-direction:column !important;
    gap: 18px !important;
    align-items:center !important;

    background: transparent !important;
    z-index:2 !important;
  }
  .mobile-menu-nav li,
  .mobile-menu-nav a{
    background: transparent !important;
    box-shadow: none !important;
    border: none !important;
  }

  /* メニュー文字 */
  .mobile-menu-nav a{
    position: relative !important;
    display:inline-flex !important;
    align-items:center !important;

    text-decoration:none !important;
    font-family: "Montserrat", sans-serif !important;
    font-size: 22px !important;
    font-weight: 800 !important;
    letter-spacing: .18em !important;
    color:#111 !important;
    transition: color .2s ease, transform .2s ease !important;
  }

  /* PCと同じホバー演出（ホバーできる端末だけ） */
  @media (hover:hover) and (pointer:fine){
    .mobile-menu-nav a::after{
      content:"" !important;
      position:absolute !important;
      left:0 !important; right:0 !important;
      bottom:-6px !important;
      margin:0 auto !important;
      width:0 !important;
      height:3px !important;
      border-radius:999px !important;
      background: linear-gradient(90deg, #ffba08, #d62828, #f72585) !important;
      transition: width .2s ease !important;
    }
    .mobile-menu-nav a:hover{
      color:#d62828 !important;
      transform: translateY(-2px) !important;
    }
    .mobile-menu-nav a:hover::after{
      width:100% !important;
    }
  }

  /* タイヤ回転 */
  .menu-wheel{
    width:26px !important;
    height:26px !important;
    object-fit:contain !important;
    opacity:.95 !important;
    animation: wheel-spin 2.4s linear infinite !important;
  }
  @keyframes wheel-spin{
    from{ transform: rotate(0deg); }
    to{ transform: rotate(360deg); }
  }

  /* CONTACTボタン（帯の真ん中） */
  .mobile-menu-contact{
    position:absolute !important;
    left:50% !important;
    bottom:36px !important; /* 120px帯の真ん中 */
    transform: translateX(-50%) !important;

    z-index:2 !important;
    width:70% !important;
    text-align:center !important;
    padding: 10px 0 !important;
    border-radius:999px !important;

    background:#111 !important;
    color:#fff !important;
    font-size:14px !important;
    font-weight:800 !important;
    letter-spacing:.14em !important;
    text-decoration:none !important;
  }
}

.mobile-menu-panel{
  position:absolute !important;
  inset:0 !important;
  margin:auto !important;
  width: 82% !important;
  max-width: 420px !important;

  /* ここが重要：3段レイアウト */
  display: grid !important;
  grid-template-rows: auto 1fr 110px !important; /* 上 / 中 / 下(帯) */
  align-items: center !important;

  /* サイズ感を前の完成に寄せる */
  
  background:#fff !important;
  border-radius: 32px !important;
  box-shadow: 0 20px 50px rgba(0,0,0,.45) !important;
  overflow:hidden !important;

  padding-bottom: 0 !important; /* ← flex時代の名残を殺す */
}

.mobile-menu-panel{
  width: 82% !important;
  max-width: 360px !important; /* ← 420 → 360 */
  border-radius: 28px !important;
}

/* =========================
   MOBILE MENU: CLOSEを前の“小ピル”に戻す
   （gridだとデフォで横に伸びるのを止める）
========================= */
@media (max-width: 768px){

  
  .mobile-menu-close{
    /* gridの “stretch” を止める */
    justify-self: end !important;
    align-self: start !important;

    /* 横に伸びないように */
    width: max-content !important;
    display: inline-flex !important;

    /* 前っぽい位置とサイズ */
    margin: 16px 18px 0 !important;
    padding: 7px 16px !important;
    border-radius: 999px !important;
    font-size: 11px !important;
    letter-spacing: .16em !important;
  }

  /* メニュー位置が下がりすぎてるのも詰める */
  .mobile-menu-nav{
    padding-top: 18px !important;
    gap: 14px !important;
  }

  /* 下の青帯も少しだけ薄く・短く（前の見た目寄せ） */
  .mobile-menu-panel::after{
    height: 80px !important;
  }

  .mobile-menu-contact{
    bottom: 28px !important;
    width: 72% !important;
    padding: 11px 0 !important;
  }
}

/* =========================
   MOBILE MENU：高さ・余白 調整ノブ
========================= */
@media (max-width: 768px){

  /* 白い箱そのもの */
  .mobile-menu-panel{
    max-width: 360px !important;

    /* 🔧 高さをここで決める（これが一番効く） */
    height: auto !important;
    max-height: 450px !important;   /* ← 480〜560で好み */

    /* 🔧 上下の内側余白 */
    padding-top: 12px !important;
    padding-bottom: 70px !important; /* CONTACT帯ぶん */
  }

  /* 上の CLOSE 周りの余白 */
  .mobile-menu-close{
    margin-top: 12px !important;
    margin-bottom: 8px !important;
  }

  /* メニュー3行の上下余白 */
  .mobile-menu-nav{
    padding-top: 12px !important;
    gap: 12px !important;           /* 行間 */
  }

  /* 下の青い帯（これがデカく見える原因） */
  .mobile-menu-panel::after{
    height: 60px !important;        /* ← 50〜80で調整 */
  }

  /* CONTACTボタン位置 */
  .mobile-menu-contact{
    bottom: 18px !important;
    padding: 10px 0 !important;
  }
}

/* LINEUP: カテゴリ（タブ）を見せない */
#lineup .lineup-tabs { display: none !important; }


/* ===== LINE UP：デフォルト4枚表示 ===== */
@media (min-width: 960px){
  .lineup-track{
    grid-auto-columns: calc((100% - (16px * 3)) / 4);
  }
}

.lineup-slider{
  padding-right: 56px;
}

.lineup-nav.next{
  right: -12px;
}

/* ===== SP：LINE UP 見出しをセンター ===== */
@media (max-width: 768px){
  #lineup .lineup-head{
    text-align: center;
  }

  #lineup .lineup-title{
    margin-left: auto;
    margin-right: auto;
    transform: rotate(-1deg); /* 傾きはそのまま */
  }
}
@media (max-width: 768px){
  .lineup-slider{
    padding-left: 36px;
    padding-right: 36px;
  }

  .lineup-track{
    padding-left: 8px;
    padding-right: 8px;
  }
}

/* ===== SPでも矢印を強制表示 ===== */
@media (max-width: 768px){
  #lineup .lineup-nav{
    display: grid !important;       /* ← display:none を殺す */
    place-items: center;
    width: 34px;
    height: 50px;
    font-size: 26px;
    opacity: 0.95;
    z-index: 10;
  }
  #lineup .lineup-nav.prev{ left: 6px; }
  #lineup .lineup-nav.next{ right: 6px; }
}

/* ==============================
   HERO LEFT RESERVE
============================== */

.hero-left-layer{
  position: absolute;
  left: 6vw;
  top: 50%;
  transform: translateY(-50%);
  z-index: 6; /* ロゴより前 */
  width: min(460px, 42vw);
}

/* ヒーロー内なので余白を調整 */
.hero-left-layer .reserve-sec{
  padding: 0;
}

.hero-left-layer .reserve-inner{
  padding: 0;
}

/* ロゴと被る場合の微調整ノブ */
@media (min-width: 960px){
  .hero-left-layer{
    left: 5vw;   /* ← 左右微調整 */
  }
}

/* スマホは中央に戻す */
@media (max-width: 768px){
  .hero-left-layer{
    position: relative;
    left: auto;
    top: auto;
    transform: none;
    width: 100%;
    margin-top: 32px;
    z-index: 1;
  }
}

/* ==============================
   RESERVE
============================== */
.reserve-sec{ padding: 72px 16px; overflow:hidden; }
.reserve-inner{ max-width: 1080px; margin: 0 auto; padding-left: 6vw; padding-right: 6vw; }

.reserve-head{ margin-bottom: 18px; }
.reserve-title{
  display:inline-block;
  font-family: "whoody","Montserrat",sans-serif;
  font-weight: 900;
  letter-spacing: .22em;
  font-size: clamp(42px, 6vw, 92px);
  background:#111;
  color:#fff;
  padding: 10px 26px;
  border: 4px solid #111;
  box-shadow: 7px 7px 0 #111;
  transform: rotate(-1.0deg);
}
.reserve-sub{
  margin-top: 12px;
  font-size: 14px;
  letter-spacing: .06em;
  color: rgba(0,0,0,.66);
}

.reserve-form{
  margin-top: 18px;
  background: rgba(255,255,255,.72);
  border: 3px solid #111;
  border-radius: 22px;
  box-shadow: 8px 8px 0 #111;
  padding: 18px 18px 20px;
  backdrop-filter: blur(6px);
}

.reserve-block{ padding: 12px 8px 14px; }
.reserve-block + .reserve-block{ border-top: 1px solid rgba(0,0,0,.10); }

.reserve-block-title{
  font-weight: 900;
  letter-spacing: .12em;
  margin-bottom: 10px;
}

.reserve-grid2{
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}

.reserve-field{ display:flex; flex-direction:column; gap: 8px; }
.reserve-label{
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .14em;
  opacity: .75;
}
.reserve-field input{
  height: 44px;
  border: 3px solid #111;
  border-radius: 14px;
  padding: 10px 12px;
  font-weight: 700;
  letter-spacing: .06em;
  background:#fff;
  outline: none;
  box-shadow: 4px 4px 0 #111;
}
.reserve-field input:focus{
  transform: translateY(-1px);
}
.reserve-help{
  font-size: 12px;
  opacity: .55;
}

/* bike cards */
.reserve-cards{
  display:grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}
.bike-card{
  text-align:left;
  border: 3px solid #111;
  border-radius: 18px;
  background:#fff;
  box-shadow: 6px 6px 0 #111;
  padding: 14px 14px 12px;
  cursor:pointer;
  transition: transform .15s ease, filter .15s ease;
}
.bike-card:hover{ transform: translateY(-2px); }
.bike-card.is-active{
  background: #111;
  color: #fff;
  transform: translateY(-3px);
}
.bike-card-top{ display:flex; align-items:center; gap: 10px; margin-bottom: 10px; }
.bike-badge{
  width: 34px; height: 34px;
  border-radius: 12px;
  display:grid; place-items:center;
  border: 3px solid #111;
  box-shadow: 3px 3px 0 #111;
  font-weight: 1000;
  letter-spacing: .08em;
  background:#ffba08;
  color:#111;
}
.bike-card.is-active .bike-badge{
  background:#fff;
  color:#111;
}
.bike-name{ font-weight: 1000; letter-spacing: .14em; font-size: 13px; }
.bike-desc{ font-size: 13px; line-height: 1.7; opacity: .8; }

/* contact switch */
.reserve-switch{
  display:flex;
  gap: 10px;
  margin: 6px 0 12px;
}
.switch-btn{
  border: 3px solid #111;
  background:#fff;
  border-radius: 999px;
  padding: 10px 14px;
  font-weight: 900;
  letter-spacing: .14em;
  font-size: 12px;
  box-shadow: 4px 4px 0 #111;
  cursor:pointer;
  transition: transform .15s ease;
}
.switch-btn:hover{ transform: translateY(-2px); }
.switch-btn.is-active{ background:#111; color:#fff; }

/* agree */
.reserve-check{
  display:flex;
  align-items:center;
  gap: 10px;
  margin-top: 10px;
  font-weight: 800;
  letter-spacing: .06em;
}
.reserve-check input{ width: 18px; height: 18px; }

/* summary */
.reserve-summary{
  margin-top: 14px;
  border: 3px solid #111;
  border-radius: 18px;
  background: #fff;
  box-shadow: 6px 6px 0 #111;
  padding: 14px 14px 12px;
}
.sum-title{ font-weight: 1000; letter-spacing:.14em; margin-bottom: 8px; }
.sum-row{
  display:flex;
  justify-content: space-between;
  gap: 14px;
  padding: 8px 0;
  border-top: 1px solid rgba(0,0,0,.10);
}
.sum-row:first-of-type{ border-top: none; }
.sum-row span{ opacity: .65; font-weight: 800; letter-spacing:.08em; }
.sum-row b{ letter-spacing:.10em; }

/* submit */
.reserve-submit{
  width: 100%;
  margin-top: 14px;
  height: 54px;
  border-radius: 18px;
  border: 3px solid #111;
  background: linear-gradient(90deg, #ffba08, #d62828, #f72585);
  color:#fff;
  font-weight: 1000;
  letter-spacing: .18em;
  font-size: 14px;
  box-shadow: 8px 8px 0 #111;
  cursor:pointer;
  transition: transform .15s ease, filter .15s ease;
}
.reserve-submit:hover{ transform: translateY(-2px); filter: brightness(1.02); }

.reserve-note{
  margin-top: 10px;
  font-size: 12px;
  opacity: .55;
  text-align:center;
}

/* done */
.reserve-done{
  margin-top: 16px;
  border: 3px solid #111;
  border-radius: 22px;
  background: #fff;
  box-shadow: 8px 8px 0 #111;
  padding: 18px;
}
.done-title{ font-weight: 1000; letter-spacing:.14em; margin-bottom: 6px; }
.done-text{ opacity: .75; }

/* responsive */
@media (max-width: 768px){
  .reserve-inner{ padding-left: 20px; padding-right: 20px; }
  .reserve-grid2{ grid-template-columns: 1fr; }
  .reserve-cards{ grid-template-columns: 1fr; }
}

/* ==============================
   RESERVE compact for HERO
============================== */
.hero-left-layer{
  width: min(380px, 40vw); /* ←ここで全体の横幅を締める */
}

/* タイトル類はヒーローでは省略してOK（残したいなら消さないで） */
.hero-left-layer .reserve-head{ display:none; }

.hero-left-layer .reserve-form{
  padding: 12px 12px 12px;
  border-width: 2px;
  border-radius: 18px;
  box-shadow: 6px 6px 0 #111;
}

.hero-left-layer .reserve-block{
  padding: 8px 4px 10px;
}
.hero-left-layer .reserve-block-title{
  margin-bottom: 8px;
  font-size: 12px;
  letter-spacing: .12em;
}

.hero-left-layer .reserve-field input{
  height: 40px;
  border-width: 2px;
  border-radius: 12px;
  box-shadow: 3px 3px 0 #111;
  font-size: 13px;
}

.hero-left-layer .reserve-help,
.hero-left-layer .reserve-note{
  display:none; /* ヒーローでは情報量を削る */
}

/* Summaryもヒーローでは圧縮（非表示にしたければ display:none;） */
.hero-left-layer .reserve-summary{
  margin-top: 10px;
  border-width: 2px;
  border-radius: 16px;
  box-shadow: 4px 4px 0 #111;
  padding: 10px 10px 8px;
}
.hero-left-layer .sum-row{ padding: 6px 0; }

/* ボタンも小さめ */
.hero-left-layer .reserve-submit{
  height: 48px;
  border-width: 2px;
  border-radius: 16px;
  box-shadow: 6px 6px 0 #111;
  font-size: 13px;
}

/* ====== 車種：タブUI ====== */
.reserve-tabs{
  display:flex;
  gap: 8px;
  overflow-x:auto;
  padding: 6px 2px 10px;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
.reserve-tabs::-webkit-scrollbar{ display:none; }

.reserve-tab{
  flex: 0 0 auto;
  border: 2px solid #111;
  background:#fff;
  padding: 8px 12px;
  border-radius: 999px;
  font-weight: 900;
  letter-spacing: .14em;
  font-size: 11px;
  box-shadow: 3px 3px 0 #111;
  cursor: pointer;
  transition: transform .15s ease;
}
.reserve-tab:hover{ transform: translateY(-2px); }
.reserve-tab.is-active{ background:#111; color:#fff; }

/* モデル選択（小さいボタン群） */
.reserve-models{
  display:flex;
  flex-wrap: wrap;
  gap: 8px;
}
.reserve-model{
  border: 2px solid #111;
  background:#fff;
  padding: 10px 10px;
  border-radius: 14px;
  box-shadow: 3px 3px 0 #111;
  cursor:pointer;
  text-align:left;
  min-width: 46%;
}
.reserve-model.is-active{ background:#111; color:#fff; }
.reserve-model .m-name{
  font-weight: 1000;
  letter-spacing: .10em;
  font-size: 12px;
}
.reserve-model .m-desc{
  margin-top: 4px;
  font-size: 12px;
  opacity: .75;
  line-height: 1.5;
}

/* スマホは通常フローへ（既に hero-left-layer で下に落としてる想定） */
@media (max-width: 768px){
  .hero-left-layer{ width: 100%; }
  .reserve-model{ min-width: 100%; }
}

/* ==============================
   SERVICE : BG HERO LOGO (SP only)
============================== */

/* まず土台（重ねるため） */
#service .ed-inner{
  position: relative;
}

/* ロゴはデフォ非表示（PCでは出さない） */
.service-bg-logo{
  display: none;
}

/* スマホだけ「本文に被せる」 */
@media (max-width: 768px){
  .service-bg-logo{
    display: block;
    position: absolute;
    animation: serviceBgSpin 36s linear infinite;

    /* ↓ ドカンと被せる位置（ここが調整ノブ） */
    left: -18vw;
    top: 110px;

    width: 120vw;     /* 画面より大きく */
    height: 120vw;
    max-width: 520px; /* デカすぎ防止 */
    max-height: 520px;

    background: url("../images/hero-logo.png") center / 82% no-repeat;

    /* 文字の後ろ */
    z-index: 0;
    pointer-events: none;

    /* “薄く”馴染ませる（ここも調整ノブ） */
    opacity: 0.22;
    filter: blur(0px) saturate(1.05) drop-shadow(0 14px 26px rgba(0,0,0,.18));

    /* ちょい回転だけ固定でも良い */
    transform: rotate(-8deg);
  }

  /* 本文を確実に前へ */
  #service .ed-title,
  #service .ed-lead,
  #service .ed-body,
  #service .service-points{
    position: relative;
    z-index: 1;
  }
}

@keyframes serviceBgSpin{
  from{ transform: rotate(0deg); }
  to{ transform: rotate(360deg); }
}
@media (max-width: 768px){
  .service-bg-logo{
    left: -10vw;
    top: 0px;

    width: 140vw;
    height: 140vw;
    max-width: 560px;
    max-height: 560px;

    opacity: 0.18;
    transform: rotate(-12deg);
  }
}
/* ===== SERVICE の p だけ読みやすくする ===== */
#service .ed-body {
  color: rgba(0,0,0,.78);        /* 少しだけ濃く */
  line-height: 2.05;             /* 行間を広げて視認性UP */
  letter-spacing: .02em;         /* 詰まり防止 */
  text-shadow: 0 1px 0 rgba(255,255,255,.6); /* 白背景との分離 */
}

/* スマホはさらに一段階だけ強く */
@media (max-width: 768px) {
  #service .ed-body {
    color: rgba(0,0,0,.88);
    line-height: 2.15;
  }
}

/* =========================
   SERVICE：リード＋本文
========================= */

/* リード文（必要なときに、必要なだけ。） */
#service .ed-lead {
  color: #111;
  font-weight: 800;          /* ← 本文より一段太い */
  line-height: 1.8;
  letter-spacing: .04em;

  /* ごく薄い黄色ストローク */
  text-shadow:
    0.5px 0 0 #ffba08,
   -0.5px 0 0 #ffba08,
    0 0.5px 0 #ffba08,
    0 -0.5px 0 #ffba08;
}

/* 本文 */
#service .ed-body {
  color: #111;
  font-weight: 700;
  line-height: 2.05;
  letter-spacing: .02em;

  /* 本文用：さらに控えめ */
  text-shadow:
    0.6px 0 0 #ffba08,
   -0.6px 0 0 #ffba08,
    0 0.6px 0 #ffba08,
    0 -0.6px 0 #ffba08;
}

/* スマホ時だけ少し補強 */
@media (max-width: 768px) {
  #service .ed-lead {
    text-shadow:
      0.7px 0 0 #ffba08,
     -0.7px 0 0 #ffba08,
      0 0.7px 0 #ffba08,
      0 -0.7px 0 #ffba08;
  }

  #service .ed-body {
    text-shadow:
      0.8px 0 0 #ffba08,
     -0.8px 0 0 #ffba08,
      0 0.8px 0 #ffba08,
      0 -0.8px 0 #ffba08;
  }
}

/* HOW IT WORKS (Top) */
.howto-top{
  padding: 72px 16px;
  text-align: center;
}

.howto-title{
  font-family: "whoody","Montserrat",sans-serif;
  font-size: clamp(32px,5vw,64px);
  letter-spacing: .28em;
  margin-bottom: 40px;
}

.howto-steps{
  display: grid;
  grid-template-columns: repeat(3,1fr);
  gap: 32px;
  max-width: 1080px;
  margin: 0 auto;
}

.howto-step{
  background: #fff;
  border: 3px solid #111;
  border-radius: 22px;
  box-shadow: 6px 6px 0 #111;
  padding: 18px;
  transform: rotate(-0.5deg);
}

.howto-step:nth-child(2){
  transform: rotate(0.6deg);
}

.howto-img{
  aspect-ratio: 4 / 3;
  border-radius: 16px;
  overflow: hidden;
  margin-bottom: 14px;
}

.howto-img img{
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.howto-text{
  font-size: 14px;
  line-height: 1.9;
  letter-spacing: .04em;
}

.howto-text strong{
  display: block;
  margin-bottom: 6px;
  letter-spacing: .18em;
}

.howto-link{
  display: inline-block;
  margin-top: 36px;
  font-weight: 900;
  letter-spacing: .18em;
  text-decoration: none;
  color: #111;
  border-bottom: 2px solid #111;
}

.howto-link:hover{
  opacity: .7;
}

/* SP */
@media (max-width: 768px){
  .howto-steps{
    grid-template-columns: 1fr;
    gap: 24px;
  }
}

@media (max-width: 768px){
  .mobile-menu-nav a{
    font-family: "whoody", "Montserrat", sans-serif !important;
    letter-spacing: .18em; /* 好みで微調整 */
  }
}

/* ==============================
   FOOTER
============================== */
.site-footer{
  background: #111;
  color: #fff;
  padding: 80px 16px 40px;
  position: relative;
}

.footer-inner{
  max-width: 1080px;
  margin: 0 auto;
  display: grid;
  gap: 40px;
  text-align: center;
}

/* ロゴ */
.footer-logo{
  font-family: "whoody","Montserrat",sans-serif;
  font-size: clamp(22px, 4vw, 32px);
  letter-spacing: .22em;
  font-weight: 900;
}

/* キャッチ */
.footer-tagline{
  margin-top: 12px;
  font-size: 13px;
  line-height: 1.8;
  opacity: .75;
}

/* ナビ */
.footer-nav{
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 18px 26px;
}

.footer-nav a{
  color: #fff;
  text-decoration: none;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .18em;
  opacity: .7;
  transition: opacity .2s ease, transform .2s ease;
}

.footer-nav a:hover{
  opacity: 1;
  transform: translateY(-2px);
}

/* RESERVEだけ強調 */
.footer-reserve{
  opacity: 1;
  position: relative;
}

.footer-reserve::after{
  content:"";
  position:absolute;
  left:0;
  bottom:-4px;
  width:100%;
  height:2px;
  background: linear-gradient(90deg,#ffba08,#d62828,#f72585);
}

/* コピーライト */
.footer-copy{
  margin-top: 10px;
  font-size: 11px;
  opacity: .5;
}

/* SP微調整 */
@media (max-width: 768px){
  .site-footer{
    padding: 64px 16px 32px;
  }

  .footer-nav{
    gap: 14px 18px;
  }
}

/* ===== HOW TO USE PAGE ===== */
.howto-page{
  padding-top: 110px; /* 固定ヘッダー分 */
  background: linear-gradient(180deg, #f6f7f8 0%, #eef6ff 55%, #f5f2ec 100%);
  min-height: 100vh;
}

.howto-hero{
  text-align:center;
  padding: 56px 16px 26px;
}

.howto-hero-title{
  font-family: "whoody","Montserrat",sans-serif;
  font-size: clamp(44px, 6vw, 92px);
  letter-spacing: .26em;
}

.howto-hero-sub{
  margin-top: 12px;
  font-weight: 900;
  letter-spacing: .10em;
  opacity: .7;
}

.howto-back{
  margin-top: 18px;
}
.howto-backlink{
  text-decoration:none;
  font-weight: 900;
  letter-spacing: .12em;
  color:#111;
  border-bottom: 2px solid #111;
}
.howto-backlink:hover{ opacity:.7; }

.howto-detail{
  padding: 22px 16px 72px;
}

.howto-detail-inner{
  max-width: 980px;
  margin: 0 auto;
  display: grid;
  gap: 18px;
}

.howto-row{
  display:grid;
  grid-template-columns: 110px 1fr;
  gap: 16px;
  background:#fff;
  border: 3px solid #111;
  border-radius: 22px;
  box-shadow: 6px 6px 0 #111;
  padding: 18px;
}

.howto-badge{
  height: 42px;
  display:grid;
  place-items:center;
  border: 3px solid #111;
  border-radius: 999px;
  box-shadow: 4px 4px 0 #111;
  font-weight: 1000;
  letter-spacing: .14em;
}

.howto-row-body h2{
  font-weight: 1000;
  letter-spacing: .10em;
  margin-bottom: 8px;
}

.howto-row-body ul{
  padding-left: 18px;
  display:grid;
  gap: 6px;
  color: rgba(0,0,0,.72);
  font-weight: 700;
  letter-spacing: .02em;
}

.howto-notes{
  background: rgba(255,255,255,.72);
  border: 3px solid #111;
  border-radius: 22px;
  box-shadow: 6px 6px 0 #111;
  padding: 18px;
}

.howto-notes h3{
  font-weight: 1000;
  letter-spacing: .14em;
  margin-bottom: 10px;
  text-align: center;
}

.howto-cta{
  text-align:center;
  padding-top: 10px;
}

.howto-cta-btn{
  display:inline-block;
  padding: 14px 46px;
  border-radius: 999px;
  border: 3px solid #111;
  background:#111;
  color:#fff;
  text-decoration:none;
  font-weight: 1000;
  letter-spacing: .18em;
  box-shadow: 6px 6px 0 #111;
}
.howto-cta-btn:hover{ transform: translateY(-2px); }

.howto-cta-sub{
  margin-top: 12px;
  font-size: 12px;
  opacity: .7;
  letter-spacing: .08em;
}

@media (max-width: 768px){
  .howto-row{ grid-template-columns: 1fr; }
  .howto-badge{ width: max-content; padding: 0 14px; }
}

/* 注意事項 */
.howto-notes h3{
  text-align: center;
  font-weight: 1000;
  letter-spacing: .14em;
  margin-bottom: 16px;
}

.howto-notes ol{
  margin: 0 auto;        /* ← ブロックを中央へ */
  padding-left: 0;       /* ← デフォルト余白を消す */
  max-width: 720px;      /* ← 文字幅を基準に */
  list-style-position: inside;
  display: grid;
  gap: 10px;
}

.howto-notes li{
  text-align: left;      /* ← 文字は左揃え */
  font-weight: 700;
  letter-spacing: .02em;
  line-height: 1.8;
}

.howto-notes li::marker{
  font-weight: 1000;
  letter-spacing: .12em;
}

@media (max-width: 768px){
  .howto-notes ol{
    padding: 0 12px;
  }
}

/* =========================
   NOTES (注意事項) — TUNEABLE
   ここだけ触れば微調整できる
========================= */
.howto-notes{
  /* ▼ 微調整ノブ */
  --notes-w: 640px;         /* ← 注意事項ブロックの横幅（520〜720推奨） */
  --notes-pad: 14px;        /* ← 内側余白（10〜20） */
  --notes-radius: 18px;     /* ← 角丸（14〜22） */
  --notes-border: 3px;      /* ← 黒枠の太さ（2〜4） */
  --notes-shadow: 6px;      /* ← 影の大きさ（0〜8） */
  --notes-yellow: 3px;      /* ← 黄色ラインの太さ（0で消える） */

  /* 本体 */
  background: rgba(255,255,255,.72);
  border: var(--notes-border) solid #111;
  border-radius: var(--notes-radius);
  box-shadow: var(--notes-shadow) var(--notes-shadow) 0 #111;

  /* 黄色ライン（内側に囲う） */
  box-shadow:
    var(--notes-shadow) var(--notes-shadow) 0 #111,
    0 0 0 var(--notes-yellow) #ffba08 inset;

  padding: var(--notes-pad);
  
  /* ★ここがキモ：中身を“文字幅基準で中央”に */
  display: grid;
  justify-items: center;
}

/* h3 も ol も「同じ幅」に揃える */
.howto-notes h3,
.howto-notes ol{
  width: min(100%, var(--notes-w));
}

/* 見出しは中央 */
.howto-notes h3{
  text-align: center;
  font-weight: 1000;
  letter-spacing: .14em;
  margin: 2px 0 10px;
}

/* リストは「左揃えのまま」ブロックごと中央 */
.howto-notes ol{
  margin: 0;
  padding-left: 1.6em;      /* ← 数字の分だけ左に確保（ここも微調整可） */
  text-align: left;
  list-style-position: outside;
  display: grid;
  gap: 10px;
}

.howto-notes li{
  font-weight: 700;
  letter-spacing: .02em;
  line-height: 1.85;
}

/* さらに詰めたいSP調整（任意） */
@media (max-width: 768px){
  .howto-notes{
    --notes-w: 560px;
    --notes-pad: 12px;
    --notes-shadow: 5px;
  }
}

/* =========================
   Language Toggle (HOW TO USE)
========================= */

/* デフォは日本語表示 */
.lang-en { display: none; }
body.is-en .lang-ja { display: none; }
body.is-en .lang-en { display: inline; }

/* ul/ol の場合は inline じゃなく block に */
body.is-en ul.lang-en,
body.is-en ol.lang-en { display: grid; }
ul.lang-en, ol.lang-en { display: none; }

body.is-en ul.lang-ja,
body.is-en ol.lang-ja { display: none; }
ul.lang-ja, ol.lang-ja { display: grid; }

/* トグル本体 */
.lang-toggle{
  margin-top: 18px;
  display: inline-flex;
  gap: 8px;
  padding: 6px;
  border: 3px solid #111;
  border-radius: 999px;
  background: rgba(255,255,255,.8);
  box-shadow: 6px 6px 0 #111;
}

.lang-btn{
  appearance: none;
  border: 3px solid #111;
  background: #fff;
  color: #111;
  border-radius: 999px;
  padding: 8px 14px;
  font-weight: 1000;
  letter-spacing: .14em;
  cursor: pointer;
  box-shadow: 4px 4px 0 #111;
  transition: transform .15s ease, filter .15s ease;
}

.lang-btn:hover{ transform: translateY(-1px); }
.lang-btn.is-active{
  background: #111;
  color: #fff;
}

/* =========================
   SUNSET FLARE OVERLAY
   夕方の逆光・オレンジ寄り
========================= */

/* 微調整ノブ（ここだけ触ればOK） */
:root{
  --flare-opacity: 0.28;     /* 全体の強さ（0.18〜0.35） */
  --flare-x: 14%;            /* 光源X（左寄り） */
  --flare-y: 10%;            /* 光源Y（上寄り） */
  --flare-blur: 4px;         /* にじみ */
  --flare-saturate: 1.25;    /* 夕焼け感 */
}

body{
  position: relative;
}

/* メインの夕焼けフレア */
body::before{
  content:"";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 30;

  background:
    radial-gradient(900px 520px at var(--flare-x) var(--flare-y),
      rgba(255,255,255,0.9),
      rgba(255,210,140,0.45) 30%,
      rgba(255,160,80,0.28) 48%,
      rgba(255,120,60,0.14) 62%,
      rgba(255,255,255,0) 76%),

    /* 横に流れる夕焼けの膜 */
    linear-gradient(120deg,
      rgba(255,180,120,0.12),
      rgba(255,120,60,0.08) 40%,
      rgba(255,255,255,0) 70%);

  opacity: var(--flare-opacity);
  mix-blend-mode: screen;
  filter: blur(var(--flare-blur)) saturate(var(--flare-saturate));
}

/* ゴースト（太陽フレアの玉） */
body::after{
  content:"";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 29;

  background:
    radial-gradient(160px 160px at 30% 28%,
      rgba(255,240,200,0.35),
      rgba(255,255,255,0) 70%),
    radial-gradient(260px 260px at 48% 46%,
      rgba(255,190,120,0.22),
      rgba(255,255,255,0) 72%),
    radial-gradient(120px 120px at 62% 60%,
      rgba(255,140,80,0.18),
      rgba(255,255,255,0) 74%);

  opacity: calc(var(--flare-opacity) * 0.85);
  mix-blend-mode: screen;
}

.hero-floating-card {
  opacity: 0.5;
  pointer-events: none;
}

.reserve-form{
  background: #fff;   /* rgba をやめる */
}

/* ===== Reserve form translucent ===== */
.reserve-form{
  background: rgba(255, 255, 255, 0.52); /* 透過度ここ */
  backdrop-filter: blur(6px);
}

/* ===== VIDEO POSITION CONTROL ===== */
.card-2 video{
  width: 100%;
  height: 100%;
  object-fit: cover;

  /* 🔧 ここを触る */
  object-position: center 40%;
  transform: scale(1.08);
}

.card-3 video{
  width: 100%;
  height: 100%;
  object-fit: cover;

  /* 🔧 ここを触る */
  object-position: center 40%;
  transform: scale(1.08);
}
.card-1 video{
  width: 100%;
  height: 100%;
  object-fit: cover;

  /* 🔧 ここを触る */
  object-position: center 40%;
  transform: scale(1.08);
}

.card-4 video{
  width: 100%;
  height: 100%;
  object-fit: cover;

  /* 🔧 ここを触る */
  object-position: center 40%;
  transform: scale(1.08);
}

/* ===== Header Instagram Icon ===== */
.header-instagram{
  display: flex;
  align-items: center;
  justify-content: center;

  width: 34px;
  height: 34px;
  border-radius: 50%;

  background: #fff;
  border: 2px solid #111;
  box-shadow: 3px 3px 0 #111;

  transition: transform .2s ease, box-shadow .2s ease;
}

.header-instagram img{
  width: 18px;
  height: 18px;
}

/* hover演出（Pulpo感） */
.header-instagram:hover{
  transform: translateY(-2px) rotate(-6deg);
  box-shadow: 5px 5px 0 #111;
}

/* ===== Mobile Menu Instagram ===== */
.mobile-menu-instagram{
  margin-top: 10px;

  display: inline-flex;
  align-items: center;
  gap: 10px;

  padding: 10px 18px;
  border-radius: 999px;

  background: #fff;
  border: 3px solid #111;
  box-shadow: 4px 4px 0 #111;

  text-decoration: none;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .14em;
  color: #111;

  transition: transform .15s ease, box-shadow .15s ease;
}

.mobile-menu-instagram img{
  width: 18px;
  height: 18px;
  fill: #111;
}

.mobile-menu-instagram:hover{
  transform: translateY(-2px) rotate(-1.5deg);
  box-shadow: 6px 6px 0 #111;
}

@media (max-width: 768px){

  /* 背景暗幕を“ちゃんと”気持ちよく */
  .mobile-menu-backdrop{
    background: rgba(0,0,0,.28) !important;
    backdrop-filter: blur(6px) saturate(1.15) !important;
  }

  /* 白い箱：影と角と余白をPulpo寄せ */
  .mobile-menu-panel{
    border-radius: 26px !important;
    box-shadow: 0 26px 70px rgba(0,0,0,.38) !important;
    background: rgba(255,255,255,.86) !important;
    border: 1px solid rgba(255,255,255,.55) !important;
  }

  /* “紙っぽい”薄いテクスチャ（ダサいのを上品に） */
  .mobile-menu-panel::before{
    content:"" !important;
    position:absolute !important;
    inset:0 !important;
    background:
      radial-gradient(700px 260px at 18% 12%, rgba(255,230,160,.22), rgba(255,230,160,0) 60%),
      radial-gradient(680px 300px at 85% 78%, rgba(76,201,240,.14), rgba(76,201,240,0) 62%);
    pointer-events:none !important;
  }

  /* CLOSE：小さく・上品に */
  .mobile-menu-close{
    background: rgba(17,17,17,.92) !important;
    box-shadow: 0 10px 26px rgba(0,0,0,.35) !important;
    border: 1px solid rgba(255,255,255,.15) !important;
  }

  /* メニュー文字：間隔とサイズを整える（これだけで一気に締まる） */
  .mobile-menu-nav{
    gap: 12px !important;
    padding: 18px 22px 0 !important;
  }
  .mobile-menu-nav a{
    font-size: 20px !important;
    letter-spacing: .14em !important;
    color: rgba(0,0,0,.86) !important;
  }
  .mobile-menu-nav a:hover{
    transform: translateY(-1px) !important;
  }

  /* タイヤアイコン：主張しすぎないよう少し薄く */
  .menu-wheel{
    opacity: .62 !important;
    width: 22px !important;
    height: 22px !important;
  }

  /* 下の青帯：今の“ダサい帯”原因 → もっと薄く短く */
  .mobile-menu-panel::after{
    height: 44px !important;
    background: linear-gradient(to top, rgba(111,182,255,.35) 0%, rgba(255,255,255,0) 100%) !important;
  }

  /* CONTACT：黒ベタやめて、少し上品なグラデ＋影に */
  .mobile-menu-contact{
    background: linear-gradient(90deg, #111, #2b2b2b) !important;
    box-shadow: 0 18px 40px rgba(0,0,0,.30) !important;
    border: 1px solid rgba(255,255,255,.12) !important;
    letter-spacing: .18em !important;
  }
}

@media (max-width: 768px){

  /* Instagram行：横幅をコンパクトにして中央へ */
  .mobile-menu-panel a[href*="instagram"],
  .mobile-menu-panel .instagram,
  .mobile-menu-panel .ig,
  .mobile-menu-panel .sns-row{
    /* ← ここが本命 */
    width: fit-content !important;     /* 中身幅にする */
    max-width: 88% !important;         /* 画面が狭い時の保険 */
    margin: 12px auto 0 !important;    /* 中央寄せ */

    display: inline-flex !important;   /* 横並びで中央寄せしやすい */
    align-items: center !important;
    gap: 10px !important;

    /* “囲み”も少し締める */
    padding: 10px 16px !important;
    border-radius: 999px !important;
  }

  /* 親がstretchしてる場合の保険（中央寄せを確実に） */
  .mobile-menu-panel{
    justify-items: center !important;
  }
}

@media (max-width: 768px){

  .mobile-menu-panel a[href*="instagram"]{
    /* Instagramグラデ（派手すぎない配合） */
    background: linear-gradient(
      135deg,
      #feda75 0%,
      #fa7e1e 25%,
      #d62976 50%,
      #962fbf 75%,
      #4f5bd5 100%
    ) !important;

    color: #111 !important;              /* 文字は黒で可読性優先 */
    border: none !important;

    /* “シール感”を出す影 */
    box-shadow:
      0 10px 26px rgba(214,41,118,.35),
      inset 0 0 0 1px rgba(255,255,255,.45) !important;
  }

  /* ホバー（タップ）時：少しだけ沈む */
  .mobile-menu-panel a[href*="instagram"]:active{
    transform: translateY(1px) scale(0.98);
    box-shadow:
      0 6px 16px rgba(214,41,118,.28),
      inset 0 0 0 1px rgba(255,255,255,.35) !important;
  }
}

/* ==============================
   STITCH PRICE (standalone page)
============================== */

.stitch-price-main{
  position: relative;
  padding-top: 140px; /* 固定ヘッダー分 */
  padding-bottom: 90px;
  min-height: 100vh;
  overflow: hidden;
  font-family: "Montserrat", system-ui, -apple-system, "Hiragino Kaku Gothic ProN", "Yu Gothic", sans-serif;
}

/* bg */
.stitch-bg-gradient{
  position: fixed;
  inset: 0;
  z-index: -2;
  pointer-events: none;
  opacity: .9;
  background: linear-gradient(135deg, #bfdbfe 0%, #ffffff 45%, #eff6ff 100%);
}
.stitch-bg-pattern{
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  opacity: .10;
  background-image: radial-gradient(#448AFF 1px, transparent 1px);
  background-size: 20px 20px;
}

/* common “comic” */
.stitch-comic{
  border: 3px solid #111;
  box-shadow: 8px 8px 0 #111;
  border-radius: 22px;
  background: #fff;
}
.stitch-text-outline{
  text-shadow: 2px 2px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;
}

/* hero title */
.stitch-price-hero{
  max-width: 1080px;
  margin: 0 auto 36px;
  padding: 0 16px;
}
.stitch-title-wrap{
  display: inline-block;
  position: relative;
  transform: rotate(-1deg);
}
.stitch-title-shadow{
  position:absolute;
  inset: -8px;
  background:#ff4081;
  border: 2px solid #111;
  box-shadow: 8px 8px 0 #111;
  transform: rotate(2deg);
  z-index: 0;
}
.stitch-title{
  position: relative;
  z-index: 1;
  display: inline-block;
  padding: 10px 18px;
  font-weight: 900;
  letter-spacing: -0.02em;
  font-size: clamp(56px, 8vw, 96px);
  color: #fff;
  text-transform: uppercase;
  text-shadow: 2px 2px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;
}
.stitch-title-star{
  position:absolute;
  top: -22px;
  right: -38px;
  z-index: 2;
  color: #ffb300;
  transform: rotate(12deg);
  filter: drop-shadow(2px 2px 0 #000);
}
.stitch-title-star .material-icons{ font-size: 64px; }

.stitch-lead{
  margin-top: 20px;
  max-width: 720px;
  padding: 14px 16px;
  border: 2px solid #111;
  border-radius: 14px;
  box-shadow: 8px 8px 0 #111;
  background: rgba(255,255,255,.80);
  backdrop-filter: blur(6px);
  transform: rotate(1deg);
  font-weight: 800;
  font-size: 18px;
  color: #111;
}
.stitch-lead-sub{
  display:block;
  margin-top: 8px;
  font-weight: 600;
  font-size: 12px;
  color: rgba(0,0,0,.58);
}

/* cards grid */
.stitch-cards{
  max-width: 1180px;
  margin: 0 auto;
  padding: 0 16px;
  display: grid;
  grid-template-columns: 1fr;
  gap: 18px;
}
@media (min-width: 860px){
  .stitch-cards{
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    align-items: stretch;
  }
}

/* card */
.stitch-card{
  position: relative;
  border: 3px solid #111;
  border-radius: 22px;
  box-shadow: 8px 8px 0 #111;
  background: #fff;
  padding: 18px;
  display: flex;
  flex-direction: column;
  transition: transform .25s ease;
}
.stitch-card:hover{ transform: translateY(-6px); }

.stitch-pill{
  position:absolute;
  top: 14px;
  right: 14px;
  border: 2px solid #111;
  border-radius: 999px;
  padding: 6px 10px;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .14em;
  background: #e5e7eb;
  color: #111;
}
.stitch-pill.blue{
  background:#448AFF;
  color:#fff;
}

.stitch-card-media{
  height: 160px;
  border: 2px solid #111;
  border-radius: 16px;
  display: grid;
  place-items: center;
  margin-bottom: 16px;
  position: relative;
  overflow: hidden;
}
.stitch-media-blue{ background: rgba(59,130,246,.16); }
.stitch-media-yellow{ background: rgba(255,179,0,.20); height: 190px; }
.stitch-media-green{ background: rgba(34,197,94,.14); }

.stitch-card-media .material-icons{
  font-size: 64px;
  color: #111;
}

.stitch-plan{
  font-weight: 900;
  letter-spacing: -0.02em;
  text-transform: uppercase;
  font-style: italic;
  font-size: 38px;
  margin: 2px 0 6px;
}
.stitch-plan.big{ font-size: 46px; }
.stitch-plan.pink{ color:#ff4081; transform: rotate(-1deg); }

.stitch-desc{
  color: rgba(0,0,0,.62);
  font-size: 13px;
  font-weight: 800;
  line-height: 1.65;
  padding-bottom: 12px;
  border-bottom: 2px dashed rgba(0,0,0,.18);
  margin-bottom: 14px;
}

.stitch-price-row{
  display:flex;
  align-items: baseline;
  gap: 10px;
  margin-bottom: 12px;
}
.stitch-price-row b{
  font-size: 44px;
  letter-spacing: -0.02em;
}
.stitch-price-row.big b{ font-size: 56px; }
.stitch-price-row span{
  font-size: 12px;
  color: rgba(0,0,0,.55);
  font-weight: 800;
}

.stitch-features{
  list-style: none;
  display: grid;
  gap: 8px;
  padding: 0;
  margin: 0 0 14px;
  color: rgba(0,0,0,.70);
  font-weight: 800;
  font-size: 13px;
}
.stitch-features li{
  display:flex;
  align-items:center;
  gap: 10px;
}
.stitch-features .material-icons{
  font-size: 18px;
  color: #ff4081;
}

.stitch-btn{
  margin-top: auto;
  display:block;
  text-align:center;
  text-decoration:none;
  border: 2px solid #111;
  border-radius: 16px;
  box-shadow: 4px 4px 0 #111;
  padding: 14px 12px;
  font-weight: 900;
  letter-spacing: .14em;
  text-transform: uppercase;
  transition: transform .1s ease, box-shadow .1s ease, background .2s ease;
}
.stitch-btn:active{
  transform: translate(1px,1px);
  box-shadow: 0 0 0 #111;
}
.stitch-btn.dark{
  background:#111;
  color:#fff;
}
.stitch-btn.pink{
  background:#ff4081;
  color:#fff;
}
.stitch-btn.pink:hover{ filter: brightness(.98); }

/* popular card */
.stitch-card-popular{
  outline: 4px solid rgba(255,179,0,.45);
  outline-offset: 8px;
}
@media (min-width: 860px){
  .stitch-card-popular{
    transform: translateY(-14px);
  }
  .stitch-card-popular:hover{
    transform: translateY(-22px);
  }
}
.stitch-popular-badge{
  position:absolute;
  top: -18px;
  left: 50%;
  transform: translateX(-50%) rotate(2deg);
  background:#ffb300;
  color:#111;
  border: 2px solid #111;
  border-radius: 999px;
  box-shadow: 4px 4px 0 #111;
  padding: 8px 14px;
  font-weight: 900;
  letter-spacing: .12em;
  font-size: 12px;
  white-space: nowrap;
  z-index: 2;
}

/* add-ons block */
.stitch-addons{
  max-width: 1180px;
  margin: 44px auto 0;
  padding: 0 16px;
}
.stitch-addons-inner{
  position: relative;
  border: 2px solid #111;
  border-radius: 22px;
  box-shadow: 8px 8px 0 #111;
  background: #fff3e0;
  padding: 22px;
  overflow:hidden;
}
.stitch-addons-bg{
  position:absolute;
  right: -22px;
  bottom: -22px;
  opacity: .10;
  transform: rotate(12deg);
  pointer-events:none;
}
.stitch-addons-bg .material-icons{ font-size: 280px; color:#111; }

.stitch-addons-head{
  display:grid;
  gap: 10px;
  margin-bottom: 16px;
}
@media (min-width: 860px){
  .stitch-addons-head{
    grid-template-columns: 1fr 2fr;
    align-items: center;
    gap: 24px;
  }
}

.stitch-addons-title{
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: -0.02em;
  font-size: 28px;
  margin: 0;
}
.stitch-tag{
  display:inline-block;
  background:#111;
  color:#fff;
  padding: 6px 10px;
  transform: skewX(-12deg);
  margin-right: 6px;
}
.stitch-addons-sub{
  margin:0;
  font-weight: 800;
  color: rgba(0,0,0,.70);
  line-height: 1.65;
}

.stitch-addons-grid{
  display:grid;
  gap: 12px;
}
@media (min-width: 560px){
  .stitch-addons-grid{ grid-template-columns: repeat(2,1fr); }
}

.stitch-addon{
  border: 2px solid #111;
  border-radius: 12px;
  box-shadow: 4px 4px 0 #111;
  background:#fff;
  padding: 12px 12px;
  display:flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  transition: transform .15s ease;
}
.stitch-addon:hover{ transform: scale(1.02); }
.stitch-addon-left{
  display:flex;
  align-items:center;
  gap: 10px;
}
.stitch-addon-left .material-icons{
  font-size: 34px;
  color: rgba(0,0,0,.70);
}
.stitch-addon-name{ font-weight: 900; font-size: 13px; }
.stitch-addon-sub{ font-size: 11px; color: rgba(0,0,0,.52); font-weight: 700; }

.stitch-addon-price{
  font-weight: 900;
  font-size: 18px;
  color:#111;
}
.stitch-addon-price.free{ color:#ff4081; }

/* CTA */
.stitch-cta{
  max-width: 1180px;
  margin: 44px auto 0;
  padding: 0 16px;
  position: relative;
}
.stitch-cta-under{
  position:absolute;
  top: 10px; left: 10px;
  right: 16px; bottom: -6px;
  background:#111;
  border-radius: 22px;
  z-index: 0;
}
.stitch-cta-link{
  position: relative;
  z-index: 1;
  display:block;
  text-decoration:none;
  border: 4px solid #111;
  border-radius: 22px;
  background:#ff4081;
  padding: 20px;
  transition: transform .15s ease, filter .15s ease;
}
.stitch-cta-link:hover{
  transform: translate(-6px,-6px);
  filter: brightness(.98);
}
.stitch-cta-link:active{
  transform: translate(2px,2px);
}

.stitch-cta-flex{
  display:flex;
  flex-direction: column;
  align-items: center;
  gap: 18px;
  text-align:center;
}
@media (min-width: 860px){
  .stitch-cta-flex{
    flex-direction: row;
    justify-content: space-between;
    text-align:left;
  }
}
.stitch-cta-title{
  margin: 0 0 6px;
  font-weight: 900;
  font-style: italic;
  text-transform: uppercase;
  letter-spacing: -0.02em;
  font-size: clamp(28px, 4vw, 56px);
  color:#fff;
  text-shadow: 2px 2px 0 #000;
}
.stitch-cta-text{
  margin:0;
  font-weight: 800;
  color:#fff;
  font-size: 16px;
  line-height: 1.7;
  text-shadow: 0 2px 10px rgba(0,0,0,.18);
}

.stitch-cta-bounce{
  width: 82px; height: 82px;
  border-radius: 999px;
  border: 2px solid #111;
  background:#fff;
  box-shadow: 4px 4px 0 #111;
  display:grid;
  place-items:center;
  animation: stitchBounce 1.1s infinite;
}
.stitch-cta-bounce .material-icons{ font-size: 42px; color:#111; }
@keyframes stitchBounce{
  0%,100%{ transform: translateY(0); }
  50%{ transform: translateY(-8px); }
}

/* mobile tune */
@media (max-width: 420px){
  .stitch-title-star{ right: -26px; }
  .stitch-title-star .material-icons{ font-size: 54px; }
}

/* =========================================
   IMAGE MATCH PATCH (screen.png 寄せ)
   そのまま assets/style.css の末尾に追記
========================================= */

/* 全体：上の余白／横幅／背景の密度 */
.stitch-price-main{
  padding-top: 120px;   /* ヘッダー下の余白（画像寄り） */
  padding-bottom: 90px;
}

.stitch-bg-gradient{
  opacity: 1;
  background: linear-gradient(135deg, #cfe6ff 0%, #eaf4ff 35%, #ffffff 100%);
}

/* ドットを「細かく・薄く」 */
.stitch-bg-pattern{
  opacity: .16;
  background-image: radial-gradient(#6ea8ff 0.9px, transparent 0.9px);
  background-size: 22px 22px;
}

/* =========================
   上部（PRICEロゴ＋説明枠）
========================= */
.stitch-price-hero{
  max-width: 1280px;
  margin: 0 auto 34px;
  padding: 0 40px;  /* 画像みたいに左右にしっかり余白 */
  text-align: left;
}

/* PRICEのピンク板：角丸ほぼなし＋影強め */
.stitch-title-wrap{
  display: inline-block;
  position: relative;
  transform: rotate(-1deg);
}

.stitch-title-shadow{
  inset: -8px !important;
  background: #ff4081 !important;
  border: 3px solid #111 !important;
  border-radius: 4px !important;
  box-shadow: 8px 8px 0 #111 !important;
  transform: rotate(1deg) !important;
}

/* PRICE文字：太め＆白フチ（画像寄り） */
.stitch-title{
  padding: 10px 18px !important;
  font-size: clamp(64px, 7.4vw, 104px) !important;
  letter-spacing: -0.03em !important;
}

/* 星：黄色の丸バッジにする */
.stitch-title-star{
  top: -18px !important;
  right: -30px !important;
  transform: rotate(10deg) !important;
  color: #111 !important;
  filter: none !important;
}
.stitch-title-star::before{
  content:"";
  position:absolute;
  inset: -10px;
  background: #ffb300;
  border: 3px solid #111;
  border-radius: 999px;
  box-shadow: 6px 6px 0 #111;
  z-index: -1;
}
.stitch-title-star .material-icons{
  font-size: 44px !important;
}

/* 説明枠：横長・角丸小さめ・影強め */
.stitch-lead{
  margin-top: 18px !important;
  max-width: 760px !important;
  padding: 16px 18px !important;
  border: 3px solid #111 !important;
  border-radius: 10px !important;
  box-shadow: 8px 8px 0 #111 !important;
  background: rgba(255,255,255,.86) !important;
  transform: none !important;
  font-size: 16px !important;
}

/* =========================
   3枚カード（サイズ感・gap）
========================= */
.stitch-cards{
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 40px;
  gap: 46px;
  align-items: stretch;
}
@media (min-width: 900px){
  .stitch-cards{
    grid-template-columns: repeat(3, 1fr);
  }
}
@media (max-width: 560px){
  .stitch-price-hero,
  .stitch-cards,
  .stitch-addons,
  .stitch-cta{
    padding-left: 16px;
    padding-right: 16px;
  }
}

.stitch-card{
  border: 3px solid #111 !important;
  border-radius: 22px !important;
  box-shadow: 8px 8px 0 #111 !important;
  padding: 18px !important;
}

/* 画像枠：高さ・角丸・内側余白 */
.stitch-card-media{
  height: 150px !important;
  border: 3px solid #111 !important;
  border-radius: 14px !important;
  margin-bottom: 18px !important;
}

/* 左右カードのピル：小さめ */
.stitch-pill{
  top: 14px !important;
  right: 14px !important;
  border: 2px solid #111 !important;
  background: #f6f6f6 !important;
  padding: 5px 10px !important;
  font-size: 10px !important;
}

/* 見出し文字の感じ */
.stitch-plan{
  font-size: 34px !important;
  letter-spacing: -0.02em !important;
}
.stitch-plan.big{ font-size: 40px !important; }
.stitch-plan.pink{
  color: #ff4081 !important;
  transform: none !important; /* 画像は傾き弱め */
}

/* 値段：画像みたいに “太くデカく” */
.stitch-price-row b{ font-size: 42px !important; }
.stitch-price-row.big b{ font-size: 52px !important; }

/* ボタン：太め枠＋影＋横幅いっぱい */
.stitch-btn{
  border: 3px solid #111 !important;
  border-radius: 12px !important;
  box-shadow: 6px 6px 0 #111 !important;
  padding: 14px 12px !important;
  letter-spacing: .18em !important;
}
.stitch-btn.dark{ background:#0b1320 !important; }
.stitch-btn.pink{ background:#ff4081 !important; }

/* =========================
   真ん中（POPULAR）の枠：黄色の外枠 + 少し浮かす
========================= */
.stitch-card-popular{
  transform: translateY(-16px) !important;
  outline: none !important;
  box-shadow:
    0 0 0 6px #ffb300,
    0 0 0 10px #111,
    8px 8px 0 #111 !important;
}
.stitch-card-popular .stitch-card-media{
  height: 170px !important;
}

/* POPULARバッジ：上に乗る黄色ピル */
.stitch-popular-badge{
  top: -20px !important;
  background: #ffb300 !important;
  border: 3px solid #111 !important;
  box-shadow: 6px 6px 0 #111 !important;
  padding: 8px 16px !important;
  font-size: 12px !important;
}

/* =========================
   ADD-ONS（画像の横長ベージュ箱）
========================= */
.stitch-addons{
  max-width: 1280px;
  margin: 48px auto 0;
  padding: 0 40px;
}

.stitch-addons-inner{
  border: 3px solid #111 !important;
  border-radius: 22px !important;
  box-shadow: 8px 8px 0 #111 !important;
  background: #f5e7cf !important;
  padding: 26px !important;
}

/* 背景の薄いバイク */
.stitch-addons-bg{
  right: -44px !important;
  bottom: -44px !important;
  opacity: .10 !important;
}
.stitch-addons-bg .material-icons{ font-size: 320px !important; }

/* タイトル部を画像っぽく */
.stitch-tag{
  background:#111 !important;
  color:#fff !important;
  padding: 6px 12px !important;
  transform: skewX(-10deg) !important;
  font-style: italic;
}

/* オプションカード */
.stitch-addon{
  border: 3px solid #111 !important;
  border-radius: 14px !important;
  box-shadow: 6px 6px 0 #111 !important;
  padding: 12px 14px !important;
}
.stitch-addon-price{ font-size: 16px !important; }

/* =========================
   CTA（下のデカいピンク帯）
========================= */
.stitch-cta{
  max-width: 1280px;
  margin: 44px auto 0;
  padding: 0 40px;
}
.stitch-cta-under{
  top: 12px !important;
  left: 12px !important;
  right: 0 !important;
  bottom: -8px !important;
  border-radius: 22px !important;
  background:#111 !important;
}
.stitch-cta-link{
  border: 3px solid #111 !important;
  border-radius: 22px !important;
  background:#ff4081 !important;
  padding: 28px !important;
  box-shadow: none !important;
}
.stitch-cta-title{
  font-size: clamp(34px, 4.2vw, 60px) !important;
}
.stitch-cta-bounce{
  width: 86px !important;
  height: 86px !important;
  border: 3px solid #111 !important;
  box-shadow: 6px 6px 0 #111 !important;
  animation: none !important; /* 画像は静止っぽいので止める */
}

#price .cta-link{
  display: inline-flex;          /* インラインを殺す */
  flex-direction: column;
  align-items: center;
  justify-content: center;

  min-width: 260px;              /* クリック領域 */
  padding: 18px 28px;

  cursor: pointer;
}

/* 英語サブ */
#price .cta-link .cta-en{
  margin-top: 6px;
  font-size: 11px;
  letter-spacing: .14em;
  opacity: .75;
}

/* ==============================
   LINEUP PAGE (standalone)
============================== */

.lineup-page{
  padding-top: 110px; /* 固定ヘッダー分 */
  background: linear-gradient(180deg, #f6f7f8 0%, #eef6ff 55%, #f5f2ec 100%);
  min-height: 100vh;
}

/* HERO */
.lineup-hero{
  padding: 56px 16px 26px;
  position: relative;
  overflow: hidden;
}
.lineup-hero-inner{
  max-width: 1080px;
  margin: 0 auto;
  text-align: center;
  position: relative;
}
.lineup-hero-bglogo{
  position: absolute;
  left: 50%;
  top: -30px;
  transform: translateX(-50%) rotate(-10deg);
  width: min(620px, 120vw);
  height: min(620px, 120vw);
  background: url("../images/hero-logo.png") center/82% no-repeat;
  opacity: .14;
  pointer-events: none;
  animation: lineupBgSpin 42s linear infinite;
  filter: drop-shadow(0 18px 28px rgba(0,0,0,.18));
}
@keyframes lineupBgSpin{ to{ transform: translateX(-50%) rotate(350deg);} }

.lineup-hero-title{
  font-family: "whoody","Montserrat",sans-serif;
  font-weight: 900;
  letter-spacing: .28em;
  font-size: clamp(46px, 7vw, 110px);
  display: inline-block;
  background: #ff4d6d;
  color: #fff;
  padding: 10px 26px;
  border: 4px solid #111;
  box-shadow: 8px 8px 0 #111;
  transform: rotate(-1.2deg);
}
.lineup-hero-sub{
  margin-top: 14px;
  font-weight: 900;
  letter-spacing: .10em;
  opacity: .78;
  display: grid;
  gap: 6px;
}
.lineup-hero-sub .en{ font-size: 12px; opacity: .75; letter-spacing: .14em; }
.lineup-hero-actions{
  margin-top: 22px;
  display: inline-flex;
  gap: 10px;
  flex-wrap: wrap;
  justify-content: center;
}

/* FILTER */
.lineup-filter{
  padding: 10px 16px 10px;
}
.lineup-filter-inner{
  max-width: 1080px;
  margin: 0 auto;
  text-align: center;
}
.lineup-filter-title{
  font-weight: 1000;
  letter-spacing: .18em;
  opacity: .70;
  margin-bottom: 10px;
}
.lineup-filter-pills{
  display: flex;
  gap: 10px;
  justify-content: center;
  flex-wrap: wrap;
}

/* GRID */
.lineup-grid-sec{ padding: 18px 16px 30px; }
.lineup-grid-inner{ max-width: 1080px; margin: 0 auto; }
.lineup-grid{
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  gap: 16px;
}
.lineup-card--grid{
  grid-column: span 4;
  position: relative;
}
.lineup-card-hit{
  position: absolute;
  inset: 0;
  z-index: 2;
  border-radius: 18px;
}
.lineup-cta{
  position: relative;
  z-index: 3;
  display: inline-flex;
  margin-top: 12px;
  padding: 10px 16px;
  border-radius: 999px;
  border: 3px solid #111;
  background: #111;
  color: #fff;
  text-decoration: none;
  font-weight: 1000;
  letter-spacing: .16em;
  box-shadow: 5px 5px 0 #111;
}
.lineup-cta:active{ transform: translateY(1px); }

/* mini compare inside card */
.lineup-mini{
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 6px 10px;
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid rgba(0,0,0,.10);
  font-size: 12px;
  letter-spacing: .06em;
  color: rgba(0,0,0,.70);
}
.lineup-mini b{ color:#111; letter-spacing: .16em; }

/* DETAIL */
.lineup-detail{
  padding: 54px 16px;
}
.lineup-detail-inner{
  max-width: 1080px;
  margin: 0 auto;
}
.lineup-detail-card{
  background: rgba(255,255,255,.82);
  border: 3px solid #111;
  border-radius: 22px;
  box-shadow: 8px 8px 0 #111;
  overflow: hidden;
  display: grid;
  grid-template-columns: 1fr 1.05fr;
}
.lineup-detail-media{
  background: linear-gradient(135deg, rgba(0,0,0,.05), rgba(0,0,0,0));
  display: grid;
  place-items: center;
  padding: 18px;
}
.lineup-detail-media img{
  width: 96%;
  height: auto;
  object-fit: contain;
  filter: drop-shadow(0 14px 22px rgba(0,0,0,.22));
}
.lineup-detail-body{ padding: 18px 18px 20px; }
.lineup-detail-kicker{
  display: flex;
  gap: 12px;
  align-items: center;
}
.lineup-detail-name{
  font-weight: 1000;
  letter-spacing: .18em;
  font-size: 18px;
}
.lineup-detail-copy{
  margin-top: 6px;
  font-weight: 800;
  letter-spacing: .06em;
  opacity: .70;
  font-size: 13px;
}

.lineup-bars{ margin-top: 16px; display: grid; gap: 10px; }
.bar-row{
  display: grid;
  grid-template-columns: 110px 1fr;
  gap: 10px;
  align-items: center;
  font-weight: 900;
  letter-spacing: .10em;
  font-size: 12px;
}
.bar{
  height: 12px;
  border-radius: 999px;
  border: 2px solid #111;
  background: rgba(0,0,0,.06);
  overflow: hidden;
}
.bar i{
  display: block;
  height: 100%;
  width: 60%;
  background: linear-gradient(90deg, #ffba08, #d62828, #f72585);
}

.lineup-reco{ margin-top: 16px; }
.reco-title{
  font-weight: 1000;
  letter-spacing: .16em;
  margin-bottom: 8px;
}
#lineup, .lineup-reco ul{ list-style: none; padding: 0; }
.lineup-reco ul{
  display: grid;
  gap: 8px;
}
.lineup-reco li{
  background: #fff;
  border: 3px solid #111;
  box-shadow: 4px 4px 0 #111;
  padding: 10px 14px;
  font-weight: 800;
  letter-spacing: .06em;
}

.lineup-detail-cta{
  margin-top: 16px;
  display: grid;
  gap: 10px;
  justify-items: start;
}
.reserve-punch{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 260px;
  padding: 14px 18px;
  border-radius: 18px;
  border: 3px solid #111;
  box-shadow: 8px 8px 0 #111;
  text-decoration: none;
  font-weight: 1000;
  letter-spacing: .18em;
  color: #fff;
  background: linear-gradient(90deg, #ffba08, #d62828, #f72585);
}
.detail-back{
  text-decoration: none;
  font-weight: 900;
  letter-spacing: .12em;
  color: #111;
  border-bottom: 2px solid #111;
  opacity: .75;
}
.detail-back:hover{ opacity: 1; }

/* COMPARE */
.lineup-compare{
  padding: 40px 16px 72px;
  text-align: center;
}
.lineup-compare-inner{ max-width: 1080px; margin: 0 auto; }
.compare-title{
  font-family: "whoody","Montserrat",sans-serif;
  letter-spacing: .22em;
  font-size: clamp(28px, 4vw, 54px);
}
.compare-sub{
  margin-top: 10px;
  opacity: .68;
  font-weight: 900;
  letter-spacing: .08em;
  font-size: 12px;
}
.compare-table-wrap{
  margin-top: 18px;
  background: rgba(255,255,255,.82);
  border: 3px solid #111;
  border-radius: 22px;
  box-shadow: 8px 8px 0 #111;
  overflow: hidden;
}
.compare-table{
  width: 100%;
  border-collapse: collapse;
}
.compare-table th, .compare-table td{
  padding: 12px 10px;
  border-bottom: 1px solid rgba(0,0,0,.10);
  font-weight: 900;
  letter-spacing: .08em;
  font-size: 12px;
}
.compare-table th{
  background: rgba(0,0,0,.06);
}
.compare-table td b{ letter-spacing: .12em; }

.compare-cta{ margin-top: 18px; }

/* responsive */
@media (max-width: 980px){
  .lineup-card--grid{ grid-column: span 6; }
  .lineup-detail-card{ grid-template-columns: 1fr; }
}
@media (max-width: 620px){
  .lineup-card--grid{ grid-column: span 12; }
}

.lineup-hero-title{
  font-size: clamp(36px, 5.5vw, 84px);
}

.lineup-hero-bglogo{
  top: -120px;
}

.lineup-hero-bglogo{
  width: min(520px, 110vw);
  height: min(520px, 110vw);
}

@media (max-width: 768px){
  .lineup-hero-bglogo{
    width: min(380px, 90vw);
    height: min(380px, 90vw);
  }
}

@media (min-width: 960px){
  #lineup{
    margin-top: -60px;   /* -130 → -60 に */
    position: relative;
    z-index: 3;
  }
}

/* ==============================
   FIX: SPでLINE UPが上に被る
============================== */
@media (max-width: 768px){
  /* 回転が原因で食い込むのでSPは回転オフ */
  .flyer-tilt-a,
  .flyer-tilt-b{
    transform: none !important;
  }

  /* セクション間の余白を確保 */
  #lineup{
    margin-top: 26px;
    padding-top: 10px;
  }
}

/* =========================
   HERO LOADING OVERLAY (Pulpo Sky)
========================= */
#hero-loading{
  position: fixed;
  inset: 0;
  z-index: 99999;

  /* 青×白グラデ＋Pulpo紙感（ローディング専用） */
  background:
    repeating-linear-gradient(
      0deg,
      rgba(0,0,0,.025) 0px,
      rgba(0,0,0,.025) 1px,
      transparent 1px,
      transparent 7px
    ),
    repeating-linear-gradient(
      90deg,
      rgba(0,0,0,.018) 0px,
      rgba(0,0,0,.018) 1px,
      transparent 1px,
      transparent 9px
    ),
    radial-gradient(1200px 900px at 18% 12%,
      rgba(95,175,255,.35),
      rgba(95,175,255,0) 62%),
    radial-gradient(1100px 800px at 84% 22%,
      rgba(255,255,255,.92),
      rgba(255,255,255,0) 56%),
    radial-gradient(900px 720px at 70% 92%,
      rgba(80,165,255,.22),
      rgba(80,165,255,0) 60%),
    linear-gradient(180deg, #eaf6ff 0%, #ffffff 42%, #e6f2ff 100%);

  display: grid;
  place-items: center;

  opacity: 1;
  visibility: visible;
  transition: opacity .7s ease, visibility .7s ease;
}

#hero-loading.is-hide{
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

/* 中央ブロック（全体ちょい大きめ） */
.hero-loading-inner{
  position: relative;
  text-align: center;
  transform: scale(1.15);
  padding: 10px 12px;
}

@media (max-width: 768px){
  .hero-loading-inner{ transform: scale(1.05); }
}

/* 背後ロゴ（サイトのロゴ画像に差し替え） */
.hero-loading-logo{
  position: absolute;
  inset: 0;
  margin: auto;
  width: min(560px, 86vw);
  aspect-ratio: 1 / 1;

  /* ★ここは君の回転ロゴ画像パスに合わせて */
  background: url("images/logo.png") center / contain no-repeat;

  opacity: 0.09;
  filter: blur(.2px);
  animation: slowSpin 18s linear infinite;
  z-index: 0;
}

.hero-loading-ja,
.hero-loading-en{
  position: relative;
  z-index: 1;
  margin: 0;
  animation: textIn 0.9s ease both;
}

.hero-loading-ja{
  font-family: "whoody","Montserrat",sans-serif;
  font-weight: 900;
  font-size: clamp(34px, 5vw, 66px);
  letter-spacing: .16em;
  margin-bottom: 10px;
}

.hero-loading-en{
  font-family: "Montserrat", sans-serif;
  font-size: 13px;
  letter-spacing: .36em;
  opacity: .62;
  animation-delay: .08s;
}

@keyframes slowSpin{
  to{ transform: rotate(360deg); }
}

@keyframes textIn{
  from{ opacity: 0; transform: translateY(10px); }
  to  { opacity: 1; transform: translateY(0); }
}

/* ローディング中はスクロール止める（事故防止） */
body.is-loading{
  overflow: hidden;
}

/* ローディング中は予約フォームを触れないように（セレクタ保険で複数指定） */
body.is-loading .reserve,
body.is-loading #reserve,
body.is-loading .reserve-form,
body.is-loading .reservation,
body.is-loading .booking,
body.is-loading form{
  pointer-events: none;
}

/* 動き苦手な人 */
@media (prefers-reduced-motion: reduce){
  .hero-loading-logo,
  .hero-loading-ja,
  .hero-loading-en{
    animation: none !important;
  }
}

/* ================================
  SERVICE PAGE (single page)
================================ */
.service-page{
  background: #f5f2ec;
}

/* ページ全体の幅 */
.service-page .svc-wrap{
  width: min(980px, calc(100% - 28px));
  margin: 0 auto;
}

.service-page .svc-main{
  padding-top: 86px; /* ヘッダー被り回避（必要なら調整） */
}

/* HERO */
.service-page .svc-hero{
  position: relative;
  padding: 84px 0 64px;
  overflow: hidden;
}

.service-page .svc-hero-bg{
  position: absolute;
  inset: -40px;
  background:
    radial-gradient(1100px 600px at 18% 18%, rgba(120,190,255,.22), transparent 60%),
    radial-gradient(900px 520px at 82% 28%, rgba(255,160,120,.22), transparent 60%),
    radial-gradient(900px 700px at 50% 92%, rgba(255,64,129,.12), transparent 60%),
    linear-gradient(180deg, rgba(255,255,255,.55), rgba(245,242,236,1));
  filter: saturate(1.05);
}

/* うっすら紙粒 */
.service-page .svc-hero-bg::after{
  content:"";
  position:absolute;
  inset:0;
  background-image:
    radial-gradient(rgba(0,0,0,.08) 1px, transparent 1px);
  background-size: 18px 18px;
  opacity: .06;
  mix-blend-mode: multiply;
}

/* 背景のゆっくり回る円モチーフ */
.service-page .svc-hero-bg::before{
  content:"";
  position:absolute;
  width: min(720px, 92vw);
  height: min(720px, 92vw);
  left: 50%;
  top: 52%;
  transform: translate(-50%,-50%);
  border-radius: 50%;
  border: 2px solid rgba(0,0,0,.14);
  box-shadow: 0 0 0 10px rgba(0,0,0,.03) inset;
  opacity: .25;
  animation: svc-rotate 18s linear infinite;
}

@keyframes svc-rotate{
  to{ transform: translate(-50%,-50%) rotate(360deg); }
}

.service-page .svc-hero-inner{
  position: relative;
  z-index: 1;
  text-align: left;
}

.service-page .svc-kicker{
  font-family: "whoody", system-ui, sans-serif;
  letter-spacing: .22em;
  font-size: 14px;
  opacity: .75;
  margin-bottom: 10px;
}

.service-page .svc-hero-title{
  font-family: "whoody", system-ui, sans-serif;
  font-weight: 900;
  letter-spacing: .02em;
  line-height: 1.08;
  font-size: clamp(34px, 5.2vw, 64px);
  margin-bottom: 14px;
  text-shadow: 0 1px 0 rgba(255,255,255,.6);
}

.service-page .svc-hit{
  display: inline-block;
  padding: .02em .18em .08em;
  border: 3px solid #111;
  border-radius: 16px;
  box-shadow: 8px 8px 0 #111;
  background: rgba(255,255,255,.85);
}

.service-page .svc-hero-sub{
  font-family: "Montserrat", system-ui, sans-serif;
  font-weight: 700;
  letter-spacing: .08em;
  opacity: .72;
  font-size: 12px;
  line-height: 1.6;
  margin-bottom: 12px;
}

.service-page .svc-hero-tag{
  font-family: "Montserrat", system-ui, sans-serif;
  font-weight: 900;
  letter-spacing: .18em;
  font-size: 12px;
  margin-bottom: 18px;
}

.service-page .svc-hero-cta{
  display:flex;
  gap: 10px;
  flex-wrap: wrap;
}

.service-page .svc-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  height: 48px;
  padding: 0 18px;
  border-radius: 16px;
  border: 3px solid #111;
  text-decoration:none;
  color:#111;
  font-weight: 1000;
  letter-spacing: .14em;
  box-shadow: 6px 6px 0 #111;
  background: rgba(255,255,255,.88);
}

.service-page .svc-btn.primary{
  color:#fff;
  background: linear-gradient(90deg, #ffba08, #d62828, #f72585);
}

.service-page .svc-btn:hover{
  transform: translate(1px,1px);
  box-shadow: 5px 5px 0 #111;
}

/* Sections */
.service-page .svc-section{
  padding: 60px 0;
}

.service-page .svc-section.alt{
  background: linear-gradient(180deg, rgba(255,255,255,.55), rgba(255,255,255,0));
}

.service-page .svc-h2{
  font-family: "whoody", system-ui, sans-serif;
  font-weight: 900;
  letter-spacing: .05em;
  line-height: 1.1;
  font-size: clamp(22px, 3.2vw, 34px);
  margin-bottom: 14px;
}

.service-page .svc-h2 .svc-h2-en{
  display:block;
  font-family: "Montserrat", system-ui, sans-serif;
  font-weight: 900;
  font-size: 11px;
  letter-spacing: .22em;
  opacity: .65;
  margin-bottom: 6px;
}

.service-page .svc-card{
  border: 3px solid #111;
  border-radius: 22px;
  background: rgba(255,255,255,.86);
  box-shadow: 10px 10px 0 #111;
  padding: 18px 18px 16px;
}

.service-page .svc-lead{
  font-weight: 900;
  letter-spacing: .04em;
  margin-bottom: 10px;
}

.service-page .svc-body{
  opacity:.86;
}

.service-page .svc-split{
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  margin-top: 12px;
}

.service-page .svc-compare{
  border: 3px solid #111;
  border-radius: 22px;
  background: rgba(255,255,255,.85);
  box-shadow: 10px 10px 0 #111;
  padding: 14px 14px 12px;
}

.service-page .svc-compare-title{
  font-family: "Montserrat", system-ui, sans-serif;
  font-weight: 1000;
  letter-spacing: .22em;
  font-size: 12px;
  opacity: .8;
  margin-bottom: 10px;
}

.service-page .svc-list{
  list-style:none;
  display:grid;
  gap: 8px;
}

.service-page .svc-list li{
  padding: 10px 12px;
  border: 2px solid rgba(0,0,0,.14);
  border-radius: 16px;
  background: rgba(250,250,250,.85);
  font-weight: 900;
  letter-spacing: .03em;
}

.service-page .svc-quote{
  margin-top: 18px;
  font-family: "whoody", system-ui, sans-serif;
  font-weight: 900;
  letter-spacing: .06em;
  font-size: clamp(26px, 4.4vw, 46px);
  line-height: 1.05;
}

.service-page .svc-story{
  border-left: 4px solid #111;
  padding-left: 16px;
  display:grid;
  gap: 10px;
}

.service-page .svc-story p{
  opacity: .9;
  letter-spacing: .02em;
}

.service-page .svc-story-strong{
  font-weight: 1000;
}

.service-page .svc-grid{
  display:grid;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap: 14px;
  margin-top: 10px;
}

.service-page .svc-tile{
  border: 3px solid #111;
  border-radius: 22px;
  background: rgba(255,255,255,.86);
  box-shadow: 10px 10px 0 #111;
  padding: 16px 16px 14px;
}

.service-page .svc-tile h3{
  font-family: "Montserrat", system-ui, sans-serif;
  font-weight: 1000;
  letter-spacing: .12em;
  margin-bottom: 6px;
}

.service-page .svc-tile p{
  opacity: .85;
}

.service-page .svc-mini-cta{
  display:flex;
  gap: 14px;
  flex-wrap: wrap;
  margin-top: 16px;
}

.service-page .svc-link{
  font-weight: 1000;
  letter-spacing: .08em;
  text-decoration: none;
  color:#111;
  border-bottom: 2px solid #111;
  padding-bottom: 2px;
}

.service-page .svc-check{
  list-style:none;
  display:grid;
  gap: 10px;
  padding-left: 0;
}

.service-page .svc-check li{
  position: relative;
  padding: 10px 12px 10px 44px;
  border: 2px solid rgba(0,0,0,.14);
  border-radius: 16px;
  background: rgba(250,250,250,.85);
  font-weight: 900;
  letter-spacing: .03em;
}

.service-page .svc-check li::before{
  content:"";
  position:absolute;
  left: 12px;
  top: 50%;
  transform: translateY(-50%);
  width: 22px;
  height: 22px;
  border-radius: 50%;
  border: 3px solid #111;
  box-shadow: 4px 4px 0 #111;
  background: radial-gradient(circle at 35% 35%, rgba(255,255,255,.9), rgba(255,255,255,.2));
  opacity: .9;
}

.service-page .svc-sum{
  text-align:left;
}

.service-page .svc-sum-jp{
  font-family: "whoody", system-ui, sans-serif;
  font-weight: 1000;
  letter-spacing: .06em;
  font-size: clamp(30px, 5.2vw, 62px);
  line-height: 1.02;
}

.service-page .svc-sum-en{
  font-family: "Montserrat", system-ui, sans-serif;
  font-weight: 900;
  letter-spacing: .22em;
  opacity: .7;
  margin-top: 10px;
  font-size: 12px;
}

.service-page .svc-cta{
  padding: 72px 0 86px;
  background:
    radial-gradient(900px 520px at 16% 30%, rgba(255,186,8,.20), transparent 60%),
    radial-gradient(900px 520px at 84% 40%, rgba(214,40,40,.20), transparent 60%),
    linear-gradient(180deg, rgba(255,255,255,.2), rgba(245,242,236,1));
}

.service-page .svc-cta-title{
  font-family: "whoody", system-ui, sans-serif;
  font-weight: 1000;
  letter-spacing: .06em;
  font-size: clamp(28px, 4.8vw, 52px);
  line-height: 1.05;
  margin-bottom: 18px;
}

/* Responsive */
.service-page .sp-only{ display:none; }

@media (max-width: 768px){
  .service-page .svc-main{ padding-top: 74px; }
  .service-page .svc-hero{ padding: 68px 0 52px; }
  .service-page .svc-split{ grid-template-columns: 1fr; }
  .service-page .svc-grid{ grid-template-columns: 1fr; }
  .service-page .sp-only{ display:block; }
  .service-page .svc-hero-cta{ gap: 8px; }
  .service-page .svc-btn{ width: 100%; }
}

/* SERVICE：詳細リンク */
.service-more{
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;

  margin-top: 28px;
  padding: 14px 36px;

  border: 3px solid #111;
  background: #fff;
  color: #111;
  text-decoration: none;

  font-weight: 900;
  letter-spacing: .18em;
  font-size: 13px;

  box-shadow: 6px 6px 0 #111;
  transition: transform .15s ease, box-shadow .15s ease, background .2s ease;
}

.service-more:hover{
  transform:rotate(-1deg);

  box-shadow: 8px 8px 0 #111;
  background: #ffba08;
}

/* 英語サブ */
.service-more-en{
  margin-top: 6px;
  font-size: 11px;
  letter-spacing: .14em;
  opacity: .7;
}

.hero-left-layer{
  display: none;
}