:root {
  --paper: #f3efe6; --paper-light: #fbf9f4; --ink: #25251f; --green: #153c2e;
  --green-deep: #0e251c; --gold: #9b7d43; --line: rgba(37,37,31,.24);
  --serif: "Yu Mincho", "Hiragino Mincho ProN", "Noto Serif JP", serif;
  --sans: "Yu Gothic", "Hiragino Kaku Gothic ProN", "Noto Sans JP", sans-serif;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; overflow-x: hidden; }
body { margin: 0; overflow-x: hidden; color: var(--ink); background: var(--paper-light); font-family: var(--serif); font-size: 17px; font-weight: 500; line-height: 1.9; }
body.menu-open { overflow: hidden; }
h1, h2, h3, dt, dd, .button, .floating-action, .menu-price, .large-price { word-break: keep-all; }
img { display: block; width: 100%; height: 100%; object-fit: cover; }
figure { margin: 0; }
a { color: inherit; text-decoration: none; }
button { color: inherit; font: inherit; }
.container { width: min(1180px, calc(100% - 48px)); margin-inline: auto; }
.skip-link { position: fixed; top: -100px; left: 14px; z-index: 300; padding: 10px 16px; background: #fff; }
.skip-link:focus { top: 12px; }
.eyebrow { margin: 0 0 17px; color: var(--gold); font: 700 .76rem/1.3 var(--sans); letter-spacing: .2em; }
.section-title { margin: 0; font-size: clamp(2.15rem, 4.6vw, 4.6rem); font-weight: 600; line-height: 1.35; letter-spacing: .08em; }
.display-title { margin: 0; font-size: clamp(3.2rem, 7vw, 7rem); font-weight: 500; line-height: 1.1; letter-spacing: .12em; }
.phrase, .hero-line { display: inline-block; white-space: nowrap; }
.text-unit { display: inline-block; white-space: nowrap; }
.keep { display: inline-block; white-space: nowrap; }
.lead-text { font-size: clamp(1.2rem, 2vw, 1.55rem); font-weight: 600; line-height: 1.8; }
.button { display: inline-flex; min-height: 56px; align-items: center; justify-content: center; gap: 28px; margin-top: 30px; padding: 10px 24px; border: 1px solid currentColor; font: 700 .9rem/1 var(--sans); letter-spacing: .06em; transition: color .3s, background .3s; }
.button::after { content: "→"; font-size: 1.2em; }
.button:hover, .button:focus-visible { color: #fff; background: var(--green); }
.button-light:hover, .button-light:focus-visible { color: var(--green); background: #fff; }

/* 共通ヘッダー */
.site-header { position: fixed; inset: 0 0 auto; z-index: 100; height: 82px; color: #f7f2e8; background: rgba(14,50,38,.98); border-bottom: 1px solid rgba(255,255,255,.2); transition: height .25s ease, background .25s ease; }
.site-header.is-scrolled, .site-header.header-solid { height: 70px; color: #f7f2e8; background: rgba(14,50,38,.98); border-color: rgba(255,255,255,.18); backdrop-filter: blur(8px); }
.header-inner { height: 100%; display: flex; align-items: center; justify-content: space-between; padding: 0 3.5vw; }
.logo { display: inline-flex; align-items: baseline; gap: 13px; white-space: nowrap; font-size: 1.48rem; font-weight: 700; letter-spacing: .13em; }
.logo small { font: 600 .61rem/1 var(--sans); letter-spacing: .17em; }
.global-nav { display: flex; align-items: center; gap: clamp(20px, 2.4vw, 40px); font: 700 .72rem/1 var(--sans); letter-spacing: .12em; }
.global-nav a { padding: 15px 0; border-bottom: 1px solid transparent; }
.global-nav a:hover, .global-nav a:focus-visible, .global-nav a[aria-current="page"] { border-color: currentColor; }
.nav-tel { padding-inline: 18px !important; border: 1px solid currentColor !important; }
.menu-button { display: none; width: 48px; height: 48px; border: 0; background: transparent; }
.menu-button span { display: block; width: 26px; height: 1px; margin: 7px auto; background: currentColor; transition: .3s; }
.mobile-menu { display: none; }
@media (max-width: 920px) {
.mobile-menu[open] { display: block; position: fixed; inset: 0; width: 100%; max-width: none; height: 100dvh; max-height: none; margin: 0; padding: 0; border: 0; background: transparent; color: var(--paper); overflow: clip; }
.mobile-menu::backdrop { background: rgba(0,0,0,.4); }
.mobile-menu-panel { position: fixed; top: 0; right: 0; left: auto; width: 80vw; height: 100dvh; box-sizing: border-box; padding: max(88px, env(safe-area-inset-top)) 24px max(32px, env(safe-area-inset-bottom)); background: var(--green); overflow: clip; transform: translateX(100%); transition: transform 250ms ease; }
.mobile-menu.is-open .mobile-menu-panel { transform: translateX(0); }
.mobile-menu-close { position: absolute; top: max(10px, env(safe-area-inset-top)); right: 18px; width: 48px; height: 48px; border: 0; background: var(--green); color: var(--paper); font: 300 36px/1 var(--sans); cursor: pointer; z-index: 1; }
.mobile-menu nav { display: flex; flex-direction: column; max-height: 100%; overflow-y: auto; overscroll-behavior: contain; }
.mobile-menu nav a { display: block; padding: 24px 0; border-bottom: 1px solid rgba(243,239,230,.25); font-size: clamp(16px,4.5vw,21px); letter-spacing: .06em; line-height: 1.6; }
.mobile-menu a:focus-visible, .mobile-menu-close:focus-visible { outline: 2px solid var(--paper); outline-offset: 3px; }
.menu-open .floating-actions { visibility: hidden; }
}

/* HOME */
.hero { min-height: 100svh; position: relative; display: grid; place-items: center; overflow: hidden; color: var(--green-deep); background: var(--paper); }
.hero-media { position: absolute; inset: 0; }
.hero-media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(248,244,235,.78) 0%, rgba(248,244,235,.52) 47%, rgba(248,244,235,.1) 79%); }
.hero-media img { opacity: 1; scale: 1; filter: brightness(1.15) saturate(1.1); animation: none; }
.hero-content { position: relative; z-index: 1; width: min(1180px, calc(100% - 48px)); padding-top: 70px; }
.hero-kicker { margin: 0 0 28px; font: 600 .8rem/1.8 var(--sans); letter-spacing: .26em; }
.hero h1 { max-width: 950px; margin: 0; font-size: clamp(2.8rem, 6vw, 5.8rem); font-weight: 600; line-height: 1.35; letter-spacing: .1em; text-shadow: 0 1px 0 rgba(255,255,255,.45); }
.hero-shop { margin: 26px 0 0; font-size: 1.25rem; letter-spacing: .28em; }
.scroll-cue { position: absolute; right: 3vw; bottom: 0; z-index: 2; display: flex; align-items: center; gap: 12px; writing-mode: vertical-rl; font: 700 .62rem/1 var(--sans); letter-spacing: .18em; }
.scroll-cue::after { content: ""; width: 1px; height: 70px; background: rgba(255,255,255,.72); animation: scroll-line 2s ease-in-out infinite; }
.about-section { padding: clamp(100px, 11vw, 165px) 0; background: var(--paper); }
.about-grid { display: grid; grid-template-columns: minmax(360px,.9fr) 1.25fr; gap: 7vw; align-items: center; }
.about-copy h2, .interior-copy h2 { margin: 0 0 32px; font-size: clamp(2rem, 3.5vw, 3.5rem); font-weight: 600; line-height: 1.6; letter-spacing: .07em; }
.about-copy p:last-child, .interior-copy p:last-child { max-width: 31em; margin: 0; }
.about-photo { aspect-ratio: 16 / 9; }
.about-photo img { object-fit: cover; object-position: center 46%; }
.season-section { padding: clamp(100px, 11vw, 165px) 0; }
.season-heading { display: grid; grid-template-columns: 1fr minmax(320px, .7fr); gap: 8vw; align-items: end; margin-bottom: 62px; }
.season-heading > p { margin: 0 0 8px; }
.season-photo { width: 92%; margin-left: auto; aspect-ratio: 16 / 9; }
.seasonal-notice { padding: clamp(40px,6vw,80px) 0; background: var(--paper); border-bottom: 1px solid var(--line); }
.seasonal-notice[hidden], .seasonal-notice img[hidden] { display: none; }
.seasonal-notice h2 { font-size: clamp(1.5rem,3vw,2.5rem); line-height: 1.6; margin: 0 0 24px; }
.seasonal-notice-body { white-space: pre-line; line-height: 1.9; overflow-wrap: anywhere; }
.osechi-word { white-space: nowrap; overflow-wrap: normal; word-break: normal; }
.seasonal-notice img { width: 100%; height: auto; object-fit: contain; max-width: 640px; }
.osechi-gallery { display: grid; gap: 24px; min-width: 0; width: 100%; max-width: 640px; margin-top: 24px; align-content: start; }
.osechi-gallery img { display: block; width: 100%; max-width: 100%; height: auto; aspect-ratio: auto; object-fit: contain; }
@media (min-width: 921px) {
  .osechi-gallery { margin-top: 0; }
  .news-detail > .osechi-gallery { grid-column: 2; grid-row: 1 / 3; justify-self: end; }
}
.seasonal-notice-links { display: flex; flex-wrap: wrap; gap: 16px 28px; margin-top: 24px; }
.seasonal-notice-links a { color: var(--green); text-decoration: underline; text-underline-offset: 5px; }
@media (min-width: 921px) {
  .seasonal-notice.has-photo .seasonal-notice-grid { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 48px; align-items: start; }
}
.news-section { padding: clamp(68px,7vw,105px) 0; background: var(--paper); }
.important-notice { position: relative; z-index: 95; padding: 11px 24px; color: #fff; background: var(--green); text-align: center; font: 700 .9rem/1.6 var(--sans); }
.important-notice a { color: inherit; text-decoration: underline; text-underline-offset: 3px; }
.news-archive-link { display: inline-block; margin-top: 22px; padding-bottom: 4px; border-bottom: 1px solid currentColor; color: var(--green); font: 700 .9rem/1.5 var(--sans); }
.news-archive-link[hidden] { display: none; }
.news-archive-page { padding-top: 100px; }
.news-grid { display: grid; grid-template-columns: .7fr 1.3fr; gap: 9vw; }
.news-list { border-top: 1px solid var(--ink); }
.news-empty { margin: 0; padding: 30px 0; border-bottom: 1px solid var(--line); }
.news-item a { display: grid; grid-template-columns: 8em 9em 1fr; gap: 18px; align-items: center; min-height: 78px; padding: 17px 0; border-bottom: 1px solid var(--line); }
.news-item a:hover h3, .news-item a:focus-visible h3 { text-decoration: underline; text-underline-offset: 5px; }
.news-item time { font-family: var(--sans); font-weight: 700; }
.news-category { color: var(--gold); font-size: .86rem; font-weight: 700; }
.news-item h3 { margin: 0; font-size: 1.05rem; font-weight: 600; }
.news-item a.has-news-image { grid-template-columns: 112px 8em 9em 1fr; }
.news-image { width: 112px; aspect-ratio: 4 / 3; object-fit: cover; grid-row: 1; }
.news-detail { min-width: 0; padding-bottom: 24px; border-bottom: 1px solid var(--line); }
.news-detail a { grid-template-columns: auto 1fr; gap: 8px 18px; border-bottom: 0; }
.news-detail h3 { grid-column: 1 / -1; }
.news-body { margin: 0 0 20px; white-space: pre-line; overflow-wrap: anywhere; line-height: 1.9; }
.news-detail > .news-image { display: block; width: 100%; max-width: 640px; height: auto; aspect-ratio: auto; object-fit: contain; }
.news-new { margin-left: 12px; color: #a83232; font: 700 .72rem/1.4 var(--sans); }
@media (min-width: 921px) {
  .news-grid { grid-template-columns: minmax(0,1fr); gap: 32px; }
  .news-detail { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); column-gap: 48px; padding: 28px 0; align-items: start; }
  .news-detail > a { grid-column: 1; grid-row: 1; }
  .news-detail > .news-body { grid-column: 1; grid-row: 2; }
  .news-detail > .news-image { grid-column: 2; grid-row: 1 / 3; justify-self: end; }
}
.home-meals { display: grid; grid-template-columns: .94fr 1.06fr; }
.meal-panel { position: relative; min-height: 660px; display: flex; align-items: flex-end; overflow: hidden; color: var(--green-deep); }
.meal-panel img { position: absolute; inset: 0; filter: brightness(1.08) saturate(1.12); transition: transform .9s cubic-bezier(.2,.7,.2,1); }
.meal-panel::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, rgba(248,244,235,.94) 0%, rgba(248,244,235,.78) 42%, rgba(248,244,235,.18) 78%, rgba(248,244,235,.04) 100%); }
.meal-panel:hover img { transform: scale(1.025); }
.meal-panel-content { position: relative; z-index: 1; padding: clamp(38px, 5.5vw, 78px); }
.meal-panel h2 { margin: 0 0 12px; font-size: clamp(2.8rem, 5vw, 5rem); font-weight: 500; letter-spacing: .1em; }
.meal-panel p { max-width: 460px; margin: 0 0 22px; }
.meal-panel .eyebrow { color: var(--gold-dark); }
.meal-panel .meal-price { display: block; width: fit-content; margin: -7px 0 0; padding-top: 10px; border-top: 1px solid rgba(15,55,42,.4); font: 700 .9rem/1.5 var(--sans); letter-spacing: .03em; }
.meal-panel .button-light { color: var(--green-deep); background: rgba(248,244,235,.52); }
.meal-panel .button-light:hover, .meal-panel .button-light:focus-visible { color: #fff; background: var(--green); }
.interior-flow { display: grid; grid-template-columns: 1.18fr .82fr; min-height: 700px; color: #fff; background: var(--green); }
.interior-photo { min-height: 620px; }
.image-placeholder { display: grid; place-items: center; color: #fff; text-align: center; background: linear-gradient(rgba(21,60,46,.82),rgba(21,60,46,.82)), repeating-linear-gradient(45deg,#426454 0 1px,transparent 1px 80px); }
.image-placeholder span { font-size: 1.3rem; letter-spacing: .14em; }
.image-placeholder small { font-size: .75rem; }
.image-placeholder.has-image, .alley-placeholder.has-image { background-size: cover; background-position: center; }
.image-placeholder.has-image span, .alley-placeholder.has-image span { display: none; }
.interior-copy { display: flex; flex-direction: column; justify-content: center; padding: clamp(55px, 6vw, 100px); }
.info-teaser { padding: clamp(100px, 10vw, 150px) 0; }
.info-teaser-grid { display: grid; grid-template-columns: .75fr 1.25fr; gap: 9vw; }

/* 共通情報・予約・フッター */
.info-table { margin: 0; }
.info-row { display: grid; grid-template-columns: 8em 1fr; gap: 22px; padding: 19px 0; border-bottom: 1px solid var(--line); }
.info-row dt { font-weight: 700; }
.info-row dd { margin: 0; }
.tel-link { font-family: var(--serif); font-size: clamp(1.35rem, 2.4vw, 1.9rem); font-weight: 700; letter-spacing: .04em; }
.reservation { padding: clamp(90px, 11vw, 140px) 24px; text-align: center; color: #fff; background: var(--green); }
.reservation h2 { max-width: 900px; margin: 0 auto 25px; font-size: clamp(2rem, 4.5vw, 4rem); font-weight: 600; line-height: 1.45; letter-spacing: .08em; }
.reservation h2 .text-unit + .text-unit { margin-left: .25em; }
.reservation p { margin: 0 0 24px; }
.reservation-tel { display: inline-block; font-size: clamp(2.2rem, 6vw, 4.5rem); font-weight: 700; letter-spacing: .04em; line-height: 1.3; border-bottom: 1px solid rgba(255,255,255,.55); }
.reservation-hours { margin-top: 20px !important; }
.site-footer { padding: 72px 24px 105px; color: #fff; background: var(--green-deep); }
.footer-inner { width: min(1180px,100%); margin: 0 auto; display: grid; grid-template-columns: 1fr 1.2fr .7fr; gap: 7vw; }
.footer-logo { margin: 0 0 16px; font-size: 1.4rem; font-weight: 700; letter-spacing: .18em; }
.site-footer address { font-style: normal; font-size: .88rem; line-height: 1.8; }
.footer-tel { display: inline-block; margin-top: 12px; font-size: 1.15rem; font-weight: 700; }
.footer-hours { margin: 0; }
.footer-hours div { display: grid; grid-template-columns: 6em 1fr; gap: 10px; padding: 9px 0; border-bottom: 1px solid rgba(255,255,255,.16); }
.footer-hours dt { font-weight: 700; }
.footer-hours dd { margin: 0; font-size: .88rem; }
.footer-nav { display: flex; flex-direction: column; gap: 9px; font: 700 .78rem/1.5 var(--sans); letter-spacing: .07em; }
.copyright { width: min(1180px,100%); margin: 50px auto 0; font: .68rem/1.5 var(--sans); opacity: .7; }
.floating-actions { position: fixed; z-index: 90; right: 22px; bottom: max(22px, env(safe-area-inset-bottom)); display: flex; align-items: stretch; gap: 8px; }
.floating-action { min-width: 0; min-height: 50px; display: flex; align-items: center; justify-content: center; gap: 9px; padding: 10px 16px; color: #fff; border: 1px solid rgba(255,255,255,.32); box-shadow: 0 3px 10px rgba(0,0,0,.1); font: 700 .9rem/1.2 var(--sans); letter-spacing: .025em; transition: filter .2s ease, translate .2s ease; }
.floating-call { background: var(--green); }
.floating-instagram { background: #76594f; }
.floating-instagram svg { width: 21px; height: 21px; fill: none; stroke: currentColor; stroke-width: 1.8; }
.floating-instagram .instagram-dot { fill: currentColor; stroke: none; }
.floating-action:hover { filter: brightness(1.08); translate: 0 -1px; }
.floating-action:focus-visible { outline: 3px solid #fff; outline-offset: 3px; filter: brightness(1.08); }

/* 下層ページ共通 */
.page-hero { min-height: 72svh; position: relative; display: flex; align-items: flex-end; overflow: hidden; color: var(--green-deep); background: var(--paper); }
.page-hero img { position: absolute; inset: 0; filter: brightness(1.08) saturate(1.12); }
.page-hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(248,244,235,.78) 0%, rgba(248,244,235,.5) 45%, rgba(248,244,235,.08) 78%); }
.dinner-hero::after { background: linear-gradient(90deg, rgba(248,244,235,.76) 0%, rgba(248,244,235,.47) 45%, rgba(248,244,235,.07) 78%); }
.page-hero-content { position: relative; z-index: 1; width: min(1180px,calc(100% - 48px)); margin: 0 auto; padding: 130px 0 62px; }
.page-hero h1 { margin: 0; font-size: clamp(2.8rem, 6vw, 5.8rem); font-weight: 600; line-height: 1.2; letter-spacing: .1em; }
.page-hero-content > p { margin: 0 0 12px; font-family: var(--sans); font-weight: 700; letter-spacing: .12em; }
.hero-hours { display: flex; gap: 38px; margin: 24px 0 0; }
.hero-hours div { display: flex; gap: 12px; align-items: baseline; }
.hero-hours dt { font-size: .82rem; font-weight: 700; }
.hero-hours dd { margin: 0; font-size: 1.12rem; font-weight: 700; }
.page-lead { padding: clamp(64px,6.5vw,96px) 0; }
.page-lead .section-title { font-size: clamp(2.6rem,3.9vw,4rem); line-height: 1.5; }
.lead-grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(56px,6vw,96px); align-items: center; }
.lead-grid > .reveal-text { max-width: 36em; }
.lead-grid p { margin-top: 0; }
.section-heading { margin-bottom: 55px; }

/* スライダー共通 */
.slider { position: relative; }
.slider-viewport { overflow: hidden; touch-action: pan-y; }
.slider-track { display: flex; transition: transform .7s cubic-bezier(.2,.7,.2,1); will-change: transform; }
.slider-slide { min-width: 100%; }
.slider-controls { display: flex; align-items: center; justify-content: center; gap: 24px; margin-top: 25px; }
.slider-arrow { width: 48px; height: 48px; padding: 0; border: 1px solid var(--line); background: transparent; cursor: pointer; }
.slider-arrow:hover, .slider-arrow:focus-visible { color: #fff; background: var(--green); }
.slider-dots { display: flex; gap: 12px; }
.slider-dot { width: 11px; height: 11px; padding: 0; border: 1px solid currentColor; border-radius: 50%; background: transparent; cursor: pointer; }
.slider-dot[aria-current="true"] { background: currentColor; }
.slider-toggle { min-height: 42px; padding: 7px 14px; border: 1px solid var(--line); background: transparent; color: var(--green); cursor: pointer; font: 700 .78rem/1 var(--sans); white-space: nowrap; }
.slider-toggle:hover, .slider-toggle:focus-visible { color: #fff; background: var(--green); }

/* LUNCH */
.lunch-courses { padding: clamp(95px,11vw,160px) 0; background: var(--paper); }
.course-slider { border-top: 1px solid var(--ink); border-bottom: 1px solid var(--ink); padding: 34px 60px 28px; }
.course-slider .slider-controls { margin-top: 24px; }
.course-slider .slider-dots { justify-content: center; }
.course-slider .slider-arrow { position: absolute; z-index: 3; top: calc(50% - 20px); width: 56px; height: 56px; color: var(--green); background: rgba(251,249,244,.92); border-color: rgba(23,61,48,.55); font-size: 1.35rem; }
.course-slider .slider-arrow.prev { left: 12px; }
.course-slider .slider-arrow.next { right: 12px; }
.course-slider .slider-arrow:hover, .course-slider .slider-arrow:focus-visible { color: #fff; background: var(--green); }
.course-slide { display: grid; grid-template-columns: .86fr 1.14fr; gap: 4.5vw; align-items: center; }
.course-slide figure { aspect-ratio: 4 / 3; }
.course-copy { padding-left: 2vw; }
.course-position { margin: 0 0 14px; color: var(--gold); font-weight: 700; }
.course-copy h3 { margin: 0; font-size: clamp(2.8rem,5vw,5rem); font-weight: 500; letter-spacing: .12em; }
.large-price { margin: 10px 0 26px; font-size: clamp(1.9rem,3.5vw,3rem); font-weight: 700; line-height: 1.3; }
.large-price small { font-size: .5em; }
.course-note { margin: 18px 0 0; font-size: .88rem; }
.monthly-style { padding: clamp(72px,7.5vw,112px) 0; }
.monthly-style-heading { display: grid; grid-template-columns: 1.05fr .95fr; gap: 7vw; align-items: end; margin-bottom: 64px; }
.monthly-style-heading .section-title { font-size: clamp(2.5rem,3.8vw,4rem); line-height: 1.5; }
.monthly-style-heading > p:last-child { margin: 0 0 8px; }
.style-flow { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 34px; }
.style-item { position: relative; display: flex; flex-direction: column; align-items: stretch; }
.style-item-reverse figure, .style-item-reverse .style-copy { grid-column: auto; grid-row: auto; }
.style-item figure { aspect-ratio: 4 / 3; }
.style-number { position: absolute; top: 12px; left: 14px; z-index: 1; color: #fff; font: 700 1rem/1 var(--sans); letter-spacing: .12em; text-shadow: 0 1px 8px rgba(0,0,0,.45); }
.style-item-reverse .style-number { right: auto; left: 14px; }
.style-item:not(:last-child)::after { content: "→"; position: absolute; top: 27%; right: -27px; z-index: 2; color: var(--gold); font-size: 1.4rem; }
.style-copy { padding: 22px 4px 0; }
.style-copy h3 { margin: 0 0 12px; font-size: clamp(1.35rem,2vw,1.75rem); font-weight: 600; letter-spacing: .08em; }
.style-copy p { margin: 0; }
.style-repeat { display: flex; align-items: center; justify-content: center; gap: 22px; margin: 54px 0 0; padding: 22px 0; border-block: 1px solid var(--line); }
.style-repeat span { font-size: 1.15rem; font-weight: 700; }
.style-repeat i { color: var(--gold); font-style: normal; }
.style-repeat strong { font-size: .9rem; }

/* DINNER */
.dinner-page { color: #f4f0e7; background: var(--green-deep); }
.dinner-page .site-header.is-scrolled { color: #f4f0e7; background: rgba(14,37,28,.97); border-color: rgba(255,255,255,.18); }
.dinner-index { position: sticky; top: 70px; z-index: 50; display: grid; grid-template-columns: repeat(3,1fr); color: var(--ink); background: rgba(251,249,244,.97); border-bottom: 1px solid var(--line); }
.dinner-index a { min-height: 62px; display: grid; place-items: center; border-right: 1px solid var(--line); font-weight: 700; letter-spacing: .1em; }
.dinner-index a:hover, .dinner-index a:focus-visible { color: #fff; background: var(--green); }
.anchor-section { scroll-margin-top: 145px; }
.kaiseki-section { padding: clamp(76px,8vw,120px) 0; }
.kaiseki-heading { display: grid; grid-template-columns: 1.1fr .9fr; align-items: end; gap: 7vw; margin-bottom: 56px; }
.kaiseki-heading .display-title { font-size: clamp(3.2rem,6vw,6.2rem); }
.kaiseki-heading > p:last-child { max-width: 420px; margin: 0 0 10px; }
.kaiseki-main-photo { width: 94%; margin-left: auto; aspect-ratio: 16 / 9; }
.kaiseki-courses { display: grid; grid-template-columns: 1fr 1fr; margin-top: 90px; border-top: 1px solid rgba(255,255,255,.5); }
.kaiseki-course { padding: 48px 5vw 28px 0; border-bottom: 1px solid rgba(255,255,255,.25); }
.kaiseki-course-b { padding-left: 5vw; border-left: 1px solid rgba(255,255,255,.25); }
.course-kana { margin: 0; color: #c3a66a; font-weight: 700; }
.course-title-line { display: flex; align-items: baseline; gap: 25px; }
.course-title-line h3 { flex: 0 0 30%; margin: 8px 0; font-size: 4.8rem; font-weight: 400; }
.course-title-line .large-price { margin: 0; white-space: nowrap; }
.kaiseki-items { display: flex; flex-wrap: wrap; align-items: center; row-gap: 6px; font-size: clamp(1rem,1.2vw,1.12rem); }
.kaiseki-items span { display: inline-block; white-space: nowrap; }
.kaiseki-items span:not(:last-child)::after { content: "／"; }
.anniversary-2026 { display: grid; grid-template-columns: minmax(370px,.9fr) minmax(0,1.5fr); column-gap: clamp(44px,5vw,82px); row-gap: 28px; align-items: start; margin-top: 100px; padding: 54px 5.5vw; color: var(--ink); background: var(--paper); border-left: 4px solid var(--gold); }
.limited-label { margin: 0 0 10px; color: var(--gold); font: 700 .78rem/1 var(--sans); letter-spacing: .16em; }
.anniversary-2026 h3 { margin: 0; font-size: clamp(2.15rem,3.15vw,3rem); line-height: 1.45; }
.anniversary-2026 dl { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(32px,4vw,70px); margin: 0; }
.anniversary-2026 dl div { padding: 16px 0 4px; border-top: 1px solid var(--line); }
.anniversary-2026 dt { font-size: 1.55rem; font-weight: 700; }
.anniversary-2026 dd { margin: 10px 0 0; font-size: 1.04rem; }
.anniversary-2026 dd strong { margin-bottom: 3px; font-size: 1.22rem; }
.anniversary-2026 dd strong, .anniversary-2026 dd span { display: block; }
.anniversary-2026 > p { grid-column: 2; margin: 0; padding-top: 18px; border-top: 1px solid var(--line); font-size: .9rem; }
.nabe-section { padding: clamp(100px,11vw,160px) 0; color: var(--ink); background: var(--paper); }
.nabe-heading { display: flex; justify-content: space-between; align-items: end; gap: 40px; margin-bottom: 60px; }
.reservation-condition { display: flex; gap: 10px; }
.reservation-condition strong { padding: 11px 18px; color: #fff; background: var(--green); font-size: .92rem; }
.nabe-slider .slider-slide { position: relative; aspect-ratio: 16 / 8; }
.nabe-slider figcaption { position: absolute; right: 0; bottom: 0; padding: 12px 24px; color: #fff; background: rgba(14,37,28,.9); font-weight: 700; }
.nabe-slider .slider-dots { justify-content: center; }
.nabe-slider .slider-arrow { position: absolute; z-index: 3; top: calc(50% - 28px); width: 56px; height: 56px; color: var(--green); background: rgba(251,249,244,.92); border-color: rgba(23,61,48,.55); font-size: 1.35rem; }
.nabe-slider .slider-arrow.prev { left: 12px; }
.nabe-slider .slider-arrow.next { right: 12px; }
.nabe-slider .slider-arrow:hover, .nabe-slider .slider-arrow:focus-visible { color: #fff; background: var(--green); }
.nabe-menu { margin-top: 75px; }
.nabe-menu article { display: grid; grid-template-columns: 1fr auto; gap: 8px 45px; padding: 30px 0; border-top: 1px solid var(--line); }
.nabe-menu article:last-child { border-bottom: 1px solid var(--line); }
.nabe-menu h3, .nabe-menu p { margin: 0; }
.nabe-menu h3 { font-size: 1.35rem; }
.nabe-menu article > p:last-child { grid-column: 1 / -1; }
.menu-price { min-width: 10.5em; font-size: 1.25rem; font-weight: 700; font-variant-numeric: tabular-nums; text-align: left; white-space: nowrap; }
.season-label { display: inline-block; margin-top: 5px !important; padding: 2px 9px; color: #fff; background: var(--green); font-size: .78rem; }
.alacarte-section { padding: clamp(100px,11vw,155px) 0; }
.alacarte-list { display: grid; grid-template-columns: 1fr 1fr; column-gap: 7vw; margin: 0; }
.alacarte-list div, .donabe-block dl div { display: grid; grid-template-columns: 1fr auto; gap: 18px; padding: 17px 0; border-bottom: 1px solid rgba(255,255,255,.22); }
.alacarte-list dd, .donabe-block dd { margin: 0; white-space: nowrap; }
.donabe-block { margin-top: 80px; padding: 45px 5vw; color: var(--ink); background: var(--paper); }
.donabe-block h3 { margin: 0; font-size: 1.8rem; }
.donabe-block > p { margin: 8px 0 24px; }
.donabe-block dl { margin: 0; }
.dinner-page .reservation { background: #214d3b; }

/* ACCESS */
.access-main { padding-top: 70px; }
.shop-info { padding: 100px 0 125px; }
.access-title { margin-bottom: 65px; }
.access-title::after { content: ""; display: block; width: 72px; height: 1px; margin-top: 28px; background: var(--gold); }
.shop-info-grid { display: grid; grid-template-columns: 1.1fr .9fr; gap: 8vw; }
.usage-info { padding: 40px; background: var(--paper); }
.usage-info h2 { margin: 0 0 25px; font-size: 1.65rem; }
.usage-info dl { margin: 0; }
.usage-info dl div { display: grid; grid-template-columns: 7em 1fr; gap: 14px; padding: 14px 0; border-bottom: 1px solid var(--line); }
.usage-info dt { font-weight: 700; }
.usage-info dd { margin: 0; }
.access-section { padding: 110px 0 140px; background: var(--paper); }
.access-lead { max-width: 760px; margin-bottom: 55px; }
.access-lead p { margin-bottom: 8px; }
.alley-placeholder { min-height: 520px; display: grid; place-items: center; margin-bottom: 65px; color: #fff; text-align: center; background: linear-gradient(rgba(14,37,28,.88),rgba(14,37,28,.88)), repeating-linear-gradient(90deg,#315344 0 1px,transparent 1px 80px); border: 1px solid rgba(255,255,255,.2); }
.alley-placeholder span { font-size: 1.35rem; letter-spacing: .15em; }
.alley-placeholder small { font-size: .75rem; }
.map-embed { width: 100%; height: 520px; overflow: hidden; background: var(--green); }
.map-embed iframe { display: block; width: 100%; height: 100%; border: 0; }

/* 控えめな表示演出 */
.reveal-title, .reveal-text, .reveal-photo { opacity: 0; transition: opacity .85s ease, transform 1s cubic-bezier(.2,.7,.2,1), clip-path 1.2s cubic-bezier(.2,.7,.2,1); }
.reveal-title { transform: translateY(24px); }
.reveal-text { transform: translateY(18px); transition-delay: .1s; }
.reveal-photo { transform: scale(1.01); clip-path: inset(0 0 12% 0); transition-delay: .16s; }
.is-visible { opacity: 1; transform: none; clip-path: inset(0); }
@keyframes hero-in { from { opacity: .25; scale: 1.09; } to { opacity: 1; scale: 1.035; } }
@keyframes scroll-line { 0%,100% { transform: scaleY(.25); transform-origin: top; } 50% { transform: scaleY(1); transform-origin: top; } }

@media (max-width: 920px) {
  body { font-size: 16px; padding-bottom: 68px; }
  .container { width: min(100% - 36px,680px); }
  .site-header, .site-header.is-scrolled, .site-header.header-solid { height: 68px; }
  .header-inner { padding: 0 18px; }
  .logo { font-size: 1.18rem; }
  .logo small { display: none; }
  .menu-button { position: relative; z-index: 2; display: block; }
  .global-nav { display: none; }
  .hero-content { width: calc(100% - 42px); }
  .hero-media::after { background: linear-gradient(0deg,rgba(248,244,235,.8) 0%,rgba(248,244,235,.5) 60%,rgba(248,244,235,.1) 100%); }
  .hero h1 { font-size: clamp(2rem,8.6vw,3.25rem); line-height: 1.5; letter-spacing: .055em; }
  .hero-line { white-space: normal; }
  .about-grid, .season-heading, .news-grid, .info-teaser-grid, .lead-grid, .shop-info-grid, .kaiseki-heading, .monthly-style-heading { grid-template-columns: minmax(0,1fr); }
  .lead-grid { gap: 34px; align-items: stretch; }
  .lead-grid > .reveal-text { max-width: none; }
  .about-copy h2, .interior-copy h2 { font-size: clamp(2rem,8vw,2.7rem); }
  .about-photo { aspect-ratio: 16 / 9; margin-top: 38px; }
  .about-photo img { object-fit: cover; object-position: center 46%; }
  .season-heading { gap: 24px; margin-bottom: 38px; }
  .season-photo { width: 100%; aspect-ratio: 4 / 3; }
  .news-grid { gap: 38px; }
  .news-item a { grid-template-columns: 7em 1fr; gap: 8px 14px; }
  .news-item h3 { grid-column: 1 / -1; }
  .news-item a.has-news-image { grid-template-columns: 88px 1fr; }
  .news-item a.has-news-image .news-image { width: 88px; grid-row: 1 / 3; }
  .news-item a.has-news-image h3 { grid-column: 1 / -1; }
  .home-meals { display: block; }
  .meal-panel { min-height: 58svh; }
  .meal-panel::after { background: linear-gradient(0deg,rgba(248,244,235,.95) 0%,rgba(248,244,235,.8) 48%,rgba(248,244,235,.14) 82%,rgba(248,244,235,.03) 100%); }
  .meal-panel-content { padding: 36px 24px 52px; }
  .interior-flow { grid-template-columns: 1fr; }
  .interior-photo { min-height: 82vw; }
  .interior-copy { padding: 52px 24px 60px; }
  .info-teaser-grid { gap: 45px; }
  .info-row { grid-template-columns: 6.4em 1fr; gap: 12px; }
  .footer-inner { grid-template-columns: 1fr; gap: 40px; }
  .footer-nav { display: grid; grid-template-columns: 1fr 1fr; }
  .floating-actions { left: 8px; right: 8px; bottom: max(7px, env(safe-area-inset-bottom)); display: grid; grid-template-columns: minmax(0,.9fr) minmax(0,1.1fr); gap: 5px; }
  .floating-action { min-width: 0; min-height: 46px; padding: 6px 8px; gap: 7px; box-shadow: 0 3px 10px rgba(0,0,0,.1); font-size: .85rem; }
  .floating-instagram { min-height: 46px; }
  .floating-instagram svg { width: 19px; height: 19px; }
  .floating-call span { display: none; }
  .site-footer { padding-bottom: calc(112px + env(safe-area-inset-bottom)); }
  .page-hero { min-height: 62svh; }
  .page-hero::after, .dinner-hero::after { background: linear-gradient(0deg,rgba(248,244,235,.82) 0%,rgba(248,244,235,.52) 62%,rgba(248,244,235,.1) 100%); }
  .page-hero-content { width: calc(100% - 36px); padding-bottom: 40px; }
  .page-hero h1 { font-size: clamp(2.5rem,11vw,4rem); }
  .course-slider { padding-inline: 0; }
  .course-slider .slider-arrow { top: 70%; width: 52px; height: 52px; }
  .course-slider .slider-arrow.prev { left: 6px; }
  .course-slider .slider-arrow.next { right: 6px; }
  .hero-hours { flex-direction: column; gap: 5px; }
  .hero-hours div { justify-content: space-between; max-width: 310px; }
  .course-slide { grid-template-columns: minmax(0,1fr); grid-template-rows: auto auto; align-content: start; gap: 24px; }
  .course-copy { padding: 8px 5px 0; }
  .course-slide figure { grid-row: 2; aspect-ratio: 4 / 3; }
  .monthly-style-heading { gap: 26px; margin-bottom: 60px; }
  .monthly-style-heading .phrase { white-space: nowrap; }
  .style-flow { grid-template-columns: 1fr; gap: 58px; }
  .style-item { display: flex; }
  .style-item figure { aspect-ratio: 4 / 3; }
  .style-number, .style-item-reverse .style-number { top: 12px; right: auto; left: 14px; }
  .style-item:not(:last-child)::after { content: "↓"; top: auto; right: 50%; bottom: -45px; translate: 50% 0; }
  .style-repeat { flex-direction: column; gap: 10px; margin-top: 65px; }
  .style-repeat i { transform: rotate(90deg); }
  .slider-controls { margin-top: 20px; }
  .dinner-index { top: 68px; }
  .dinner-index a { min-height: 56px; font-size: .9rem; letter-spacing: .04em; }
  .anchor-section { scroll-margin-top: 135px; }
  .kaiseki-heading { gap: 28px; }
  .kaiseki-main-photo { width: 100%; aspect-ratio: 4 / 3; }
  .kaiseki-courses { grid-template-columns: 1fr; margin-top: 55px; }
  .kaiseki-course, .kaiseki-course-b { padding: 36px 4px; border-left: 0; }
  .anniversary-2026 { grid-template-columns: 1fr; gap: 28px; margin-top: 65px; padding: 38px 24px; }
  .anniversary-2026 dl { grid-template-columns: 1fr; gap: 15px; }
  .anniversary-2026 > p { grid-column: 1; }
  .nabe-heading { display: block; }
  .reservation-condition { margin-top: 25px; flex-wrap: wrap; }
  .nabe-slider .slider-slide { aspect-ratio: 4 / 3; }
  .nabe-slider .slider-arrow { top: calc(50% - 26px); width: 52px; height: 52px; }
  .nabe-slider .slider-arrow.prev { left: 6px; }
  .nabe-slider .slider-arrow.next { right: 6px; }
  .nabe-menu article { grid-template-columns: 1fr; gap: 5px; }
  .nabe-menu article > p:last-child { grid-column: auto; }
  .nabe-menu .menu-price { min-width: 0; }
  .alacarte-list { grid-template-columns: 1fr; }
  .donabe-block { padding: 34px 22px; }
  .usage-info { padding: 30px 22px; }
  .alley-placeholder { min-height: 360px; }
  .map-embed { height: 420px; }
  .about-section, .season-section, .info-teaser { padding-block: 72px; }
  .reservation { padding: 72px 20px; }
  .lunch-courses, .nabe-section, .alacarte-section { padding-block: 76px; }
  .kaiseki-section { padding-block: 68px; }
  .shop-info { padding: 78px 0 92px; }
  .access-section { padding: 80px 0 100px; }
  .reservation h2 { font-size: clamp(1.75rem,8vw,2.5rem); letter-spacing: .04em; }
  .reservation h2 .text-unit + .text-unit { margin-left: 0; }
  .reservation-tel { font-size: clamp(2rem,10vw,3rem); white-space: nowrap; }
  .reveal-title { transform: translateY(16px); }
  .reveal-text { transform: translateY(12px); }
  .reveal-photo { transform: none; clip-path: inset(0 0 8% 0); }
  .reveal-photo.is-visible { clip-path: inset(0); }
}

/* スマホ共通：和文の折り返しと列の最小幅を統一。PCの指定には触れない。 */
@media (max-width: 920px) {
  html { scroll-padding-top: 78px; scroll-padding-bottom: calc(80px + env(safe-area-inset-bottom)); }
  main h1, main h2, main h3, dt, dd { word-break: normal; overflow-wrap: break-word; }
  .phrase, .text-unit, .keep { max-width: 100%; white-space: normal; }
  .container > *, .lead-grid > *, .shop-info-grid > *, .info-teaser-grid > *, .course-copy,
  .info-row > *, .usage-info dl div > *, .footer-hours > * { min-width: 0; max-width: 100%; }
  .section-title { font-size: clamp(1.85rem,7.8vw,2.7rem); }
  .display-title { font-size: clamp(2.6rem,10vw,3.5rem); }
  .hero h1 { font-size: clamp(1.8rem,8.2vw,3.25rem); }
  .page-hero h1 { font-size: clamp(1.9rem,8.5vw,3.5rem); letter-spacing: .04em; }
  .page-lead .section-title, .monthly-style-heading .section-title { font-size: clamp(1.8rem,7.8vw,2.7rem); letter-spacing: .045em; }
  .page-lead .phrase, .monthly-style-heading .phrase { white-space: nowrap; }
  .hero-hours div { flex-wrap: wrap; column-gap: 12px; row-gap: 0; }
  .course-copy { align-self: start; }
  .course-copy h3 { font-size: clamp(2.4rem,10vw,3.5rem); line-height: 1.3; letter-spacing: .07em; }
  .course-copy .large-price { margin: 10px 0 16px; font-size: clamp(1.9rem,7.8vw,2.6rem); white-space: nowrap; }
  .course-copy > p:last-child { margin-bottom: 0; }
  .course-title-line { align-items: flex-end; }
  .course-title-line h3 { font-size: 4rem; }
  .course-title-line .large-price { font-size: clamp(1.4rem,6.4vw,2rem); }
  .anniversary-2026 h3 { font-size: clamp(1.8rem,7vw,2.5rem); }
  .anniversary-2026 h3 .mobile-line, .access-title .mobile-line { display: block; }
  .anniversary-2026 .limited-label { line-height: 1.6; }
  .nabe-menu .dish-unit { display: inline-block; white-space: nowrap; }
  .alacarte-list div, .donabe-block dl div { grid-template-columns: minmax(0,1fr); gap: 3px; }
  .alacarte-list dd, .donabe-block dd { font-size: 1rem; white-space: nowrap; }
  .access-main .info-table, .access-main .info-row, .access-main .info-row dt, .access-main .info-row dd { width: 100%; max-width: 100%; min-width: 0; }
  .access-main .info-row { display: block; padding-block: 16px; }
  .access-main .info-row dt { margin-bottom: 5px; }
  .access-main .info-row dd { overflow-wrap: break-word; word-break: normal; }
  .access-main .info-row .keep { display: inline; white-space: normal; }
  .access-main .access-lead, .access-main .access-lead p { width: 100%; max-width: 100%; }
  .access-main .access-lead .keep { display: inline; white-space: normal; overflow-wrap: break-word; word-break: normal; }
  .course-copy .mobile-word, .access-main .access-lead .keep.mobile-word, .usage-info .mobile-word { display: inline-block; white-space: nowrap; }
  .usage-info { width: calc(100% - 24px); margin-inline: auto; padding: 24px 18px; }
  .usage-info h2 { margin-bottom: 16px; font-size: 1.4rem; }
  .usage-heading-unit { display: inline-block; white-space: nowrap; }
  .usage-info dl div { grid-template-columns: 5em minmax(0,1fr); gap: 10px; padding: 11px 0; }
  .usage-info dd { min-width: 0; line-height: 1.65; }
  .donabe-block > p { font-size: .95rem; line-height: 1.75; letter-spacing: 0; overflow-wrap: normal; word-break: normal; }
  .donabe-block > p .keep { white-space: nowrap; }
  .info-teaser .info-table, .info-teaser .info-row, .info-teaser .info-row dt, .info-teaser .info-row dd { width: 100%; max-width: 100%; min-width: 0; }
  .info-teaser .info-row { grid-template-columns: 5em minmax(0,1fr); gap: 10px; }
  .info-teaser .info-row dd { overflow-wrap: break-word; word-break: normal; }
  .info-teaser .info-row .keep { white-space: normal; }
  .info-teaser .info-row .wrap-mobile { display: inline; }
  .footer-hours { grid-template-columns: 5em minmax(0,1fr); }
}

@media (max-width: 340px) {
  .info-teaser .info-row { display: block; }
  .info-teaser .info-row dt { margin-bottom: 5px; }
  .usage-info dl div { grid-template-columns: minmax(0,1fr); gap: 3px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  .reveal-title, .reveal-text, .reveal-photo { opacity: 1; transform: none; clip-path: none; }
  .slider-toggle { display: none; }
}
