/* 統合V2.1（統合V2の差分補修）。common.css / a.css / d.css / v2.css（いずれも無変更の複製）の上に重ねる差分だけ。
   動きの初期状態は html.mo のときだけ作る（静止・動き軽減・JSなしでは最初から完成状態）。 */

/* ── 予約の赤：暗い背景にも埋もれない、明るめで落ち着いた赤（白文字 5.6:1）。予約だけに使う ── */
:root{--red:#c62828;--red-h:#a32020;--red-ink:#ffffff;--red-line:#c62828;--red-focus:#f2c77e}
.v2-red:focus-visible,.spbar.v2-spbar a.v2-red:focus-visible{outline:2px solid var(--red-focus);outline-offset:3px}
html[data-herov="d"] .hd:not(.is-scrolled) .hd__reserve.v2-red{border-color:var(--red)}
.btn.v2-red,.hd__reserve.v2-red{font-weight:600}

/* ── ① Hero：広い幅・途中の幅でも写真が文字に重ならない（根本補修） ──
   原因：.a-hero の列が minmax(0,1fr) minmax(0,680px) で、文字の列は0まで縮むのに、
   中の店名は折り返さない（white-space:nowrap・4.1vw）ため約450pxより狭くできない。
   1120px付近以下では文字が写真の列へはみ出し、後に描かれる写真が文字を覆っていた。
   1600px以上でも文字の列は400px固定で、店名は列から約50px余白へはみ出していた。
   補修：文字の列は中身の最小幅（min-content）より縮めず、余りを写真の列が受け持つ。
   最大幅も少し広げ、写真の額（最大680px＝原寸）は拡大しない。 */
@media (min-width:768px){
  .a-hero.d-hero{grid-template-columns:minmax(min-content,1fr) minmax(0,680px);max-width:min(100%,1360px);
    gap:clamp(36px,4.6vw,96px);min-height:min(calc(100svh - 170px),700px);padding-bottom:clamp(20px,3vh,40px)}
}
.d-hero .a-hero__text{position:relative;z-index:2}
.d-hero .d-hero__fig{z-index:1;min-width:0}
@media (max-width:1023px) and (min-width:768px){
  .a-hero.d-hero{gap:32px}
  .d-hero .a-hero__name{font-size:clamp(34px,4.1vw,42px)}
}

/* 同じ型の不具合（写真の列が固定幅で優先され、文字の列が0まで縮む）を、全ページの2列区画で同じ方法で直す。
   文字の列に最小幅を与え、余りを写真の列が受け持つ（QAの動的リサイズ 768〜3440px で検出した箇所） */
@media (min-width:768px){
  .d-seat--counter{grid-template-columns:minmax(0,680px) minmax(13em,1fr)}
  .d-seat--table{grid-template-columns:minmax(13em,1fr) minmax(0,880px)}
  .d-seat--private{grid-template-columns:minmax(0,880px) minmax(13em,1fr)}
  .d-sig .a-sig__inner{grid-template-columns:minmax(0,760px) minmax(17em,1fr)}
  .v2-scene--door{grid-template-columns:minmax(0,680px) minmax(16em,1fr)}
  .v2-scene--sig{grid-template-columns:minmax(16em,5fr) minmax(0,640px)}
  .v2-sigm{grid-template-columns:minmax(0,640px) minmax(17em,1fr)}
  .v2-ph.v2-ph--photo{grid-template-columns:minmax(16em,1fr) minmax(0,600px)}
}

/* ── ② カウンター：Hero直下の間延びを詰める（区画の上端と光線の位置は同じ変数で連動） ── */
.v21-counter{--edge:clamp(88px,11vh,132px)}
.v21-counter .v2-counter__stage{margin-top:clamp(28px,4.5vh,52px)}
/* 枝ものの額は主写真の縁に少し重ねるが、説明の文字は主写真に掛けない */
.v21-counter .v2-branch figcaption{justify-content:flex-start}
.v21-counter .v2-counter__main img{aspect-ratio:1170/775;
  -webkit-mask-image:radial-gradient(ellipse 64% 66% at 50% 50%,#000 54%,transparent 100%);mask-image:radial-gradient(ellipse 64% 66% at 50% 50%,#000 54%,transparent 100%)}

/* ── ⑥ TOPの店内：主写真と重複させず、縦長の「カウンターと季節の枝」を主に ── */
.v21-space{background:linear-gradient(to bottom,var(--night) 0,#4a3828 110px,#a88e70 230px,var(--mid) 340px,var(--mid) 100%)}
.v21-space__grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,5fr) minmax(0,2.4fr);gap:clamp(28px,4vw,64px);max-width:1180px;margin:0 auto;align-items:end}
.v21-space .d-space__text{grid-column:auto;padding:0 0 clamp(8px,2vh,24px)}
.v21-space__main img{width:100%;aspect-ratio:4/5;object-fit:cover}
.v21-space__side{align-self:end}
.v21-space__side img{width:100%;aspect-ratio:3/4;object-fit:cover}

/* ── フッター：Instagramの入口をアイコン＋名前＋アカウントで明確に ── */
.ig-ico{flex:0 0 auto;display:inline-block}
.v21-ig{display:inline-flex!important;align-items:center;gap:12px;min-height:52px!important;padding:8px 18px 8px 14px;border:1px solid rgba(224,162,90,.5);color:#f1e7d7!important;text-decoration:none!important;transition:background-color .3s,border-color .3s}
.v21-ig .ig-ico{width:26px;height:26px;color:var(--lamp)}
.v21-ig__t{display:flex;flex-direction:column;line-height:1.35}
.v21-ig__n{font-family:"Hiragino Mincho ProN","Yu Mincho",serif;font-size:15px;letter-spacing:.16em}
.v21-ig__a{font-size:12px;letter-spacing:.04em;color:#c4b6a2}
.v21-ig:hover{background:rgba(224,162,90,.12);border-color:var(--lamp)}
.v21-ig:focus-visible{outline:2px solid var(--lamp);outline-offset:3px}
.v21-ig__p{font-size:12px;letter-spacing:.06em;color:#a99a85;margin-top:12px}
.v2-ch__label .ig-ico,.v2-rch__label .ig-ico{width:20px;height:20px;vertical-align:-3px;margin-right:8px}

/* ── 下層の見出し面：灯りがゆっくり満ちる（amb）。写真つき（コース）は文字左・写真右 ── */
.v21-ph__light{position:absolute;inset:0;pointer-events:none;z-index:0;
  background:radial-gradient(38% 70% at 20% 32%,rgba(240,190,120,.2),rgba(240,190,120,0) 70%)}
.v2-ph--photo{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,600px);gap:clamp(32px,5vw,88px);align-items:center;
  padding-left:max(clamp(16px,4vw,56px),calc((100% - 1180px)/2));padding-right:max(clamp(16px,4vw,56px),calc((100% - 1180px)/2))}
.v2-ph--photo .v2-ph__in{margin:0;max-width:none}
.v21-ph__fig{position:relative;z-index:1}
.v21-ph__fig img{width:100%;aspect-ratio:4/3;object-fit:cover;box-shadow:0 0 0 1px rgba(224,162,90,.3),0 36px 80px rgba(0,0,0,.45)}
.v21-ph__fig figcaption{color:var(--txtL2);display:flex;gap:12px;align-items:center}
.v21-ph__ex{font-size:11px;letter-spacing:.12em;padding:0 8px;border:1px solid rgba(239,230,214,.3)}

/* ── お料理：おすすめ5品の縦の編集リスト（先頭大きく、以降は左右交互） ── */
.v21-featured{padding-bottom:clamp(88px,13vh,150px)}
.v21-fl{max-width:1180px;margin:0 auto;display:grid;gap:clamp(64px,11vh,128px)}
.v21-fi{display:grid;grid-template-columns:minmax(0,6fr) minmax(15em,5fr);gap:clamp(28px,5vw,80px);align-items:center}
.v21-fi--lead{grid-template-columns:minmax(0,8fr) minmax(16em,4fr)}
.v21-fi--rev{grid-template-columns:minmax(15em,5fr) minmax(0,6fr)}
.v21-fi--rev .v21-fi__fig{order:2}
.v21-fi--tall{grid-template-columns:minmax(0,4fr) minmax(15em,6fr)}
.v21-fi--tall.v21-fi--rev{grid-template-columns:minmax(15em,6fr) minmax(0,4fr)}
.v21-fi__fig img{width:100%;object-fit:cover;aspect-ratio:3/2}
.v21-fi--lead .v21-fi__fig img{aspect-ratio:1170/649}
.v21-fi--sq .v21-fi__fig img{aspect-ratio:1}
.v21-fi--tall .v21-fi__fig img{aspect-ratio:4/5}
.v21-fi__text{max-width:30em}
.v21-fi--rev .v21-fi__text{justify-self:end}
.v21-fi__no{font-family:"Hiragino Mincho ProN",serif;font-size:13px;letter-spacing:.34em;color:var(--wood)}
.v21-fi__no::after{content:"";display:inline-block;width:40px;height:1px;background:var(--wood);vertical-align:middle;margin-left:14px;opacity:.6}
.v21-fi__h{font-family:"Hiragino Mincho ProN","Yu Mincho",serif;font-weight:500;font-size:clamp(22px,2.1vw,30px);letter-spacing:.06em;line-height:1.55;margin-top:14px}
.v21-fi--lead .v21-fi__h{font-size:clamp(24px,2.4vw,34px)}
.v21-fi__lead{font-family:"Hiragino Mincho ProN","Yu Mincho",serif;font-size:15px;letter-spacing:.12em;color:var(--wood);margin-top:10px}
.v21-fi__p{font-size:15px;line-height:2.05;letter-spacing:.04em;color:var(--ink2);margin-top:16px}

/* ── コース：PCは2列×2段、SPは1列。各コースを同じ項目で比べる ── */
.v2-courses .v2-cc__grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(18px,2.4vw,32px)}
.v21-cc{padding:clamp(26px,3vw,40px) clamp(22px,3vw,40px);position:relative}
.v21-cc__no{position:absolute;top:clamp(18px,2.4vw,30px);right:clamp(20px,2.6vw,34px);font-family:"Hiragino Mincho ProN",serif;font-size:clamp(26px,2.6vw,36px);letter-spacing:.08em;color:var(--wood);opacity:.38;line-height:1}
.v21-cc .v2-cc__h{font-size:clamp(19px,1.7vw,24px);padding-right:2.6em}
.v21-cc .v2-cc__p{font-size:14px;line-height:2}
.v21-cc .v2-cc__dl{gap:0}
.v21-cc .v2-cc__dl div{grid-template-columns:9.6em minmax(0,1fr);gap:12px;padding:11px 0;border-bottom:1px dotted var(--line)}
.v21-cc .v2-cc__dl dt{font-size:12px;line-height:1.9;white-space:nowrap}
.v21-cc .v2-cc__dl dd{font-size:14px}
/* 区画の上辺の線が引かれる（コース名・本文は最初から表示） */
.v21-cc::before{content:"";position:absolute;left:0;right:0;top:-2px;height:2px;background:var(--lamp);transform-origin:left center}
.mo .v21-cc[data-rv="cardline"]::before{transform:scaleX(0);transition:transform 1.2s cubic-bezier(.2,.7,.1,1) var(--d,0s)}
.mo .v21-cc[data-rv="cardline"].in::before{transform:none}
/* メッセージプレート：左に写真、右に文章 */
.v21-plate{padding:clamp(110px,15vh,170px) clamp(16px,4vw,56px)}
.v21-plate__in{max-width:1080px;margin:0 auto;display:grid;grid-template-columns:minmax(0,400px) minmax(0,1fr);gap:clamp(36px,6vw,96px);align-items:center}
.v21-plate__frame{padding:10px;background:#1d150f;box-shadow:0 0 0 1px rgba(224,162,90,.34),0 30px 70px rgba(0,0,0,.5)}
.v21-plate__frame img{display:block;width:100%;aspect-ratio:1;object-fit:cover}
.v21-plate__text .a-label{justify-content:flex-start}
.v21-plate__text .a-body{margin-left:0}
.v21-plate__text .olink{margin-top:28px}

/* ── 店内：TOPと同じ主写真を、横長のパノラマ切り抜き＋左右を黒へ溶かす構図で ── */
.v21-room--counter{display:block;max-width:none;color:var(--txtL);padding:clamp(64px,10vh,120px) clamp(16px,4vw,56px) clamp(150px,19vh,210px);
  background:linear-gradient(to bottom,var(--paper) 0,var(--night) 120px,var(--night) calc(100% - 140px),var(--paper) 100%)}
.v2-ph:has(+ .v21-room--counter)::after{display:none}
.v2-ph + .v21-room--counter{background:linear-gradient(to bottom,var(--wood-d2) 0,var(--night) 120px,var(--night) calc(100% - 140px),var(--paper) 100%)}
.v21-room__pano{max-width:1240px;margin:0 auto}
.v21-room__pano img{width:100%;aspect-ratio:2/1;object-fit:cover;object-position:50% 42%;
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 10%,#000 90%,transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 10%,#000 90%,transparent 100%)}
.v21-room__pano figcaption{justify-content:center}
.v21-room__row{max-width:1180px;margin:clamp(40px,6vh,72px) auto 0;display:grid;grid-template-columns:minmax(0,6fr) minmax(0,2.6fr) minmax(0,3.4fr);gap:clamp(24px,3vw,48px);align-items:end}
.v21-room--counter .a-label{color:var(--lamp)}
.v21-room--counter .a-h2{color:var(--txtL)}
.v21-room--counter .a-body,.v21-room--counter figcaption{color:var(--txtL2)}
.v21-room__branch img{width:100%;aspect-ratio:3/4;object-fit:cover}
.v21-room__people img{width:100%;aspect-ratio:636/426;object-fit:cover}

/* ── アクセス：地図は近づくと自動で読み込む。読めないときは住所と「Googleマップで開く」を残す ── */
.v21-map{position:relative}
.v21-map iframe{position:absolute;inset:0;width:100%;height:100%;min-height:0;opacity:0;pointer-events:none;transition:opacity .6s ease}
.v21-map.is-loaded iframe{position:static;order:-1;flex:1;min-height:360px;opacity:1;pointer-events:auto}
.v21-map.is-loaded .v2-map__ph{flex:0;flex-direction:row;flex-wrap:wrap;justify-content:space-between;gap:6px 16px;padding:12px 4px 0;background:none;text-align:left}
.v21-map.is-loaded .v2-map__addr{display:block;font-size:14px}
.v21-map.is-loaded .v2-map__note{display:none}
.v21-map.is-failed iframe{display:none}

/* ── 下層の動き（html.mo のときだけ。静止・動き軽減・JSなしでは完成状態） ── */
/* sweep：写真の上を灯りの帯が一度だけ通る */
[data-rv="sweep"]{position:relative;overflow:hidden}
.mo [data-rv="sweep"]::after{content:"";position:absolute;top:-10%;bottom:-10%;left:0;width:42%;pointer-events:none;mix-blend-mode:screen;
  background:linear-gradient(100deg,rgba(255,226,170,0),rgba(255,226,170,.3) 50%,rgba(255,226,170,0));transform:translateX(-130%) skewX(-12deg)}
.mo [data-rv="sweep"].in::after{animation:v21sweep 2.2s cubic-bezier(.45,0,.2,1) .35s both}
@keyframes v21sweep{to{transform:translateX(330%) skewX(-12deg)}}
/* pan：横長写真でゆっくりカメラが横へ動いて止まる */
[data-rv="pan"]{overflow:hidden}
.mo [data-rv="pan"] img{transform:scale(1.1) translateX(3%);transition:transform 3.2s cubic-bezier(.2,.6,.1,1)}
.mo [data-rv="pan"].in img{transform:scale(1.03) translateX(-.5%)}
/* frame：内側の輪郭線が引かれ、写真が浮き上がる */
[data-rv="frame"]{position:relative}
[data-rv="frame"]::before{content:"";position:absolute;inset:12px;border:1px solid rgba(255,240,215,.62);pointer-events:none;z-index:1}
.mo [data-rv="frame"]::before{clip-path:inset(0 100% 100% 0);transition:clip-path 1.5s cubic-bezier(.65,0,.2,1) .2s}
.mo [data-rv="frame"].in::before{clip-path:inset(0 0 0 0)}
.mo [data-rv="frame"] img{opacity:.15;transform:translateY(12px);transition:opacity 1.1s ease .45s,transform 1.3s cubic-bezier(.2,.7,.1,1) .45s}
.mo [data-rv="frame"].in img{opacity:1;transform:none}
/* dolly：主役の皿へカメラが寄り、露光が上がる */
[data-rv="dolly"]{overflow:hidden}
.mo [data-rv="dolly"] img{transform:scale(1.12);filter:brightness(.45);transition:transform 2.4s cubic-bezier(.2,.7,.1,1),filter 1.6s ease}
.mo [data-rv="dolly"].in img{transform:none;filter:none}
/* develop：暗室で焼き付けるように露光が上がる（ギャラリー） */
.mo [data-rv="develop"] img{filter:brightness(.18) sepia(.35);transition:filter 1.5s ease var(--d,0s),transform .8s cubic-bezier(.2,.7,.1,1)}
.mo [data-rv="develop"].in img{filter:none}

/* ── 中間幅・SP ── */
@media (max-width:1100px){
  .v21-room__row{grid-template-columns:minmax(0,1fr) minmax(0,1fr);}
  .v21-room__row .v2-room__text{grid-column:1 / -1}
}
@media (max-width:767px){
  .v21-space__grid{grid-template-columns:1fr;gap:24px}
  .v21-space__side{width:52%;justify-self:end}
  .v2-ph--photo{display:block;padding:48px 16px 64px}
  .v2-ph--photo .v2-ph__in{display:flex;flex-direction:column}
  .v2-ph--photo .v2-crumb{order:1}.v2-ph--photo .a-label{order:2}.v2-ph--photo .v2-ph__h{order:3}
  .v2-ph--photo .a-rule{order:5}.v2-ph--photo .v2-ph__sub{order:6}
  .v21-ph__fig{margin:22px -16px 0}
  .v21-ph__fig figcaption{padding:0 16px}
  .v21-fl{gap:56px}
  .v21-fi,.v21-fi--lead,.v21-fi--rev,.v21-fi--tall,.v21-fi--tall.v21-fi--rev{grid-template-columns:1fr;gap:18px}
  .v21-fi--rev .v21-fi__fig{order:0}
  .v21-fi--lead .v21-fi__fig{margin:0 -16px}
  .v21-fi:not(.v21-fi--lead) .v21-fi__fig{width:88%}
  .v21-fi--rev:not(.v21-fi--lead) .v21-fi__fig{justify-self:end}
  .v21-fi--tall .v21-fi__fig{width:72%}
  .v21-fi--rev .v21-fi__text{justify-self:start}
  .v21-fi__p{font-size:14px}
  .v2-courses .v2-cc__grid{grid-template-columns:1fr}
  .v21-cc .v2-cc__dl div{grid-template-columns:9.2em minmax(0,1fr);gap:8px}
  .v21-cc .v2-cc__dl dt{font-size:11px;letter-spacing:.08em}
  .v21-plate{padding:96px 16px}
  .v21-plate__in{grid-template-columns:1fr;gap:28px}
  .v21-plate__fig{width:78%;max-width:340px}
  .v21-room--counter{padding:56px 16px 130px}
  .v21-room__pano{margin:0 -16px}
  .v21-room__pano img{aspect-ratio:4/3;-webkit-mask-image:none;mask-image:none}
  .v21-room__pano figcaption{padding:0 16px;justify-content:flex-start}
  .v21-room__row{grid-template-columns:1fr 1fr;gap:14px}
}

/* 写真の説明・見出しの最後の1〜2文字だけが次の行に落ちないように（対応ブラウザ） */
figcaption,.v21-fi__h,.v2-ph__h,.v2-cc__h,.a-h2{text-wrap:balance}
.v21-fi__p,.v2-ph__sub,.a-body,.v21-ig__p{text-wrap:pretty}
