:root {
  --color-base: #fbf9f4;
  --color-text: #282724;
  --color-accent: #718066;
  --color-section: #ded2c2;
  --color-muted: #656057;
  --color-line: rgba(40, 39, 36, .14);
  --color-dark: #262724;
  --color-canvas: #f3efe8;
  --color-paper: #fbf9f4;
  --color-sand: #ded2c2;
  --color-hairline: rgba(40, 39, 36, .14);
  --font-serif: "Shippori Mincho", "Yu Mincho", "Hiragino Mincho ProN", serif;
  --font-sans: "Noto Sans JP", "Hiragino Kaku Gothic ProN", sans-serif;
  --font-en: "Cormorant Garamond", Georgia, serif;
  --content-width: 1296px;
  --side-space: clamp(1.75rem, 6vw, 5.5rem);
  --space-section-lg: clamp(8rem, 15vw, 13rem);
  --space-section-sm: clamp(5rem, 9vw, 8rem);
  --shadow-editorial: 0 50px 100px -65px rgba(31, 28, 24, .55);
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; min-width: 320px; background: var(--color-canvas); color: var(--color-text); font-family: var(--font-sans); font-weight: 300; -webkit-font-smoothing: antialiased; }
body::before { content: ""; position: fixed; inset: 0; z-index: 150; opacity: .022; background-image: repeating-radial-gradient(circle at 30% 20%, #282724 0 .45px, transparent .55px 3px); background-size: 5px 5px; pointer-events: none; }
body.menu-open { overflow-y: hidden; }
body, a, button { -webkit-tap-highlight-color: transparent; }
a { color: inherit; text-decoration: none; }
img, video, svg { display: block; max-width: 100%; }
h1, h2, h3, p, dl, dd { margin-top: 0; }
::selection { background: var(--color-accent); color: var(--color-base); }
:focus-visible { outline: 3px solid var(--color-accent); outline-offset: 4px; }
.skip-link { position: fixed; top: 1rem; left: 1rem; z-index: 200; padding: .75rem 1rem; background: var(--color-base); transform: translateY(-200%); }
.skip-link:focus { transform: none; }
.mobile-only { display: none; }

.site-header { position: fixed; top: 0; left: 50%; z-index: 30; display: flex; width: min(100%, 1440px); align-items: center; justify-content: space-between; padding: 2.1rem var(--side-space); color: var(--color-base); transform: translateX(-50%); transition: padding .45s ease, color .45s ease, background-color .45s ease, backdrop-filter .45s ease, border-color .45s ease; }
.site-header.is-scrolled { padding-top: 1rem; padding-bottom: 1rem; border-bottom: 1px solid var(--color-hairline); background: rgba(251, 249, 244, .82); color: var(--color-text); -webkit-backdrop-filter: blur(16px); backdrop-filter: blur(16px); }
.site-logo { display: inline-flex; align-items: center; gap: .7rem; font-family: var(--font-serif); font-size: 1.38rem; letter-spacing: .2em; white-space: nowrap; }
.site-logo__mark { position: relative; width: 1.9rem; height: 1.9rem; flex: 0 0 auto; }
.site-logo__mark img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; transition: opacity .45s ease; }
.site-logo__mark-dark { opacity: 0; }
.site-header.is-scrolled .site-logo__mark-light { opacity: 0; }
.site-header.is-scrolled .site-logo__mark-dark { opacity: 1; }

.menu-panel { position: fixed; inset: 0 76px 0 0; z-index: 80; visibility: hidden; background: rgba(38,39,36,.35); opacity: 0; transition: visibility 0s linear .65s, opacity .35s ease; }
.menu-panel.is-open { visibility: visible; opacity: 1; transition-delay: 0s; }
.menu-panel__inner { height: 100%; margin-left: auto; overflow-y: auto; box-shadow: -40px 0 100px rgba(23,24,21,.18); transform: translateX(100%); transition: transform .7s cubic-bezier(.75,0,.18,1); }
.menu-panel__inner--navigation { width: 62%; min-width: 620px; background: var(--color-paper); }
.menu-panel__inner--reservation { width: 38%; min-width: 380px; background: var(--color-accent); }
.menu-panel.is-open .menu-panel__inner { transform: none; }
.menu-panel__main { display: flex; min-width: 0; height: 100%; flex-direction: column; padding: clamp(2.5rem, 6vh, 5rem) clamp(3rem, 6vw, 7rem) 2.5rem; }
.menu-panel__heading { display: flex; justify-content: space-between; gap: 2rem; padding-bottom: 1.4rem; border-bottom: 1px solid var(--color-hairline); color: var(--color-muted); }
.menu-panel__heading p { margin: 0; font-family: var(--font-en); font-size: .82rem; font-style: italic; letter-spacing: .14em; }
.menu-panel__heading span { font-size: .58rem; letter-spacing: .15em; }
.menu-panel__nav { margin: auto 0; }
.menu-panel__nav a { display: grid; grid-template-columns: 2.5rem 1fr auto; gap: clamp(1rem, 2.5vw, 2.5rem); align-items: center; padding: clamp(.7rem, 1.4vh, 1.25rem) 0; border-bottom: 1px solid var(--color-hairline); transition: padding-left .4s ease, color .3s ease; }
.menu-panel__nav a:first-child { border-top: 1px solid var(--color-hairline); }
.menu-panel__number { color: var(--color-accent); font-family: var(--font-en); font-size: .62rem; letter-spacing: .16em; }
.menu-panel__name { display: flex; align-items: baseline; gap: 1rem; font-family: var(--font-en); font-size: clamp(2.1rem, 4.2vw, 4.5rem); font-weight: 300; letter-spacing: .01em; line-height: 1; }
.menu-panel__name small { color: var(--color-muted); font-family: var(--font-sans); font-size: .62rem; font-weight: 300; letter-spacing: .1em; }
.menu-panel__nav i { width: 2rem; height: 2rem; border: 1px solid var(--color-hairline); border-radius: 50%; font-family: var(--font-en); font-size: .8rem; font-style: normal; line-height: 1.8rem; text-align: center; transition: background-color .3s ease, color .3s ease, transform .4s ease; }
.menu-panel__nav a:hover { padding-left: .7rem; color: var(--color-accent); }
.menu-panel__nav a:hover i { background: var(--color-accent); color: var(--color-base); transform: rotate(45deg); }
.menu-panel__social { display: flex; justify-content: space-between; align-items: end; gap: 2rem; padding-top: 1.5rem; color: var(--color-muted); font-family: var(--font-en); font-size: .7rem; letter-spacing: .12em; }
.menu-panel__social p { margin: 0; font-size: .56rem; }
.menu-panel__social a { padding-bottom: .2rem; border-bottom: 1px solid var(--color-accent); }
.menu-panel__actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: 1.3rem; border: 1px solid var(--color-hairline); }
.menu-panel__actions > * { display: flex; min-height: 3.5rem; align-items: center; justify-content: space-between; padding: 0 1.2rem; border: 0; background: transparent; color: inherit; font: inherit; font-size: .72rem; letter-spacing: .12em; cursor: pointer; transition: background-color .3s ease, color .3s ease; }
.menu-panel__actions > * + * { border-left: 1px solid var(--color-hairline); }
.menu-panel__actions button { background: var(--color-accent); color: var(--color-base); }
.menu-panel__actions > *:hover { background: var(--color-dark); color: var(--color-base); }
.menu-panel__actions i { font-style: normal; }
.menu-panel__reserve { position: relative; display: flex; min-height: 100%; flex-direction: column; padding: clamp(2rem, 4vh, 3.5rem) clamp(1.6rem, 3vw, 3.2rem); overflow: hidden; background: var(--color-accent); color: var(--color-base); }
.panel-close { position: absolute; top: 1.5rem; right: 1.5rem; z-index: 4; width: 2.6rem; height: 2.6rem; border: 1px solid rgba(251,249,244,.3); border-radius: 50%; background: transparent; color: var(--color-base); cursor: pointer; transition: background-color .3s ease, transform .35s ease; }
.panel-close:hover { background: rgba(251,249,244,.12); transform: rotate(90deg); }
.panel-close span { position: absolute; top: 50%; left: 50%; width: 1rem; height: 1px; background: currentColor; }
.panel-close span:first-child { transform: translate(-50%,-50%) rotate(45deg); }
.panel-close span:last-child { transform: translate(-50%,-50%) rotate(-45deg); }
.menu-panel__reserve::after { content: "V"; position: absolute; right: -1rem; bottom: -4rem; color: rgba(251,249,244,.055); font-family: var(--font-en); font-size: clamp(18rem, 31vw, 33rem); line-height: .75; pointer-events: none; }
.menu-panel__reserve-label { margin: 0; font-family: var(--font-en); font-size: .82rem; font-style: italic; letter-spacing: .18em; }
.menu-panel__reserve-copy { position: relative; z-index: 1; margin: clamp(2rem, 5vh, 4rem) 0 1.8rem; }
.menu-panel__reserve-copy > p { margin-bottom: .8rem; font-size: .62rem; letter-spacing: .18em; }
.menu-panel__reserve-copy h2 { margin: 0 0 .8rem; font-family: var(--font-serif); font-size: clamp(1.3rem, 2vw, 1.85rem); font-weight: 400; letter-spacing: .08em; line-height: 1.7; }
.menu-panel__reserve-copy > span { font-size: .7rem; letter-spacing: .08em; line-height: 2; opacity: .72; }
.reservation-options { position: relative; z-index: 1; display: grid; gap: .65rem; }
.reservation-option { display: flex; min-height: 3.75rem; align-items: center; justify-content: space-between; padding: .7rem 1rem; border: 1px solid rgba(251,249,244,.4); transition: background-color .3s ease, color .3s ease; }
.reservation-option:hover { background: var(--color-base); color: var(--color-accent); }
.reservation-option span { display: grid; gap: .15rem; }
.reservation-option small, .reservation-apps > p, .reservation-line p { font-family: var(--font-en); font-size: .57rem; font-weight: 300; letter-spacing: .14em; }
.reservation-option strong { font-size: .72rem; font-weight: 400; letter-spacing: .08em; }
.reservation-option i { font-family: var(--font-en); font-size: 1rem; font-style: normal; }
.reservation-apps { padding: .75rem 0; border-top: 1px solid rgba(251,249,244,.2); border-bottom: 1px solid rgba(251,249,244,.2); }
.reservation-apps > p, .reservation-line p { margin: 0 0 .5rem; }
.reservation-apps > div { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem; }
.reservation-apps a { display: flex; min-width: 0; align-items: center; gap: .55rem; padding: .5rem .65rem; border-radius: .35rem; background: #111; color: #fff; }
.reservation-apps svg { width: 1.35rem; height: 1.35rem; flex: 0 0 auto; fill: currentColor; }
.reservation-apps a span { display: grid; min-width: 0; line-height: 1.05; }
.reservation-apps a small { font-size: .43rem; letter-spacing: .02em; }
.reservation-apps a strong { overflow: hidden; font-family: var(--font-sans); font-size: .66rem; font-weight: 400; text-overflow: ellipsis; white-space: nowrap; }
.reservation-line { display: grid; grid-template-columns: 4.2rem 1fr; gap: .9rem; align-items: center; padding: .65rem; background: rgba(251,249,244,.1); }
.reservation-line__qr { display: grid; width: 4.2rem; aspect-ratio: 1; place-content: center; border: 4px solid var(--color-base); background: repeating-conic-gradient(#263226 0 25%, var(--color-base) 0 50%) 0 / 12px 12px; color: var(--color-dark); text-align: center; }
.reservation-line__qr span, .reservation-line__qr small { padding: .08rem .2rem; background: var(--color-base); }
.reservation-line__qr span { font-family: var(--font-en); font-size: .8rem; }
.reservation-line__qr small { font-size: .42rem; white-space: nowrap; }
.reservation-line > div:last-child > a { display: inline-flex; align-items: center; gap: .45rem; padding: .48rem .75rem; border-radius: .25rem; background: #06c755; color: #fff; font-size: .68rem; font-weight: 500; letter-spacing: .04em; }
.reservation-line svg { width: 1.25rem; height: 1.25rem; fill: currentColor; }
.reservation-option .reservation-option__content { display: flex; min-width: 0; align-items: center; gap: .75rem; }
.reservation-option__content > span { min-width: 0; }
.hotpepper-icon { width: 2.15rem; height: 2.15rem; flex: 0 0 auto; border-radius: .45rem; box-shadow: 0 3px 10px rgba(40,39,36,.14); }
.reservation-option--hotpepper strong { font-size: .65rem; }
.reservation-more { border-top: 1px solid rgba(251,249,244,.25); border-bottom: 1px solid rgba(251,249,244,.25); }
.reservation-more summary { display: flex; min-height: 3.25rem; align-items: center; justify-content: space-between; font-size: .68rem; letter-spacing: .1em; cursor: pointer; list-style: none; }
.reservation-more summary::-webkit-details-marker { display: none; }
.reservation-more summary i { font-size: 1rem; font-style: normal; transition: transform .35s ease; }
.reservation-more[open] summary i { transform: rotate(45deg); }
.reservation-more .reservation-option { margin-bottom: .65rem; }
.menu-panel__tel { position: relative; z-index: 1; display: flex; justify-content: space-between; align-items: baseline; margin-top: 1.5rem; }
.menu-panel__tel small { font-family: var(--font-en); font-size: .62rem; letter-spacing: .16em; opacity: .68; }
.menu-panel__tel span { font-family: var(--font-en); font-size: 1.2rem; letter-spacing: .08em; }
.menu-panel__hours { position: relative; z-index: 1; display: flex; gap: 2rem; margin: 1.3rem 0 0; padding-top: 1rem; border-top: 1px solid rgba(251,249,244,.22); }
.menu-panel__hours div { flex: 1; }
.menu-panel__hours dt { margin-bottom: .45rem; font-family: var(--font-en); font-size: .56rem; letter-spacing: .18em; opacity: .62; }
.menu-panel__hours dd { margin: 0; font-size: .67rem; letter-spacing: .06em; }

main, .site-footer { max-width: 1440px; margin-inline: auto; }
.hero { position: relative; min-height: 720px; height: 100svh; overflow: hidden; background: #8f8a80; color: var(--color-base); }
.hero-media, .hero-media video { position: absolute; inset: 0; width: 100%; height: 100%; }
.hero-media video { object-fit: cover; }
.hero-overlay { position: absolute; inset: 0; background: linear-gradient(115deg, rgba(28,29,26,.5) 0%, rgba(28,29,26,.12) 52%, rgba(28,29,26,.3) 100%), linear-gradient(180deg, rgba(28,29,26,.2), transparent 38%, rgba(28,29,26,.48)); }
.hero-copy { position: absolute; bottom: clamp(7rem, 14vh, 8.5rem); left: clamp(2rem, 10vw, 9rem); z-index: 2; max-width: 820px; }
.hero-eyebrow { margin-bottom: 1.35rem; font-family: var(--font-en); font-size: 1.2rem; font-style: italic; letter-spacing: .2em; }
.hero h1 { margin: 0; font-family: var(--font-serif); font-size: clamp(4.2rem, 7vw, 6.3rem); font-weight: 400; letter-spacing: .08em; line-height: 1.02; text-shadow: 0 2px 25px rgba(22,22,20,.18); }
.hero-tagline { margin: 1.8rem 0 0; font-family: var(--font-serif); font-size: 1.22rem; letter-spacing: .17em; line-height: 2; }
.hero-signature { margin: 2.2rem 0 0; color: rgba(251,249,244,.62); font-family: var(--font-en); font-size: .72rem; font-style: italic; letter-spacing: .18em; }
.hero-edition { position: absolute; right: var(--side-space); bottom: 2.4rem; z-index: 2; display: flex; gap: 1.5rem; margin: 0; color: rgba(251,249,244,.72); font-family: var(--font-en); font-size: .68rem; letter-spacing: .2em; writing-mode: vertical-rl; }
.scroll-guide { position: absolute; bottom: 2.4rem; left: 50%; z-index: 3; display: flex; flex-direction: column; align-items: center; gap: .75rem; transform: translateX(-50%); font-family: var(--font-en); font-size: .72rem; letter-spacing: .3em; }
.scroll-scissors { width: 2.45rem; height: 4.2rem; overflow: visible; color: rgba(255,253,247,.95); fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.65; filter: drop-shadow(0 2px 5px rgba(10,11,9,.24)); animation: scissors-float 3.2s ease-in-out infinite; }
.scroll-scissors__half { transform-box: view-box; transform-origin: 24px 25.6px; }
.scroll-scissors__half--left { animation: scissors-left 1.8s cubic-bezier(.7,0,.25,1) infinite; }
.scroll-scissors__half--right { animation: scissors-right 1.8s cubic-bezier(.7,0,.25,1) infinite; }
.scroll-scissors__blade { fill: rgba(255,253,247,.22); stroke-width: 1.05; }
.scroll-scissors__arm { stroke-width: 1.55; }
.scroll-scissors__finger-rest { stroke-width: 1.2; }
.scroll-scissors__pivot { fill: #fffdf7; stroke: rgba(255,255,255,.92); stroke-width: .7; }
.scroll-scissors__pivot-detail { fill: #7b776f; stroke: none; }
@keyframes scissors-left { 0%, 38%, 62%, 100% { transform: rotate(-4deg); } 22%, 50% { transform: rotate(2deg); } }
@keyframes scissors-right { 0%, 38%, 62%, 100% { transform: rotate(4deg); } 22%, 50% { transform: rotate(-2deg); } }
@keyframes scissors-float { 50% { opacity: .82; transform: translateY(.22rem); } }

.media-placeholder { position: relative; overflow: hidden; background-color: #d8cdbd; background-image: linear-gradient(135deg, rgba(250,247,242,.18) 25%, transparent 25%), linear-gradient(315deg, rgba(250,247,242,.14) 25%, transparent 25%); background-size: 42px 42px; }
.media-placeholder::after { content: ""; position: absolute; inset: 1rem; border: 1px solid rgba(58,55,50,.15); pointer-events: none; }
.media-placeholder__label { position: absolute; inset: 50% auto auto 50%; z-index: 1; margin: 0; color: rgba(58,55,50,.64); font-family: var(--font-en); font-size: 1rem; letter-spacing: .18em; line-height: 1.4; text-align: center; transform: translate(-50%,-50%); white-space: nowrap; }
.media-placeholder__label span { font-family: var(--font-sans); font-size: .64rem; letter-spacing: .08em; }
.hero .media-placeholder__label { color: rgba(250,247,242,.72); }
.media-loaded .media-placeholder__label, .media-loaded::after { display: none; }

.section { padding: var(--space-section-lg) var(--side-space); background: var(--color-base); }
.section-label { margin-bottom: 1rem; color: #938b7d; font-family: var(--font-en); font-size: 1rem; letter-spacing: .34em; }
.section-kicker { display: flex; align-items: center; gap: 1.25rem; }
.section-kicker .section-label { margin: 0; }
.section-index { display: inline-flex; align-items: center; gap: .75rem; color: var(--color-accent); font-family: var(--font-en); font-size: .74rem; letter-spacing: .18em; }
.section-index::after { content: ""; width: 3.5rem; height: 1px; background: var(--color-accent); opacity: .65; }
.section-heading { margin-bottom: 5rem; }
.section-heading--center { text-align: center; }
.section-heading h2, .style-intro h2 { margin-bottom: 0; font-family: var(--font-serif); font-size: clamp(1.7rem, 3vw, 2.5rem); font-weight: 400; letter-spacing: .12em; }

.concept { position: relative; z-index: 4; display: grid; grid-template-columns: minmax(0, 1.18fr) minmax(300px, .72fr); gap: clamp(4rem, 9vw, 8rem); align-items: center; margin-top: -1px; padding-top: clamp(9rem, 17vw, 15rem); padding-bottom: clamp(11rem, 17vw, 15rem); }
.concept-copy { position: relative; }
.concept-side-note { position: absolute; top: 0; left: -2.3rem; margin: 0; color: rgba(113,128,102,.58); font-family: var(--font-en); font-size: .58rem; letter-spacing: .2em; transform: rotate(180deg); writing-mode: vertical-rl; }
.concept::before { content: ""; position: absolute; top: 0; left: var(--side-space); width: min(34vw, 440px); height: 1px; background: var(--color-hairline); }
.concept-title { margin: 3.6rem 0 0; font-family: var(--font-serif); font-size: clamp(2rem, 3.1vw, 2.9rem); font-weight: 400; letter-spacing: .075em; line-height: 1.95; }
.concept-title span { display: block; }
.concept-body { max-width: 610px; margin: 3rem 0 0; color: var(--color-muted); font-size: clamp(.91rem, 1vw, 1rem); letter-spacing: .045em; line-height: 2.5; }
.concept-media { position: relative; aspect-ratio: 4 / 5.6; margin-top: 0; overflow: hidden; outline: 1px solid rgba(113,128,102,.28); outline-offset: 1.25rem; box-shadow: var(--shadow-editorial); }
.concept-media img { width: 100%; height: 100%; object-fit: cover; object-position: center; }

.menu, .access { background: var(--color-section); }
.menu { position: relative; padding-top: clamp(8rem, 13vw, 11rem); padding-bottom: clamp(9rem, 14vw, 12rem); }
.menu::after { content: "MENU"; position: absolute; top: 3.5rem; right: var(--side-space); color: rgba(40,39,36,.035); font-family: var(--font-en); font-size: clamp(7rem, 17vw, 15rem); font-weight: 300; letter-spacing: -.03em; line-height: 1; pointer-events: none; }
.menu-heading { position: relative; z-index: 1; max-width: 1040px; margin: 0 auto 5.5rem; }
.menu-heading__title { display: grid; grid-template-columns: minmax(0, 1fr) minmax(260px, .55fr); gap: 4rem; align-items: end; margin-top: 3.5rem; }
.menu-heading__title h2 { font-size: clamp(2.4rem, 4vw, 3.7rem); line-height: 1.45; }
.menu-heading__title p { margin: 0; color: var(--color-muted); font-size: .85rem; letter-spacing: .05em; line-height: 2.1; }
.menu-list { position: relative; z-index: 1; max-width: 1040px; margin: auto; border-top: 1px solid var(--color-line); }
.menu-row { display: block; min-height: 0; padding: 0 .35rem; border-bottom: 1px solid var(--color-line); }
.menu-row summary { display: grid; grid-template-columns: 4.5rem minmax(0, 1fr) auto auto 2rem; gap: 2rem; align-items: center; min-height: 8.5rem; padding: 1.6rem 0; cursor: pointer; list-style: none; }
.menu-row summary::-webkit-details-marker { display: none; }
.menu-number { align-self: start; padding-top: .55rem; color: var(--color-accent); font-family: var(--font-en); font-size: .72rem; letter-spacing: .16em; }
.menu-row summary > div { display: grid; grid-template-columns: minmax(170px, .65fr) minmax(180px, 1fr); align-items: baseline; gap: 2rem; }
.menu-row h3, .price { margin: 0; font-family: var(--font-serif); font-weight: 400; }
.menu-row h3 { font-size: clamp(1.45rem, 2vw, 1.85rem); letter-spacing: .08em; }
.menu-row div p { margin: 0; color: var(--color-muted); font-size: .79rem; letter-spacing: .05em; }
.price { font-family: var(--font-en); font-size: clamp(1.8rem, 2.8vw, 2.6rem); letter-spacing: .025em; white-space: nowrap; }
.menu-time { color: var(--color-muted); font-family: var(--font-en); font-size: .68rem; letter-spacing: .1em; white-space: nowrap; }
.menu-row summary > i { width: 1.8rem; height: 1.8rem; border: 1px solid var(--color-line); border-radius: 50%; font-style: normal; line-height: 1.65rem; text-align: center; transition: transform .35s ease, background-color .3s ease, color .3s ease; }
.menu-row[open] summary > i { background: var(--color-accent); color: var(--color-base); transform: rotate(45deg); }
.menu-row__detail { margin: -1rem 2rem 0 6.5rem; padding: 0 0 2rem; color: var(--color-muted); font-size: .78rem; letter-spacing: .05em; line-height: 2; }
.menu-note { margin: 1.6rem 0 0; color: var(--color-muted); font-size: .7rem; letter-spacing: .05em; text-align: right; }

.style { display: grid; grid-template-columns: minmax(220px, .34fr) minmax(0, 1fr); gap: clamp(4rem, 8vw, 7rem); padding-top: clamp(9rem, 14vw, 12rem); padding-bottom: clamp(10rem, 15vw, 13rem); }
.style-intro { position: sticky; top: 9rem; align-self: start; }
.style-intro h2 { margin: 2.8rem 0 1.6rem; font-size: clamp(2.4rem, 4vw, 3.7rem); line-height: 1.45; }
.style-intro > p:not(.section-label) { color: var(--color-muted); font-size: .87rem; letter-spacing: .04em; line-height: 2.1; }
.text-link { display: inline-block; padding-bottom: .25rem; border-bottom: 1px solid var(--color-accent); color: var(--color-accent); font-size: .8rem; letter-spacing: .1em; }
.style-grid { position: relative; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); grid-auto-rows: clamp(95px, 10.5vw, 150px); gap: .75rem; }
.style-grid div { position: relative; overflow: hidden; background-color: #e5ddd1; background-image: linear-gradient(145deg, rgba(251,249,244,.32), transparent 45%), linear-gradient(135deg, transparent 49.6%, rgba(40,39,36,.055) 50%, transparent 50.4%); transition: filter .45s ease, transform .55s cubic-bezier(.2,.7,.2,1); }
.style-grid div:hover { z-index: 1; filter: brightness(.96); transform: scale(1.012); }
.style-grid div:nth-child(1) { grid-column: span 3; grid-row: span 2; background-color: #d8cdbf; }
.style-grid div:nth-child(2), .style-grid div:nth-child(3) { grid-column: span 3; }
.style-grid div:nth-child(n+4) { grid-column: span 2; }
.style-grid div:nth-child(5), .style-grid div:nth-child(8) { background-color: #ddd4c7; }
.style-grid span { position: absolute; right: .75rem; bottom: .65rem; color: rgba(40,39,36,.38); font-family: var(--font-en); font-size: .7rem; letter-spacing: .14em; }
.style-grid div p { position: absolute; top: .75rem; left: .75rem; margin: 0; color: rgba(40,39,36,.46); font-family: var(--font-en); font-size: .68rem; font-style: italic; letter-spacing: .08em; }
.style-coming-soon { position: absolute; top: 50%; left: 50%; z-index: 3; margin: 0; padding: 1rem 1.5rem; background: rgba(251,249,244,.82); box-shadow: 0 22px 50px -35px rgba(31,28,24,.6); font-family: var(--font-en); font-size: .68rem; letter-spacing: .2em; line-height: 1.5; text-align: center; transform: translate(-50%,-50%); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
.style-coming-soon span { position: static; color: var(--color-accent); font-size: 1rem; font-style: italic; letter-spacing: .12em; }

.access { position: relative; padding-top: clamp(8rem, 13vw, 11rem); padding-bottom: clamp(9rem, 14vw, 12rem); }
.access-heading { max-width: 1120px; margin: 0 auto 5rem; text-align: left; }
.access-heading h2 { margin-top: 3.5rem; font-size: clamp(2.4rem, 4vw, 3.7rem); line-height: 1.45; }
.access-layout { display: grid; grid-template-columns: minmax(0, 1.12fr) minmax(360px, .88fr); gap: 0; max-width: 1120px; margin: auto; align-items: center; }
.access-photo { min-height: 580px; box-shadow: var(--shadow-editorial); }
.access-photo img { width: 100%; height: 100%; object-fit: cover; }
.access-details { position: relative; z-index: 2; display: flex; min-height: 500px; flex-direction: column; justify-content: center; margin-left: -3.5rem; padding: clamp(2.5rem, 5vw, 4.5rem); background: rgba(251,249,244,.94); box-shadow: 0 35px 80px -60px rgba(31,28,24,.58); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
.access-lead { margin-bottom: 2.7rem; font-family: var(--font-serif); font-size: clamp(1.45rem, 2.2vw, 2rem); letter-spacing: .08em; line-height: 1.9; }
.access-details dl { margin: 0; }
.access-details dl div { display: grid; grid-template-columns: 100px 1fr; padding: 1.15rem 0; border-top: 1px solid var(--color-line); font-size: .86rem; letter-spacing: .04em; line-height: 1.9; }
.access-details dl div:last-child { border-bottom: 1px solid var(--color-line); }
.access-details dt { color: var(--color-muted); font-family: var(--font-serif); }
.access-details dd { margin: 0; }
.access-details dd span { color: var(--color-muted); font-size: .78rem; }
.access-route { margin-top: 1.6rem; }
.access-route__parking { display: flex; align-items: center; gap: .8rem; margin: 0 0 .85rem; }
.access-route__parking span { display: grid; width: 1.75rem; height: 1.75rem; place-items: center; border-radius: 50%; background: var(--color-accent); color: var(--color-base); font-family: var(--font-en); font-size: .8rem; }
.access-route__parking strong { font-size: .78rem; font-weight: 400; letter-spacing: .04em; }
.access-route details { border-top: 1px solid var(--color-line); border-bottom: 1px solid var(--color-line); }
.access-route summary { display: flex; min-height: 3.2rem; align-items: center; justify-content: space-between; color: var(--color-text); font-size: .76rem; letter-spacing: .06em; cursor: pointer; list-style: none; }
.access-route summary::-webkit-details-marker { display: none; }
.access-route summary i { color: var(--color-accent); font-size: 1rem; font-style: normal; transition: transform .35s ease; }
.access-route details[open] summary i { transform: rotate(45deg); }
.access-route details > div { padding: 0 0 1.3rem; color: var(--color-muted); font-size: .7rem; letter-spacing: .035em; line-height: 1.9; }
.access-route details p { margin: 0; }
.access-route__alert { margin-bottom: .6rem !important; color: #7d4b43; font-weight: 400; }
.map-embed { position: relative; flex: 1; min-height: 190px; margin-top: 2rem; overflow: hidden; background: #e5e6df; }
.map-embed iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; filter: saturate(.75) contrast(.96); transition: filter .45s ease; }
.map-embed:hover iframe, .map-embed:focus-within iframe { filter: saturate(1) contrast(1); }
.map-embed > a { position: absolute; right: .75rem; bottom: .75rem; z-index: 1; padding: .55rem .75rem; background: rgba(251,249,244,.94); box-shadow: 0 8px 24px -16px rgba(31,28,24,.65); color: var(--color-text); font-size: .65rem; letter-spacing: .08em; }
.map-embed > a span { color: var(--color-accent); }

.site-footer { padding: clamp(6rem, 10vw, 9rem) var(--side-space) 8rem; background: var(--color-dark); color: #e9e3d9; }
.footer-main { display: grid; grid-template-columns: 1fr auto; gap: 5rem; max-width: 1120px; margin: auto; }
.footer-eyebrow { margin-bottom: 1.6rem; color: #8f9885; font-family: var(--font-en); font-size: .68rem; letter-spacing: .28em; }
.footer-logo { margin-bottom: .7rem; font-family: var(--font-serif); font-size: clamp(2.6rem, 5vw, 4.5rem); letter-spacing: .14em; line-height: 1.2; }
.footer-location { margin-bottom: 0; color: #b7af9f; font-family: var(--font-en); font-size: 1rem; font-style: italic; letter-spacing: .22em; }
.footer-links { display: flex; min-width: 270px; flex-direction: column; justify-content: space-between; align-items: flex-start; }
.footer-links nav { display: grid; grid-template-columns: repeat(2, minmax(90px, 1fr)); gap: 1rem 2.4rem; font-family: var(--font-en); font-size: .92rem; letter-spacing: .16em; }
.footer-links nav a { position: relative; padding-bottom: .2rem; }
.footer-links nav a::after { content: ""; position: absolute; bottom: 0; left: 0; width: 1.5rem; height: 1px; background: #8f9885; transition: width .35s ease; }
.footer-links nav a:hover::after { width: 100%; }
.instagram-link { display: inline-flex; align-items: center; gap: .75rem; padding-bottom: .3rem; border-bottom: 1px solid #6e675c; font-family: var(--font-en); font-size: .88rem; letter-spacing: .12em; transition: border-color .3s, color .3s; }
.instagram-link:hover { border-color: var(--color-base); color: var(--color-base); }
.footer-bottom { display: flex; justify-content: space-between; gap: 2rem; max-width: 1120px; margin: 6rem auto 0; padding-top: 1.5rem; border-top: 1px solid rgba(233,227,217,.14); color: #9b9387; font-size: .66rem; letter-spacing: .12em; }
.footer-bottom p { margin: 0; }
.copyright { color: inherit; }

.side-rail { position: fixed; top: 0; right: 0; bottom: 0; z-index: 90; display: grid; width: 76px; grid-template-rows: 45% 55%; background: var(--color-paper); box-shadow: -10px 0 40px -30px rgba(31,28,24,.7); }
.side-rail__menu, .side-rail__reserve, .side-rail__phone { display: flex; min-width: 0; align-items: center; justify-content: center; flex-direction: column; border: 0; font: inherit; letter-spacing: .18em; cursor: pointer; }
.side-rail__phone, .side-rail__mobile-label, .side-rail__icon, .hamburger-icon { display: none; }
.side-rail__menu { position: relative; background: var(--color-paper); color: var(--color-text); font-family: var(--font-en); font-size: .76rem; writing-mode: vertical-rl; transition: background-color .3s ease, color .3s ease; }
.side-rail__menu::after { content: ""; position: absolute; right: 18px; bottom: 0; left: 18px; height: 1px; background: var(--color-hairline); }
.side-rail__menu:hover, .side-rail__menu[aria-expanded="true"] { background: var(--color-dark); color: var(--color-base); }
.side-rail__reserve { background: var(--color-accent); color: var(--color-base); font-family: var(--font-en); font-size: .76rem; writing-mode: vertical-rl; transition: background-color .3s ease; }
.side-rail__reserve:hover, .side-rail__reserve[aria-expanded="true"] { background: #5f6f56; }
.mobile-menu-toggle { display: none; }
.page-top { position: fixed; right: calc(76px + 1.25rem); bottom: 1.25rem; z-index: 70; display: grid; width: 3.4rem; height: 3.4rem; place-content: center; gap: .1rem; border: 1px solid rgba(40,39,36,.18); background: rgba(251,249,244,.92); box-shadow: 0 14px 35px -25px rgba(31,28,24,.75); color: var(--color-text); opacity: 0; transform: translateY(.75rem); visibility: hidden; transition: opacity .35s ease, transform .35s ease, visibility 0s linear .35s, background-color .3s ease, color .3s ease; -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); }
.page-top.is-visible { opacity: 1; transform: none; visibility: visible; transition-delay: 0s; }
.page-top:hover { background: var(--color-dark); color: var(--color-base); }
.page-top span { font-family: var(--font-en); font-size: 1rem; line-height: .8; text-align: center; }
.page-top small { font-family: var(--font-en); font-size: .58rem; letter-spacing: .16em; }
body.menu-open .page-top { opacity: 0; pointer-events: none; visibility: hidden; }

@media (max-width: 767px) {
  :root { --side-space: 2rem; }
  .desktop-only { display: none; }
  .mobile-only { display: block; }
  .site-header { padding-top: 1.5rem; }
  .site-header.is-scrolled { padding-top: .75rem; padding-bottom: .75rem; }
  .site-logo { font-size: 1.05rem; }
  .site-logo__mark { width: 1.55rem; height: 1.55rem; }
  .menu-panel { inset: 0 0 calc(4.25rem + env(safe-area-inset-bottom)) 0; }
  .menu-panel__inner, .menu-panel__inner--navigation, .menu-panel__inner--reservation { width: 100%; min-width: 0; overflow-y: auto; }
  .menu-panel__main { min-height: 100%; padding: 2rem 1.5rem 1.5rem; }
  .menu-panel__heading span { display: none; }
  .menu-panel__nav { margin: auto 0; padding: 2.5rem 0; }
  .menu-panel__nav a { grid-template-columns: 1.5rem 1fr auto; gap: .65rem; padding: .9rem 0; }
  .menu-panel__name { display: block; font-size: clamp(2.25rem, 11vw, 3.4rem); }
  .menu-panel__name small { display: block; margin-top: .4rem; font-size: .8rem; line-height: 1.5; }
  .menu-panel__nav i { width: 1.8rem; height: 1.8rem; font-size: .8rem; line-height: 1.65rem; }
  .menu-panel__reserve { min-height: 100%; padding: 2rem 1.35rem; }
  .menu-panel__actions { display: none; }
  .menu-panel__social { align-items: center; margin-top: 1.2rem; padding: 1.25rem 0 .25rem; border-top: 1px solid var(--color-hairline); color: var(--color-text); font-size: 1rem; }
  .menu-panel__social a { display: inline-flex; align-items: center; gap: .45rem; padding-bottom: .3rem; border-bottom-color: var(--color-accent); font-weight: 400; }
  .menu-panel__social a span { color: var(--color-accent); font-size: 1.05rem; }
  .menu-panel__social p { margin: 0; color: #514d46; font-size: .8rem; letter-spacing: .08em; }
  .menu-panel__reserve-copy > p { font-size: .78rem; }
  .menu-panel__reserve-copy > span { font-size: .85rem; line-height: 1.9; }
  .reservation-option small, .reservation-apps > p, .reservation-line p { font-size: .72rem; }
  .reservation-option strong { font-size: .88rem; line-height: 1.55; }
  .reservation-apps a small { font-size: .62rem; }
  .reservation-apps a strong { font-size: .78rem; }
  .reservation-line > div:last-child > a { font-size: .82rem; }
  .reservation-more summary { font-size: .84rem; }
  .reservation-option--hotpepper strong { font-size: .78rem; }
  .menu-panel__tel small { font-size: .75rem; }
  .menu-panel__tel span { font-size: 1.35rem; }
  .menu-panel__hours dt { font-size: .7rem; }
  .menu-panel__hours dd { font-size: .82rem; }
  .reservation-apps a { padding-inline: .5rem; }
  .hero { min-height: 600px; }
  .hero-copy { right: var(--side-space); bottom: calc(14rem + env(safe-area-inset-bottom)); left: var(--side-space); }
  .hero-eyebrow { margin-bottom: .9rem; font-size: .95rem; }
  .hero-eyebrow span { display: none; }
  .hero h1 { max-width: 280px; font-size: clamp(3rem, 14vw, 3.8rem); line-height: 1.08; }
  .hero h1::first-line { line-height: 1; }
  .hero-tagline { margin-top: 1.25rem; font-size: 1rem; line-height: 2; }
  .hero-signature { margin-top: 1.3rem; font-size: .72rem; }
  .hero-edition { display: none; }
  .scroll-guide { bottom: calc(6.4rem + env(safe-area-inset-bottom)); }
  .scroll-scissors { width: 2.1rem; height: 3.6rem; }
  .section { padding-block: var(--space-section-sm); }
  .section-label { font-size: 1rem; }
  .section-heading { margin-bottom: 2.7rem; text-align: left; }
  .section-heading h2, .style-intro h2 { font-size: 1.7rem; }
  .concept { display: block; padding-top: 7.5rem; padding-bottom: 8rem; }
  .concept::before { width: 32vw; }
  .section-kicker { gap: .8rem; }
  .section-index::after { width: 2rem; }
  .concept-title { margin-top: 2.8rem; font-size: clamp(1.45rem, 6.5vw, 1.75rem); line-height: 2.05; letter-spacing: .065em; }
  .concept-body { margin-top: 2.5rem; color: #514d46; font-size: 1rem; line-height: 2.15; }
  .concept-side-note { right: auto; left: -.75rem; opacity: .42; }
  .concept-media { width: 72%; margin: 3.5rem 0 0 auto; aspect-ratio: 4 / 5.4; }
  .menu { padding-top: 7rem; padding-bottom: 7.5rem; }
  .menu::after { top: 4.2rem; font-size: 6rem; }
  .menu-heading { margin-bottom: 3.5rem; }
  .menu-heading__title { display: block; margin-top: 2.5rem; }
  .menu-heading__title h2 { font-size: 1.9rem; }
  .menu-heading__title p { margin-top: 1.5rem; color: #514d46; font-size: .92rem; line-height: 2; }
  .menu-row { min-height: 0; padding: 0; }
  .menu-row summary { grid-template-columns: 1.5rem minmax(0, 1fr) 1.65rem; gap: .75rem; min-height: 7.25rem; padding: 1.15rem .1rem; }
  .menu-row summary > div { display: block; }
  .menu-number { padding-top: .25rem; font-size: .78rem; }
  .menu-row h3 { min-width: 0; font-size: 1.3rem; }
  .menu-row div p { margin-top: .4rem; color: #514d46; font-size: .84rem; line-height: 1.7; }
  .menu-time { grid-column: 2; color: #514d46; font-size: .78rem; }
  .price { grid-column: 2; font-size: 1.55rem; }
  .menu-row summary > i { grid-column: 3; grid-row: 1 / span 3; width: 1.65rem; height: 1.65rem; line-height: 1.5rem; }
  .menu-row__detail { margin: -.35rem .5rem 0 2.25rem; padding-bottom: 1.6rem; color: #514d46; font-size: .88rem; line-height: 1.95; }
  .menu-note { color: #514d46; font-size: .8rem; line-height: 1.9; text-align: left; }
  .style { display: block; }
  .style-intro { position: static; }
  .style-intro h2 { margin: 2.3rem 0 .9rem; font-size: 1.9rem; }
  .style-intro > p:not(.section-label) { margin-bottom: 1.7rem; color: #514d46; font-size: .95rem; line-height: 1.9; }
  .style-grid { grid-template-columns: repeat(3, 1fr); grid-auto-rows: auto; gap: .38rem; margin-top: 2.5rem; }
  .style-grid div, .style-grid div:nth-child(1), .style-grid div:nth-child(2), .style-grid div:nth-child(3), .style-grid div:nth-child(n+4) { grid-column: auto; grid-row: auto; aspect-ratio: 1; }
  .style-grid div:hover { transform: none; }
  .style-grid div p { top: .55rem; left: .55rem; font-size: .65rem; }
  .style-grid span { right: .5rem; bottom: .45rem; font-size: .68rem; }
  .style-coming-soon { font-size: .76rem; }
  .text-link { font-size: .9rem; }
  .access { padding-top: 7rem; padding-bottom: 7.5rem; }
  .access-heading { margin-bottom: 3.5rem; }
  .access-heading h2 { margin-top: 2.5rem; font-size: 1.9rem; }
  .access-layout { display: block; }
  .access-photo { min-height: 0; aspect-ratio: 311 / 240; margin-bottom: 2.5rem; }
  .access-details { min-height: 0; margin: -4.5rem 0 0 1.25rem; padding: 2.2rem 1.5rem; }
  .access-lead { margin-bottom: 2rem; font-size: 1.3rem; }
  .access-details dl div { grid-template-columns: 84px 1fr; padding: 1rem 0; font-size: .95rem; line-height: 2; }
  .access-details dd span { color: #514d46; font-size: .84rem; }
  .access-route { margin-top: 1.3rem; }
  .access-route__parking strong, .access-route summary { font-size: .88rem; }
  .access-route details > div { color: #514d46; font-size: .84rem; line-height: 2; }
  .map-embed { display: block; visibility: visible; flex: none; width: 100%; height: 240px; min-height: 240px; margin-top: 2.25rem; opacity: 1; }
  .map-embed iframe { position: relative; inset: auto; display: block; width: 100%; height: 240px; }
  .map-embed > a { font-size: .78rem; }
  .site-footer { padding: 5rem 2rem 8.5rem; }
  .footer-main { display: block; }
  .footer-logo { font-size: 2.4rem; }
  .footer-location { font-size: .8rem; }
  .footer-links a { font-size: .95rem; }
  .footer-links { min-width: 0; margin-top: 3.5rem; gap: 2.8rem; }
  .footer-links nav { width: 100%; }
  .footer-bottom { display: block; margin-top: 4rem; font-size: .85rem; line-height: 1.9; }
  .footer-bottom .copyright { margin-top: .7rem; }
  .side-rail { top: auto; right: 0; bottom: 0; left: 0; width: auto; height: calc(4.25rem + env(safe-area-inset-bottom)); grid-template-columns: 1fr 1fr; grid-template-rows: 1fr; gap: 0; padding: 0 0 env(safe-area-inset-bottom); border: 0; border-radius: 0; background: transparent; box-shadow: 0 -12px 34px -28px rgba(28,28,24,.8); -webkit-backdrop-filter: none; backdrop-filter: none; }
  .side-rail__phone, .side-rail__reserve { display: flex; flex-direction: row; gap: .7rem; border-radius: 0; font-family: var(--font-sans); font-size: .9rem; font-weight: 400; letter-spacing: .1em; writing-mode: horizontal-tb; transition: transform .25s ease, background-color .25s ease; }
  .side-rail__phone { grid-column: 1; grid-row: 1; border: 0; border-top: 1px solid rgba(40,39,36,.15); background: rgba(251,249,244,.97); color: var(--color-text); box-shadow: none; }
  .side-rail__reserve { grid-column: 2; grid-row: 1; border-top: 1px solid #65745c; background: var(--color-accent); box-shadow: none; }
  .side-rail__phone:active, .side-rail__reserve:active { transform: scale(.975); }
  .side-rail__icon { display: block; width: 1.35rem; height: 1.35rem; padding: 0; border-radius: 0; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.45; }
  .side-rail__phone .side-rail__icon { background: transparent; color: var(--color-accent); }
  .side-rail__reserve .side-rail__icon { background: transparent; }
  .side-rail__desktop-label { display: none; }
  .side-rail__mobile-label { display: inline; }
  .side-rail > .side-rail__menu { display: none; }
  .mobile-menu-toggle { position: fixed; top: max(1.08rem, env(safe-area-inset-top)); right: 1.25rem; z-index: 95; display: flex; width: 2rem; height: 2rem; align-items: center; justify-content: center; padding: 0; border: 0; background: transparent; color: var(--color-text); cursor: pointer; transition: top .45s ease, color .45s ease; }
  .site-header.is-scrolled ~ .mobile-menu-toggle { top: max(.68rem, env(safe-area-inset-top)); }
  .mobile-menu-toggle:hover, .mobile-menu-toggle[aria-expanded="true"] { background: transparent; color: var(--color-text); }
  .site-header:not(.is-scrolled) ~ .mobile-menu-toggle, .site-header:not(.is-scrolled) ~ .mobile-menu-toggle:hover, .site-header:not(.is-scrolled) ~ .mobile-menu-toggle[aria-expanded="true"] { color: var(--color-base); }
  body.menu-open .mobile-menu-toggle, body.menu-open .mobile-menu-toggle:hover, body.menu-open .mobile-menu-toggle[aria-expanded="true"] { color: var(--color-text); }
  body.menu-open .mobile-menu-toggle .hamburger-icon i:last-child { background: var(--color-text); }
  .side-rail__menu::after, .side-rail__menu-label { display: none; }
  .hamburger-icon { display: grid; width: 1.5rem; gap: .3rem; }
  .hamburger-icon i { display: block; width: 100%; height: 1px; background: currentColor; transition: transform .35s ease, opacity .35s ease; }
  .hamburger-icon i:last-child { height: 2px; background: #718f63; }
  [data-menu-toggle][aria-expanded="true"] .hamburger-icon i:first-child { transform: translateY(.34rem) rotate(45deg); }
  [data-menu-toggle][aria-expanded="true"] .hamburger-icon i:nth-child(2) { opacity: 0; }
  [data-menu-toggle][aria-expanded="true"] .hamburger-icon i:last-child { transform: translateY(-.34rem) rotate(-45deg); }
  body.menu-open .mobile-menu-toggle[aria-expanded="true"] .hamburger-icon i:first-child,
  body.menu-open .mobile-menu-toggle[aria-expanded="true"] .hamburger-icon i:last-child { height: 2px; background: var(--color-text); }
  .reservation-panel.is-open ~ .mobile-menu-toggle { display: none; }
  .page-top { right: 1rem; bottom: calc(5.15rem + env(safe-area-inset-bottom)); width: 3rem; height: 3rem; }
  .page-top span { font-size: 1.05rem; }
  .page-top small { font-size: .65rem; }
}

@media (min-width: 768px) and (max-width: 1050px) {
  .concept { grid-template-columns: minmax(0, 1fr) 34%; gap: 3rem; }
  .style { grid-template-columns: 220px minmax(0, 1fr); gap: 3rem; }
  .access-layout { gap: 3rem; }
}

@media (max-width: 350px) {
  :root { --side-space: 1.4rem; }
  .site-logo { letter-spacing: .13em; }
  .concept-title { font-size: 1.24rem; }
}
