@charset "UTF-8";

/* =========================================================
   Variables
========================================================= */
:root {
    --c-red:        #a51c1c;
    --c-red-dark:   #7e1414;
    --c-red-light:  #c93a3a;
    --c-bg:         #f6f1e8;
    --c-bg2:        #efeae0;
    --c-bg3:        #f3f1ec;
    --c-text:       #000;
    --c-text-sub:   #6e6253;
    --c-line:       #d8cebd;
    --c-yellow:     #e3c75a;
    --c-yellow-dk:  #8e6e1d;

    --serif:        "ten-mincho", "Hina Mincho", "Noto Serif JP", "Yu Mincho", "Hiragino Mincho ProN", serif;
    --sans:         "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", sans-serif;

    --header-h:     90px;
    --header-h-sp:  66px;
    --max-w:        1200px;
}


/* =========================================================
   Reset / Base
========================================================= */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0;  }
html                   { font-size: 62.5%; scroll-behavior: smooth;  box-sizing: border-box; scrollbar-width: none; -ms-overflow-style: none; }
body                   { font-family: var(--sans); font-size: 1.5rem; font-weight: 400; line-height: 1.8; color: var(--c-text); background: #fff; -webkit-font-smoothing: antialiased;
                        text-align: justify; letter-spacing: 0.088em !important; line-height: 150%; position: relative; text-justify: inter-ideograph; /* Edge */ line-break: strict;
                        word-break: break-word; overflow-wrap: break-word; word-wrap: break-word;
                        scrollbar-width: none; -ms-overflow-style: none;
}
html::-webkit-scrollbar,
body::-webkit-scrollbar { width: 0; height: 0; display: none; }

img                    { max-width: 100%; height: auto; display: block; }
svg                    { display: block; }
a                      { color: inherit; text-decoration: none; transition: opacity .3s ease, color .3s ease, background-color .3s ease; }
a:hover                { opacity: .75; }
ul, ol                 { list-style: none; }
button                 { background: none; border: 0; cursor: pointer; font: inherit; color: inherit; }
address                { font-style: normal; }


.br   { display: none; }

/* =========================================================
   Common — Headings
========================================================= */
.heading-brand                 { display: flex; align-items: center; justify-content: center; gap: 21px; font-family: var(--serif); font-size: 3.2rem; font-weight: 500; color: var(--c-red);  text-align: center; margin-bottom: 50px; }
.heading-brand::before,
.heading-brand::after          { content: ""; display: inline-block; width: 32px; height: 1px; background: var(--c-red); }


/* =========================================================
   Common — Buttons
========================================================= */
.btn               { display: inline-flex; align-items: center; justify-content: center; gap: 15px; min-width: 240px; padding: 18px 33px; font-family: var(--sans); font-size: 1.8rem; font-weight: 600; border-radius: 999px; transition: all .3s ease; position: relative; }
/* .btn__arrow        { display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; border-radius: 50%; background: #fff; color: var(--c-red); font-size: 0; position: relative; } */
.btn__arrow::after { content: url(../img/icon_arrow_white.svg); width: 7px; height: 7px;  display: inline-block; position: absolute; top: 18px; right: 20px; }
.btn--primary     { background: var(--c-red); color: #fff; box-shadow: 0 0 0 1px #fff, 0 0 0 5px var(--c-red);   }
.btn--primary:hover{ background: var(--c-red-dark); opacity: 1; }


/* =========================================================
   Header
========================================================= */
.header                        { position: fixed; top: 0; left: 0; width: 100%; z-index: 100; padding: 0px 24px 15px 0; pointer-events: none; }
.header__inner                 { display: flex; align-items: center; gap: 18px; margin: 0 auto; pointer-events: auto; justify-content: space-between; }

.header__logo                  { background: var(--c-red);  max-width: 200px; width: 100%; height: 100px; display: flex; justify-content: center; align-items: center; line-height: 1.4; box-shadow: 0 3px 12px rgba(0,0,0,.0);  }
.header__logo-link             { display: flex; flex-direction: column; align-items: center; color: #fff; }
.header__logo-cn               { font-family: var(--serif); font-size: 1.4rem; letter-spacing: .36em; padding-left: .36em; opacity: .9; }
.header__logo-main             { font-family: var(--serif); font-size: 3.6rem; font-weight: 700; letter-spacing: .12em; line-height: 1; margin: 6px 0 6px; display: inline-flex; gap: 6px; }
.header__logo-main span        { display: inline-block; }
.header__logo-jp               { font-family: var(--serif); font-size: .9rem; letter-spacing: .36em; padding-left: .36em; opacity: .9; }
.header__logo_img              { width: 120px; }
.header__inner_right           { max-width: 330px; width: 100%; }
.header__sns-iconWrap          {  display: none; }



/* =========================================================
   Global Nav (PC)
========================================================= */
.gnav                          { display: flex; justify-content: center; max-width: 600px; width: 100%; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); }
.gnav__list                    { display: inline-flex; align-items: center; background: #fff; height: 50px; border-radius: 10px; border: 0.5px solid var(--c-red);  box-shadow: 0 0 0 3px #fff, 0 0 0 4px var(--c-red); }
.gnav__item                    { position: relative; display: flex; align-items: center;  }
/* .gnav__item:not(:last-child)::after { content: "・"; color: var(--c-red); font-size: 1.4rem; } */
.gnav__link                    { display: inline-flex; align-items: center; gap: 2px; padding: 6px 12px; font-size: 1.4rem; font-weight: 500; letter-spacing: .09em; color: var(--c-text); white-space: nowrap; }
.gnav__link:hover              { color: var(--c-red); opacity: 1; }
.gnav__link_arrow::after             { content: url(../img/icon_arrow.svg); width: 5px; }

.gnav__icon                    { display: inline-flex; align-items: center; justify-content: center; color: var(--c-red) ;  transition: transform .3s ease; }
.gnav__icon--plus              { font-size: 1.4rem; padding-bottom: 0; }
.gnav__icon--arrow::after      { content: ""; width: 0; height: 0; border-style: solid; border-width: 3px 0 3px 3px; border-color: transparent transparent transparent #fff; margin-left: 0; }

/* Sub menu (dropdown) */
.gnav__submenu                 { position: absolute; top: 100%; left: 50%; transform: translateX(-50%) translateY(9px); min-width: 180px; padding: 12px 0; background: #fff; border-radius: 9px;  opacity: 0; visibility: hidden; pointer-events: none; transition: opacity .25s ease, transform .25s ease, visibility .25s ease; z-index: 10; border: 0.5px solid var(--c-red); padding: 10px 20px 20px 10px; }
.gnav__submenu::before         { content: ""; position: absolute; top: -18px; left: 0; right: 0; height: 18px;  }
.gnav__submenu::after          { content: ""; position: absolute; top: -6px; left: 50%; transform: translateX(-50%) rotate(45deg); width: 10px; height: 10px; background: #fff; border-left: 0.5px solid var(--c-red); border-top: 0.5px solid var(--c-red);  }
.gnav__subitem                 { display: block; border-bottom: dashed 0.5px #ccc;  }
.gnav__sublink                 { display: block; padding: 6px 24px; font-size: 1.4rem; color: var(--c-text); letter-spacing: .06em; white-space: nowrap; transition: background-color .2s ease, color .2s ease; }
.gnav__sublink:hover           { background: var(--c-bg); color: var(--c-red); opacity: 1; }

.gnav__item--has-child:hover .gnav__submenu,
.gnav__item--has-child:focus-within .gnav__submenu { opacity: 1; visibility: visible; pointer-events: auto; transform: translateX(-50%) translateY(0); }
.gnav__item--has-child:hover .gnav__icon--plus,
.gnav__item--has-child:focus-within .gnav__icon--plus { transform: rotate(45deg); }


/* =========================================================
   Header CTA + Hamburger
========================================================= */
.header__cta                   { display: flex; justify-content: center; align-items: center;  height: 40px; max-width:220px; width: 100%; align-items: center; gap: 15px; background: var(--c-red); color: #fff; padding: 5px 10px; letter-spacing: 0; border-radius: 5px; font-size: 1.6rem; font-family:var(--serif) ; font-weight: 500; border: 0.5px solid #fff;  box-shadow: 0 0 0 3px #fff, 0 0 0 4px;  box-shadow: 0 0 0 3px var(--c-red), 0 0 0 4px #fff; }
.header__cta:hover             { background: var(--c-red-dark); opacity: 1; }
.header__cta-arrow             { content: url(../img/icon_arrow_white.svg); width: 5px; }
.header__cta-arrow::after      { content: ""; width: 0; height: 0; border-style: solid; border-width: 3px 0 3px 6px; border-color: transparent transparent transparent var(--c-red); margin-left: 3px; }

.hamburger                     { position: fixed; top: 20px; right: 30px; display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 6px; width: 60px; height: 60px; border-radius: 50%; background: var(--c-red); z-index: 110; }
.hamburger__bar                { display: block; width: 20px; height: 1px; background: #fff; transition: transform .3s ease;margin-bottom: 1px; }
.hamburger__bar:nth-child(2)   { margin-bottom: 1px; }

.hamburger.is-active           { background: #1a1a1a; }
.hamburger.is-active .hamburger__bar:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.hamburger.is-active .hamburger__bar:nth-child(2) { opacity: 0; }
.hamburger.is-active .hamburger__bar:nth-child(3) { transform: translateY(-9px) rotate(-45deg); }


/* =========================================================
   Drawer (Hamburger contents)
========================================================= */
.drawer                        { position: fixed; top: 0; right: -100%; width: 420px; max-width: 90%; height: 100vh; background: #fff; z-index: 200; transition: right .45s cubic-bezier(.7,0,.3,1); overflow-y: auto; -webkit-overflow-scrolling: touch; box-shadow: -3px 0 24px rgba(0,0,0,.18); }
.drawer.is-open                { right: 0; }
.drawer__inner                 { padding: 30px 33px 42px; }

.drawer__header                { display: flex; justify-content: space-between; align-items: center; padding-bottom: 21px; border-bottom: 1px solid var(--c-line); }
.drawer__brand                 { display: inline-flex; align-items: center; margin: 0; line-height: 1; }
.drawer__brand-img             { width: 110px; height: auto; display: block; filter: brightness(0); }
.drawer__brand-cn              { font-family: var(--serif); font-size: .9rem; letter-spacing: .3em; padding-left: .3em; }
.drawer__brand-main            { font-family: var(--serif); font-size: 2.1rem; font-weight: 700; letter-spacing: .12em; margin: 3px 0 3px; display: inline-flex; gap: 3px; }
.drawer__brand-jp              { font-family: var(--serif); font-size: .9rem; letter-spacing: .3em; padding-left: .3em; }

.drawer__close                 { position: relative; width: 42px; height: 42px; }
.drawer__close-bar             { position: absolute; top: 50%; left: 50%; width: 24px; height: 3px; background: var(--c-text); transform-origin: center; }
.drawer__close-bar:nth-child(1){ transform: translate(-50%, -50%) rotate(45deg); }
.drawer__close-bar:nth-child(2){ transform: translate(-50%, -50%) rotate(-45deg); }

.drawer__nav                   { padding: 24px 0; }
.drawer__list                  { display: flex; flex-direction: column; }
.drawer__item                  { border-bottom: 1px solid var(--c-line); }
.drawer__link                  { display: flex; align-items: baseline; justify-content: space-between; padding: 18px 6px; font-family: var(--serif); }
.drawer__link-jp               { font-size: 1.5rem; font-weight: 500; color: var(--c-text); letter-spacing: .09em; }
.drawer__link-en               { font-size: 1.4rem; color: var(--c-red); letter-spacing: .15em; }
.drawer__link:hover            { opacity: 1; }
.drawer__link:hover .drawer__link-jp { color: var(--c-red); }

.drawer__sublist               { display: flex; flex-direction: column; padding: 0 0 15px 18px; gap: 6px; }
.drawer__sublink               { display: inline-block; font-size: 1.4rem; color: var(--c-text-sub); padding: 6px 0; position: relative; padding-left: 18px; }
.drawer__sublink::before       { content: ""; position: absolute; left: 0; top: 50%; transform: translateY(-50%); width: 9px; height: 1px; background: var(--c-red); }

.drawer__cta                   { display: flex; flex-direction: column; gap: 12px; padding: 24px 0 12px; border-top: 1px solid var(--c-line); }
.drawer__cta-btn               { display: inline-flex; align-items: center; justify-content: center; gap: 12px; background: var(--c-red); color: #fff; padding: 15px 24px; border-radius: 999px; font-size: 1.5rem; font-weight: 500; letter-spacing: .09em; }
.drawer__cta-btn:hover         { background: var(--c-red-dark); opacity: 1; }
.drawer__cta-arrow             { display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; border-radius: 50%; background: #fff; }
.drawer__cta-arrow::after      { content: ""; width: 0; height: 0; border-style: solid; border-width: 3px 0 3px 6px; border-color: transparent transparent transparent var(--c-red); margin-left: 3px; }
.drawer__tel                   { display: inline-flex; align-items: center; justify-content: center; gap: 9px; color: var(--c-red); font-family: var(--serif); font-size: 2.1rem; font-weight: 700; letter-spacing: .03em; padding: 9px 18px; border: 1px solid var(--c-red); border-radius: 999px; }
.drawer__tel-icon              { display: inline-flex; }
.drawer__tel-icon svg          { fill: var(--c-red); }

.drawer__info                  { padding-top: 21px; border-top: 1px solid var(--c-line); margin-top: 9px; }
.drawer__info-text             { font-size: 1.4rem; line-height: 1.95; color: var(--c-text-sub); }
.drawer__sns                   { display: flex; gap: 18px; margin-top: 18px; }
.drawer__sns-item a            { display: inline-flex; align-items: center; justify-content: center; width: 42px; height: 42px; border: 1px solid var(--c-text); border-radius: 50%; color: var(--c-text); }

.drawer-overlay                { position: fixed; inset: 0; background: rgba(0,0,0,.5); z-index: 150; opacity: 0; visibility: hidden; transition: opacity .35s ease, visibility .35s ease; }
.drawer-overlay.is-open        { opacity: 1; visibility: visible; }


/* =========================================================
   Loading
========================================================= */
.loading                       { position: fixed; inset: 0; z-index: 9999; background: #1a1a1a; display: flex; align-items: center; justify-content: center; transition: opacity .8s ease, visibility .8s ease; overflow: hidden; }
.loading.is-hidden             { opacity: 0; visibility: hidden; pointer-events: none; }

.loading__inner                { position: relative; z-index: 3; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 30px; color: #fff; text-align: center; }
.loading__brand                { display: flex; flex-direction: column; align-items: center; line-height: 1.4; opacity: 0; animation: loadingFadeIn .8s ease .2s forwards; }
.loading__brand-cn             { font-family: var(--serif); font-size: 1.5rem; letter-spacing: .39em; padding-left: .39em; opacity: .9; }
.loading__brand-main           { font-family: var(--serif); font-size: 6.6rem; font-weight: 700; letter-spacing: .15em; line-height: 1; margin: 9px 0 12px; display: inline-flex; gap: 9px; }
.loading__brand-main span      { display: inline-block; }
.loading__brand-jp             { font-family: var(--serif); font-size: 1.4rem; letter-spacing: .39em; padding-left: .39em; opacity: .9; }

.loading__bar                  { position: relative; width: 201px; height: 3px; background: rgba(255,255,255,.2); overflow: hidden; opacity: 0; animation: loadingFadeIn .6s ease .8s forwards; }
.loading__bar-fill             { position: absolute; top: 0; left: 0; height: 100%; width: 0; background: var(--c-red); animation: loadingProgress 4.2s cubic-bezier(.5,.1,.4,1) .8s forwards; }
.loading__text                 { font-family: var(--serif); font-size: 1.4rem; letter-spacing: .36em; padding-left: .36em; opacity: 0; color: #fff; animation: loadingFadeIn .6s ease 1s forwards; }

@keyframes loadingFadeIn  { from { opacity: 0; transform: translateY(9px); } to { opacity: 1; transform: translateY(0); } }
@keyframes loadingProgress{ from { width: 0; } to { width: 100%; } }

body.is-loading                { overflow: hidden; }
.loading__logo                  { width: 200px;  }


/* =========================================================
   Lightbox
========================================================= */
[data-lightbox]                 { cursor: zoom-in; transition: opacity .3s ease, transform .3s ease; }
[data-lightbox]:hover           { opacity: .92; }

.lightbox                       { position: fixed; inset: 0; z-index: 10000; display: flex; align-items: center; justify-content: center; padding: 30px; background: rgba(10,8,8,.88); opacity: 0; visibility: hidden; transition: opacity .35s ease, visibility .35s ease; }
.lightbox.is-open               { opacity: 1; visibility: visible; }

.lightbox__inner                { position: relative; max-width: 92vw; max-height: 88vh; display: flex; flex-direction: column; align-items: center; gap: 14px; transform: scale(.92); opacity: 0; transition: transform .45s cubic-bezier(.2,.8,.2,1), opacity .45s ease; }
.lightbox.is-open .lightbox__inner { transform: scale(1); opacity: 1; }

.lightbox__img                  { display: block; max-width: 92vw; max-height: 80vh; width: auto; height: auto; object-fit: contain; border-radius: 4px; box-shadow: 0 24px 60px rgba(0,0,0,.55); border: 10px solid #fff; }
.lightbox__caption              { color: #fff; font-family: var(--serif); font-size: 1.6rem; letter-spacing: .08em; text-align: center; opacity: .9; margin: 0; }
.lightbox__caption:empty        { display: none; }

.lightbox__close                { position: absolute; top: 18px; right: 18px; width: 44px; height: 44px; padding: 0; border: none; background: rgba(0,0,0,.5); color: #fff; font-size: 28px; line-height: 1; border-radius: 50%; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background .2s ease, transform .2s ease; z-index: 1; }
.lightbox__close:hover          { background: rgba(0,0,0,.85); transform: scale(1.05); }
.lightbox__close:focus-visible  { outline: 10px solid #fff; outline-offset: 2px; }

body.is-lightbox-open           { overflow: hidden; }


/* =========================================================
   Scroll Reveal — 無効化（写真のふわっと表示を停止）
========================================================= */
.reveal                         { opacity: 1; transform: none; transition: none; }
.reveal.is-visible              { opacity: 1; transform: none; }


/* =========================================================
   Hero
========================================================= */
.hero                          { position: relative; height: 100vh; min-height: 600px; max-height: 1080px; overflow: hidden; }
.hero__video                   { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 0; }
.hero__slider                  { position: absolute; inset: 0; z-index: 1; }
.hero__slide                   { position: absolute; inset: 0; background-size: cover; background-position: center; opacity: 0; transform: scale(1.06); transition: opacity 1.6s ease-in-out; }
.hero__slide--active           { opacity: 1; transform: scale(1); transition: opacity 1.6s ease-in-out, transform 7s ease-out; }
.hero__video + .hero__slider .hero__slide { background: transparent !important; }
.hero::before                  { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(0,0,0,.40) 0%, rgba(0,0,0,0) 54%); z-index: 2; }

.hero__inner                   { position: relative; z-index: 3; max-width: 1404px; margin: 0 auto; height: 100%; display: flex; flex-direction: column; justify-content: center; padding: 0 81px; color: #fff; text-shadow: 0 3px 24px rgba(0,0,0,.5); }
.hero__catch                   { font-family: var(--serif); font-size: 5.4rem; font-weight: 500; letter-spacing: .09em; line-height: 1.5; margin-bottom: 30px; }
.hero__lead                    { font-size: 1.6rem; line-height: 2.1; letter-spacing: .09em; }
.hero__cta                     { display: none; z-index: 4; }


/* =========================================================
   Section: Lunch Fair
========================================================= */
.fair                          { background: var(--c-bg); padding: 100px 30px 50px; }
.fair__inner                   { max-width: 960px; margin: 0 auto; }
.fair__card                    { background: #fff; border: 1px solid var(--c-red); border-radius: 6px; padding: 30px 30px; box-shadow: 0 0 0 3px #fff, 0 0 0 6px var(--c-red); }
.fair__heading                 { font-family: var(--serif); font-size: 3.2rem; font-weight: 500; color: var(--c-red); text-align: center; margin-bottom: 50px; padding-left: .24em; }

.fair__body                    { display: grid; grid-template-columns: 420px 1fr; gap: 42px; align-items: start; }
.fair__media                   { background: var(--c-bg2); aspect-ratio: 3/2; overflow: hidden; border-radius: 10px; }
.fair__img                     { width: 100%; height: 100%; object-fit: cover; }

.fair__detail                  { display: flex; flex-direction: column; }
.fair__meta                    { display: flex; align-items: center; justify-content: space-between; padding-bottom: 15px; border-bottom: 1px solid var(--c-line); margin-bottom: 18px; }
.fair__label                   { display: inline-block; background: #fff; border: 1px solid var(--c-yellow); color: var(--c-yellow-dk); padding: 3px 18px; font-size: 1.4rem; border-radius: 999px; letter-spacing: .09em; }
.fair__date                    { font-size: 1.4rem; color: var(--c-text); font-weight: 500; letter-spacing: .06em; }
.fair__cat                     { font-size: 1.4rem; color: var(--c-red); font-weight: 500; margin-bottom: 6px; }
.fair__sub                     { font-size: 1.8rem; color: var(--c-yellow-dk); margin-bottom: 20px; font-weight: 500; }
.fair__title                   { font-family: var(--sans); font-size: 2.0rem; font-weight: 700; line-height: 1.5; color: var(--c-text); margin-bottom: 10px; }
.fair__text                    { font-size: 1.4rem; line-height: 180%; color:var(--c-text); }


/* =========================================================
   Section: Popular
========================================================= */
.popular                       { background: var(--c-bg); padding: 25px 30px 50px;}
.popular__inner                { max-width: 960px; margin: 0 auto; }
.popular__list                 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 30px; }
.popular__item                 { display: flex; flex-direction: column; gap: 10px; }

.popular__media                { background: var(--c-bg2); aspect-ratio: 3/2; overflow: hidden; border-radius: 10px; margin-bottom: 6px; }
.popular__img                  { width: 100%; height: 100%; object-fit: cover; }
.popular__head                 { display: flex; align-items: center; justify-content: space-between; gap: 9px; }
.popular__tag                  { display: inline-block; padding: 3px 15px; font-size: 1.6rem; border-radius: 999px; letter-spacing: .06em; font-weight: 500; line-height: 1.5; }
.popular__tag--gold            { background: transparent; border: 1px solid var(--c-yellow); color: var(--c-yellow-dk); }
.popular__tag--red             { background: transparent; border: 1px solid var(--c-red); color: var(--c-red); }
.popular__price                { font-family: var(--sans); font-size: 1.8rem; color: var(--c-text); font-weight: 500; letter-spacing: .03em; }
.popular__yen                  { font-size: 1.6rem; }
.popular__name                 { font-size: 1.8rem; line-height: 1.8; font-weight: 500; color: var(--c-text); padding-top: 6px; }


/* =========================================================
   Section: Course
========================================================= */
.course                        { display: grid; grid-template-columns: 1.5fr 1fr; align-items: stretch; background: #3a3a3a; color: #fff; }
.course__media                 { overflow: hidden; width: 100%; height: 100%; min-height: 540px; position: relative; }
.course__img                   { display: block; width: 100%; height: 100%; object-fit: cover; min-height: 540px; }
.course__body                  { padding: 90px 80px; display: flex; flex-direction: column; justify-content: center; }
.course__sub                   { font-size: 1.6rem;  }
.course__title                 { font-family: var(--serif); font-size: 3.2rem; font-weight: 500; line-height: 1.5; margin-bottom: 20px; }
.course__text                  { font-size: 1.6rem; line-height: 180%; color: #fff; margin-bottom: 20px; }
.course__list                  { list-style: none; padding: 16px 0; margin: 0 0 20px; border-top: 1px solid rgba(255,255,255,.2); border-bottom: 1px solid rgba(255,255,255,.2); }
.course__list-item             { font-size: 1.5rem; line-height: 1.8; color: #fff; padding-left: 18px; position: relative; }
.course__list-item::before     { content: "✿"; position: absolute; left: 0; top: 0; color: var(--c-red, #c8364e); font-size: 1.2rem; }
.course__note                  { font-size: 1.6rem; color: #fff;  }
.course__price                 { font-family: var(--serif); font-size: 2.7rem; color: #fff; font-weight: 500; letter-spacing: .03em; margin-top: 6px; }
.course__price-tax             { font-size: 1.6rem; color: #ccc; margin-left: 6px; }
.course__btn                   { margin-top: 40px; align-self: flex-start; }


/* =========================================================
   Section: Menu — Swiper
========================================================= */
.menu                          { background: #fff; padding: 90px 0 111px; position: relative; overflow: hidden; width: 100%; }
.menu__inner                   { max-width: none; width: 100%; margin: 0; position: relative; padding: 0; }
.menu__title                   { position: relative; font-family: var(--serif); font-size: 3.2rem; color: var(--c-red); writing-mode: vertical-rl; letter-spacing: .36em; font-weight: 500; margin: 0 auto 21px; padding-top: .36em; display: block; width: max-content; }
.menu__title span              { display: inline-block; }

.menu__slider                  { position: relative; padding: 30px 80px 60px; }
.menu__swiper                  { overflow: hidden; padding: 42px 0 30px; }
.menu__list                    { display: flex; align-items: center; padding: 0; margin: 0; }
.menu__item                    { text-align: center; display: flex !important; flex-direction: column; align-items: center; gap: 9px; padding: 12px 6px; height: auto; }

/* loop時にズレないよう、JSで data-swiper-slide-index を見て付与した is-up / is-down で段差を出す */
.menu__swiper .swiper-slide.is-up   { transform: translateY(-30px); }
.menu__swiper .swiper-slide.is-down { transform: translateY(30px); }

.menu__media                   { aspect-ratio: 3/2; overflow: hidden; margin: 0 auto; width: 100%; max-width: 240px; }
.menu__media--lg               { max-width: 400px; }
.menu__img                     { width: 100%; height: 100%; object-fit: contain; }
.menu__name                    { font-family: var(--serif); font-size: 1.6rem; color: var(--c-red); display: inline-flex; align-items: center; gap: 9px; margin: 9px auto 6px; padding: 0 6px 6px; border-bottom: 1px solid var(--c-red); font-weight: 500; letter-spacing: .09em; }
.menu__name-deco               { display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: var(--c-red); }
.menu__desc                    { font-size: 1.4rem; line-height: 1.8; color: var(--c-text-sub); padding: 0 6px; max-width: 201px; }

.menu__nav                     { position: absolute; top: 50%; width: 48px; height: 48px; border-radius: 50%; background: var(--c-red); color: #fff; display: flex; align-items: center; justify-content: center; transform: translateY(-50%); z-index: 5; box-shadow: 0 3px 12px rgba(0,0,0,.15); transition: background-color .3s ease, box-shadow .3s ease; cursor: pointer; border: none; }
.menu__nav:hover               { background: var(--c-red-dark); box-shadow: 0 6px 18px rgba(0,0,0,.22); }
.menu__nav:active              { box-shadow: 0 2px 6px rgba(0,0,0,.18); }
.menu__nav--prev               { left: 0; }
.menu__nav--next               { right: 0; }
.menu__nav.is-disabled         { opacity: .36; cursor: default; pointer-events: none; }
.menu__nav-arrow               { width: 0; height: 0; border-style: solid; }
.menu__nav--prev .menu__nav-arrow { border-width: 6px 9px 6px 0; border-color: transparent #fff transparent transparent; margin-right: 3px; }
.menu__nav--next .menu__nav-arrow { border-width: 6px 0 6px 9px; border-color: transparent transparent transparent #fff; margin-left: 3px; }

.menu__pagination              { display: flex; justify-content: center; gap: 9px; margin-top: 9px; }
.menu__pagination .swiper-pagination-bullet { width: 9px; height: 9px; background: #d6cfc1; opacity: 1; border-radius: 50%; transition: background-color .3s ease, transform .3s ease; }
.menu__pagination .swiper-pagination-bullet-active { background: var(--c-red); transform: scale(1.4); }

.menu__btn-wrap                { text-align: center; margin-top: 30px; }


/* =========================================================
   Section: Gallery — Swiper (continuous marquee)
========================================================= */
.gallery                       { overflow: hidden; }
.gallery__swiper               { width: 100%; }
.gallery__list                 { display: flex; padding: 0; margin: 0; }
.gallery__swiper .swiper-wrapper{ transition-timing-function: linear !important; }
.gallery__item                 { aspect-ratio: 18/12; overflow: hidden; height: auto; }
.gallery__img                  { width: 100%; height: 100%; object-fit: cover; }


/* =========================================================
   Section: Space
========================================================= */
.space                         { background: var(--c-bg); padding: 100px 30px 100px; }
.space__inner                  { max-width: 801px; margin: 0 auto; text-align: center; }
.space__text                   { font-size: 1.5rem; line-height: 2.1;  color: var(--c-text); }
.space__btn-wrap               { margin-top: 12px; }


/* =========================================================
   Section: News
========================================================= */
.news                          { background: #f2f2f2; padding: 100px 30px 100px; }
.news__inner                   { max-width: 960px; margin: 0 auto; }
.news__heading                 { display: flex; align-items: center; justify-content: center; gap: 15px; margin-bottom: 50px; color: var(--c-red); position: relative; }
.news__heading-text            { font-family: var(--serif); font-size: 3.2rem; font-weight: 500;   position: relative; }
.news__deco                    { width: 36px; height: 36px; flex-shrink: 0; }
.news__heading-text::before    { content: url(../img/icon_news.svg); width: 33px; display: inline-block; position: absolute; left: -25px; top: -25px;  }

.news__card                    { background: transparent; border: 1px dashed var(--c-red); border-radius: 3px; padding: 30px; display: grid; grid-template-columns: 1fr 400px; gap: 30px; align-items: center; box-shadow: 0 0 0 6px #fff, 0 0 0 9px var(--c-red); background-color: #fff; }
.news__title                   { font-family: var(--serif); font-size: 2.4rem; font-weight: 500; color: var(--c-red); border-bottom: 1px dashed var(--c-red); padding-bottom: 18px; margin-bottom: 21px; line-height: 1.5; letter-spacing: .03em; }
.news__text                    { font-size: 1.6rem; line-height: 2.1; color: var(--c-text); }
.news__link                    { display: inline-block; margin-top: 21px; color:var(--c-yellow-dk); font-size: 1.4rem; border-bottom: 1px solid var(--c-red); padding-bottom: 0; }
.news__media                   { aspect-ratio: 3/2; background: #fff; overflow: hidden; border-radius: 10px; }
.news__img                     { width: 100%; height: 100%; object-fit: cover; display: block; }
.news__img--blank              { background: #d9d9d9; }


/* =========================================================
   Section: Parking
========================================================= */
.parking                       { background: #fff; padding: 100px 30px 150px; }
.parking__inner                { max-width: 960px; margin: 0 auto; }
.parking__card                 { display: grid; grid-template-columns: 1fr 1fr; gap: 57px; align-items: start; }

.parking__media                { background: #fafafa; border-radius: 3px; overflow: hidden; }
.parking__caption              { background: var(--c-yellow); color: var(--c-text); font-size: 1.5rem; font-weight: 700; padding: 9px 18px; letter-spacing: .09em; }
.parking__img                  { width: 100%; height: auto; display: block; }
.parking__map-link             { display: inline-flex; align-items: center; gap: 9px; color: var(--c-red); font-size: 1.6rem; border-bottom: 1px solid var(--c-red); margin-bottom: 50px; padding-bottom: 5px;  }
.parking__map-icon             { content: url(../img/icon_map.svg); width: 20px; height: 20px; }
.parking__map-icon::after      { content: ""; position: absolute; top: 3px; right: 3px; width: 6px; height: 6px; border-top: 2px solid var(--c-red); border-right: 2px solid var(--c-red); transform: rotate(45deg); }

.parking__text                 { font-size: 1.5rem; line-height: 2.1; color: var(--c-text); margin-bottom: 20px; }
.parking__btn-wrap             { text-align: left; }


/* =========================================================
   Page Top
========================================================= */
.pagetop                       { position: absolute; right: 100px; top:-75px; width: 50px; min-height: 150px; border-radius: 25px; background: var(--c-text); color: #fff; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 9px; padding: 15px 0; z-index: 50;}
.pagetop:hover                 { background: var(--c-red); opacity: 1; }
.pagetop__arrow                { width: 0; height: 0; border-style: solid; border-width: 0 3px 6px 3px; border-color: transparent transparent #fff transparent; }
.pagetop__text                 { font-family: var(--serif); font-size: 1.4rem; letter-spacing: .15em; writing-mode: vertical-rl; position: relative; }
.pagetop__text::before         { content: url(../img/icon_arrow_white2.svg); width: 5px; position: absolute; top: -20px; z-index: 999; height: 5px; display: inline-block; }


/* =========================================================
   Footer
========================================================= */
.footer                        { background: var(--c-red); color: #fff; padding: 100px 30px; position: relative; }
.footer__inner                 { max-width: var(--max-w); width: 100%; margin: 0 auto; display: grid; grid-template-columns: 230px 1fr 1fr; gap: 50px; align-items: start; }

.footer__brand                 { text-align: center; padding-top: 9px; color: #fff; max-width: 200px; width: 100%; }
.footer__brand-cn              { font-family: var(--serif); font-size: 1.4rem; letter-spacing: .36em; padding-left: .36em; margin-bottom: 9px; }
.footer__brand-main            { font-family: var(--serif); font-size: 5.1rem; font-weight: 700; letter-spacing: .12em; line-height: 1; margin: 6px 0 9px; padding-left: .12em; }
.footer__brand-main span       { display: inline-block; }
.footer__brand-jp              { font-family: var(--serif); font-size: 1.4rem; letter-spacing: .36em; padding-left: .36em; }

.footer__nav                   { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; padding-top: 6px; }
.footer__nav-col               { display: flex; flex-direction: column; gap: 9px; }
.footer__nav-item              { font-size: 1.4rem; line-height: 1.5; }
.footer__nav-item--parent      { font-weight: 500; }
.footer__nav-item:not(.footer__nav-item--parent) { padding-left: 18px; font-size: 1.4rem; opacity: .9; }
.footer__nav-item--gap         { margin-top: 12px; }
.footer__nav-link              { color: #fff; }
.footer__nav-link:hover        { opacity: .7; }

.footer__info                  { display: flex; flex-direction: column; align-items: flex-start; gap: 18px; padding-top: 6px; }
.footer__tel                   { display: flex; justify-content: center; align-items: center; max-width:300px; width: 100%; min-height: 75px;  align-items: center; gap: 9px; background: rgba(255, 255, 255, .13); color: #fff; border-radius: 10px; font-family: var(--serif); font-size: 3.2rem; font-weight: 500;  }
.footer__tel:hover             { opacity: 1; background: #f6e6e6; }
.footer__tel-icon              { display: inline-flex; }
.footer__tel-icon svg          { fill: var(--c-red); }
.footer__address               { font-size: 1.4rem; color: #fff; }
.footer__tel-num::before       { content: url(../img/icon_tel.svg); display: inline-block; width: 23px; height: 23px; margin-right: 10px; }

.footer__sns                   { display: flex; gap: 30px; margin-top: 6px; }
.footer__sns-link              { display: inline-flex; flex-direction: column; align-items: center; gap: 6px; color: #fff; }
.footer__sns-link:hover        { opacity: .7; }
.footer__sns-icon              { display: inline-flex; align-items: center; justify-content: center; width: 50px; height: 50px; background-color: #fff; background: rgba(255, 255, 255, .13); border-radius: 50%; }
.footer__sns-icon img          { color: #fff; width: 30px; height: 30px; }
.footer__sns-text              { font-size: 1.4rem; line-height: 1.5; text-align: center; letter-spacing: .03em; }

.footer__bottom                { max-width: var(--max-w); margin: 51px auto 0; display: flex; justify-content: space-between; align-items: center; font-size: 1.4rem; }
.footer__privacy               { color: #fff; opacity: .9; }
.footer__copy                  { color: #fff; opacity: .9; font-size: 1.4rem; }


/* =========================================================
   Body / Overlay state
========================================================= */
body.is-nav-open               { overflow: hidden; }


/* =========================================================
   Responsive — Tablet (≤1101px)
========================================================= */
@media (max-width: 1101px) {
    .gnav__list                { padding: 9px 12px; }
    .gnav__link                { font-size: 1.4rem; padding: 6px 9px; }
    .header__cta               { padding: 12px 21px; font-size: 1.4rem; }
    .popular__list             { grid-template-columns: repeat(2, 1fr); gap: 24px; }
    .menu__slider              { padding: 30px 51px 51px; }
}


/* =========================================================
   Responsive — SP (≤768px)
========================================================= */
@media (max-width: 768px) {
    body                       { font-size: 1.4rem; }
    .br                        { display: block; }

    /* Buttons */
    .btn                       { padding: 15px 20px; font-size: 1.6rem; }
    .heading-brand             { font-size: 2.4rem; gap: 15px; line-height: 150%; }
    .heading-brand::before,
    .heading-brand::after      { width: 36px; }

    /* Loading */
    .loading__brand-cn         { font-size: 1.4rem; }
    .loading__brand-main       { font-size: 4.5rem; }
    .loading__brand-jp         { font-size: .9rem; }
    .loading__bar              { width: 150px; }
    .loading__logo             { width: 150px;  }

    /* Header */
    .header                    { padding: 0; }
    
   .header__logo               { width: 200px; height: 80px; }
    .header__logo-cn           { font-size: .9rem; }
    .header__logo-main         { font-size: 2.1rem; margin: 3px 0 3px; }
    .header__logo-jp           { font-size: .9rem; }
    .gnav                      { display: none; }
    .header__cta               { display: none; }
    .header__logo_img          { width: 80px; }
    .hamburger                 { top: 10px; right: 20px; }
    .header__sns-iconWrap      { display: block; }
    .header__sns-icon          { width: 40px; height: 40px; position: absolute; right: 90px; top: 20px; border-radius: 50%; display: flex; justify-content: center; align-items: center; background: rgba(165, 28, 28, .18); }
    .header__sns-icon img      { width: 24px; height: 24px; }

    /* Drawer */
    .drawer                    { width: 100%; }
    .drawer__inner             { padding: 21px 24px 33px; }

    /* Hero */
    .hero                      { min-height: 519px; }
    .hero__inner               { padding: 0 24px; }
    .hero__catch               { font-size: 3rem; line-height: 1.5; margin-bottom: 18px; }
    .hero__lead                { font-size: 1.4rem; line-height: 1.8; }
    .hero__cta                 { display: inline-flex; max-width: 300px; width: 100%; justify-content: center;  align-items: center; gap: 12px; position: absolute; left: 50%; bottom: 30px; transform: translateX(-50%); background: var(--c-red); color: #fff; padding: 12px 30px; border-radius: 999px; font-size: 1.4rem; letter-spacing: .09em; z-index: 3; box-shadow: 0 3px 18px rgba(0,0,0,.27); }
    .hero__cta-arrow           { display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; border-radius: 50%; background: #fff; }
    .hero__cta-arrow::after    { content: ""; width: 0; height: 0; border-style: solid; border-width: 3px 0 3px 6px; border-color: transparent transparent transparent var(--c-red); margin-left: 3px; }

    /* Fair */
    .fair                      { padding: 50px 30px; }
    .fair__card                { padding: 30px 21px; box-shadow: 0 0 0 3px #fff, 0 0 0 6px var(--c-red); }
    .fair__heading             { font-size: 1.8rem; margin-bottom: 21px; }
    .fair__body                { grid-template-columns: 1fr; gap: 21px; }
    .fair__media               { aspect-ratio: 12/9; }
    .fair__title               { font-size: 1.5rem; }
    
    /* Popular */
    .popular                   { padding: 21px 18px 60px; }
    .popular__list             { grid-template-columns: repeat(2, 1fr); gap: 18px; }
    .popular__name             { font-size: 1.4rem; line-height: unset; }
    .popular__price            { font-size: 1.6rem; }
    .popular__tag              { font-size: 1.2rem; letter-spacing: 0; }
    .popular__head             { flex-direction: column; gap: 0px; }
    .popular__yen              { font-size: 1.4rem; }
    .popular__item             { gap: unset; }

    /* Course */
    .course                    { grid-template-columns: 1fr; }
    .course__img               { min-height: 240px; }
    .course__body              { padding: 50px 30px;}
    .course__title             { font-size: 2.4rem; }
    .course__list-item         { font-size: 1.4rem; }
    .course__price             { font-size: 2.1rem; }
    .course__btn               { margin-left: auto; margin-right: auto; }

    /* Menu */
    .menu                      { padding: 60px 0 81px; }
    .menu__title               { writing-mode: vertical-rl; font-size: 2.4rem; letter-spacing: .3em; margin: 0 auto 21px; }
    .menu__slider              { padding: 21px 36px 51px; }
    .menu__swiper              { padding: 21px 0 21px; }
    .menu__media               { max-width: 201px; }
    .menu__media--lg           { max-width: 222px; }
    .menu__swiper .swiper-slide.is-up,
    .menu__swiper .swiper-slide.is-down { transform: none; }
    .menu__nav                 { width: 39px; height: 39px; }
    .menu__nav--prev .menu__nav-arrow { border-width: 6px 6px 6px 0; }
    .menu__nav--next .menu__nav-arrow { border-width: 6px 0 6px 6px; }

    /* Gallery */
    .gallery__item             { aspect-ratio: 12/9; }

    /* Space */
    .space                     { padding: 50px 30px; }
    .space__text               { text-align: left; }

    /* News */
    .news                      { padding: 50px 30px; }
    .news__heading-text        { font-size: 2.4rem; }
    .news__deco                { width: 30px; height: 30px; }
    .news__card                { grid-template-columns: 1fr; padding: 30px 21px; box-shadow: 0 0 0 6px var(--c-bg3), 0 0 0 9px var(--c-red); }
    .news__title               { font-size: 2.0rem; }
    .news__media               { aspect-ratio: 18/12; }
    .news__text                { font-size: 1.4rem; line-height: 180%; }

    /* Parking */
    .parking                   { padding: 50px 30px;}
    .parking__card             { grid-template-columns: 1fr; gap: 30px; }
    .parking__btn-wrap a       { margin-left: auto; margin-right: auto; }

    /* Page Top */
    .pagetop                   { right: 30px;}

    /* Footer */
    .footer                    { padding: 100px 50px 100px; }
    .footer__inner             { grid-template-columns: 1fr;  text-align: center; }
    .footer__nav               { grid-template-columns: 1fr 1fr; text-align: left; max-width: 321px; margin: 0 auto; }
    .footer__info              { align-items: center; }
    .footer__address           { text-align: left; font-size: 1.4rem; }
    .footer__bottom            { flex-direction: column-reverse; gap: 9px; padding: 18px 24px; }
    .footer__sns               { gap: 36px; }
    .footer__brand            {  width: 150px; }
}


/* =========================================================
   Responsive — Small SP (≤480px)
========================================================= */
@media (max-width: 480px) {
    .hero__catch               { font-size: 2.7rem; }
}


/* =========================================================
   Menu Page (page-menu.php)
========================================================= */
.menupage                                  { padding: 200px 0 150px; background: var(--c-bg); }

/* ---------- Page header ---------- */
.menupage__header                          { max-width: var(--max-w); margin: 0 auto 80px; padding: 0 24px; text-align: center; }
.menupage__title                           { display: flex; flex-direction: column; align-items: center; gap: 8px; margin: 0 0 32px; }
.menupage__title-jp                        { font-family: var(--serif); font-size: 4.0rem; font-weight: 500; color: var(--c-red); letter-spacing: .15em; position: relative; padding: 0 56px; }
.menupage__title-jp::before,
.menupage__title-jp::after                 { content: ""; position: absolute; top: 50%; width: 40px; height: 1px; background: var(--c-red); }
.menupage__title-jp::before                { left: 0; }
.menupage__title-jp::after                 { right: 0; }
.menupage__title-en                        { font-family: var(--serif); font-size: 1.3rem; color: var(--c-text-sub); letter-spacing: .3em; }

/* ---------- Anchor nav ---------- */
.menupage__anchor                          { margin-top: 24px; }
.menupage__anchor-list                     { display: flex; flex-wrap: wrap; justify-content: center; gap: 0 16px; row-gap: 8px; list-style: none; padding: 0; margin: 0; font-family: var(--serif); }
.menupage__anchor-item                     { display: inline-flex; align-items: center; }
.menupage__anchor-item + .menupage__anchor-item::before { content: "・"; margin-right: 16px; color: var(--c-text-sub); }
.menupage__anchor-link                     { display: inline-flex; align-items: center; gap: 6px; font-size: 1.6rem; color: var(--c-text); text-decoration: none; transition: color .2s; }
.menupage__anchor-link:hover               { color: var(--c-red); }
.menupage__anchor-arrow                    { font-size: 1.0rem; color: var(--c-red); transform: translateY(1px); }

/* ---------- Section common ---------- */
.menusec                                   { margin: 0 0 100px; scroll-margin-top: calc(var(--header-h) + 16px); }
.menusec__inner                            { max-width:960px; width: 100%;;  margin: 0 auto; padding: 56px 0px; }
.menusec__intro                            { text-align: center; line-height: 1.9; color: var(--c-text); margin: -20px 0 50px; font-size: 1.5rem; }
.menusec__note                             { text-align: right; font-size: 1.3rem; color: var(--c-text-sub); margin: 24px 0 0; }
.menusec__btn-wrap                         { display: flex; justify-content: center; margin: 40px 0 0; }
.menusec__btn                              { min-width: 320px; }

/* ---------- Hero strip ---------- */
.menusec__hero                             { position: relative; max-width: 960px; width: 100%; height: 400px; overflow: hidden; margin-left: auto; margin-right: auto; }
.menusec__hero-img                         { width: 100%; height: 100%; object-fit: cover; display: block; }
.menusec__hero-overlay                     { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px; color: #fff; text-align: center; background: linear-gradient(rgba(0,0,0,.15), rgba(0,0,0,.20)); }
.menusec__hero-jp                          { font-family: var(--serif); font-size: 3.6rem; font-weight: 500; letter-spacing: .15em; margin: 0; }
.menusec__hero-time                        { font-family: var(--serif); font-size: 2.0rem; letter-spacing: .12em; margin: 0; }
.menusec__hero-time span                   { font-size: 1.6rem; opacity: .9; }

/* 画像なしバリエーション（写真未配置時のあしらい） */
.menusec__hero--noimg                                 { height: auto; overflow: visible; background: linear-gradient(180deg, var(--c-bg) 0%, var(--c-bg2) 100%); padding: 60px 24px 52px; position: relative; border-top: 1px solid rgba(165, 28, 28, .35); border-bottom: 1px solid rgba(165, 28, 28, .35); }
.menusec__hero--noimg::before,
.menusec__hero--noimg::after                          { content: ""; position: absolute; left: 50%; transform: translateX(-50%); width: calc(100% - 16px); max-width: 920px; height: 1px; background: rgba(165, 28, 28, .18); }
.menusec__hero--noimg::before                         { top: 6px; }
.menusec__hero--noimg::after                          { bottom: 6px; }
.menusec__hero--noimg .menusec__hero-overlay          { position: static; inset: auto; background: transparent; color: var(--c-red); gap: 18px; padding: 0; }
.menusec__hero--noimg .menusec__hero-jp               { display: inline-flex; align-items: center; justify-content: center; gap: 28px; font-size: 3.8rem; line-height: 1.2; }
.menusec__hero--noimg .menusec__hero-jp::before,
.menusec__hero--noimg .menusec__hero-jp::after        { content: ""; display: inline-block; width: 48px; height: 1px; background: var(--c-red); }
.menusec__hero--noimg .menusec__hero-time             { color: var(--c-red); font-size: 1.5rem; letter-spacing: .35em; padding-left: .35em; opacity: .75; position: relative; }
.menusec__hero--noimg .menusec__hero-time::before     { content: "◆"; display: block; font-size: .8rem; color: var(--c-red); opacity: .6; margin-bottom: 10px; letter-spacing: 0; padding-left: 0; }

/* ---------- Signature card list (3-col round images) ---------- */
.signature-list                            { list-style: none; padding: 0; margin: 0 0 60px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 56px 40px; }
.signature                                 { text-align: center; }
.signature__media                          { width: 300px; height: 300px; margin: 0 auto 18px; overflow: hidden; background: #fff; box-shadow: 0 6px 18px rgba(0,0,0,.08); }
.signature__media img                      { width: 100%; height: 100%; object-fit: cover; display: block; }
.signature__name                           { display: flex; align-items: center; justify-content: center; gap: 12px; font-family: var(--serif); font-size: 1.8rem; color: var(--c-red); margin: 0 0 10px; line-height: 1.4; }
.signature__name-deco                      { display: inline-block; width: 18px; height: 1px; background: var(--c-red); flex-shrink: 0; }
.signature__price                          { font-family: var(--serif); font-size: 2.4rem; color: var(--c-text); margin: 0 0 10px; }
.signature__yen                            { font-size: 1.4rem; margin-left: 2px; }
.signature__sub                            { font-size: 1.2rem; color: var(--c-text-sub); margin-left: 8px; }
.signature__desc                           { font-size: 1.4rem; line-height: 1.8; color: var(--c-text); margin: 0; padding: 0 8px; text-align: left; }

/* ---------- Menu price tables (2-col boxes) ---------- */
.menutables                                { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; margin-top: 24px; }
.menutable                                 { background: #fff; border: 1px solid var(--c-line); border-radius: 12px; padding: 28px 28px 24px; }
.menutable__title                          { font-family: var(--serif); font-size: 1.8rem; color: var(--c-red); margin: 0 0 14px; padding-bottom: 10px; border-bottom: 1px solid var(--c-line); letter-spacing: .05em; }
.menutable__list                           { list-style: none; padding: 0; margin: 0; }
.menutable__row                            { display: flex; align-items: baseline; justify-content: space-between; gap: 14px; padding: 12px 0; border-bottom: 1px dotted var(--c-line); }
.menutable__row:last-child                 { border-bottom: none; }
.menutable__name                           { flex: 1; font-size: 1.4rem; line-height: 1.6; color: var(--c-text); text-align: left; }
.menutable__name small                     { display: inline; font-size: 1.1rem; color: var(--c-text-sub); margin-left: 4px; }
.menutable__price                          { flex-shrink: 0; font-family: var(--serif); font-size: 1.5rem; color: var(--c-text); white-space: nowrap; }

/* ---------- Course cards (Dinner 2-col) ---------- */
.course-cols                               { display: grid; grid-template-columns: 1fr 1fr; gap: 32px; margin: 0 0 80px; }
.course-card                               { background: #fff; border: 1px solid var(--c-line); border-radius: 12px; padding: 28px; display: flex; flex-direction: column; }
.course-card__sub                          { font-family: var(--serif); font-size: 1.4rem; color: var(--c-red); letter-spacing: .15em; margin: 0 0 8px; text-align: center; }
.course-card__title                        { font-family: var(--serif); font-size: 2.2rem; color: var(--c-text); margin: 14px 0 8px; text-align: center; }
.course-card__lead                         { font-size: 1.3rem; color: var(--c-text-sub); text-align: center; margin: 0 0 18px; text-align: left; }
.course-card__media                        { width: 100%; aspect-ratio: 4 / 3; overflow: hidden; border-radius: 8px; margin-top: 4px; }
.course-card__media img                    { width: 100%; height: 100%; object-fit: cover; display: block; }
.course-card__list                         { list-style: none; padding: 0; margin: 0 0 22px; }
.course-card__list li                      { font-size: 1.4rem; line-height: 1.9; color: var(--c-text); padding-left: 20px; position: relative; }
.course-card__list li::before              { content: "✿"; position: absolute; left: 0; top: 0; color: var(--c-red); font-size: 1.2rem; }
.course-card__price                        { margin-top: auto; padding-top: 12px; border-top: 1px solid var(--c-line); text-align: right; font-family: var(--serif); font-size: 2.2rem; color: var(--c-red); }
.course-card__price-tax                    { font-size: 1.2rem; color: var(--c-text-sub); margin-left: 4px; }

/* =========================================================
   Menu Page — Tablet (≤1101px)
========================================================= */
@media (max-width: 1101px) {
    .signature-list                        { gap: 40px 28px; }
    .signature__media                      { width: 160px; height: 160px; }
}

/* =========================================================
   Menu Page — SP (≤768px)
========================================================= */
@media (max-width: 768px) {
    .menupage                              { padding: 110px 0 80px; }
    .menupage__header                      { margin-bottom: 50px; padding: 0 20px; }
    .menupage__title-jp                    { font-size: 2.8rem; padding: 0 36px; }
    .menupage__title-jp::before,
    .menupage__title-jp::after             { width: 24px; }
    .menupage__title-en                    { font-size: 1.1rem; }
    .menupage__anchor-list                 { gap: 0 10px; row-gap: 6px; }
    .menupage__anchor-item + .menupage__anchor-item::before { margin-right: 10px; }
    .menupage__anchor-link                 { font-size: 1.4rem; }

    .menusec                               { margin-bottom: 64px; }
    .menusec__inner                        { padding: 40px 20px 0; }
    .menusec__intro                        { font-size: 1.4rem; margin: -10px 0 36px; }

    .menusec__hero                         { height: 220px; }
    .menusec__hero-jp                      { font-size: 3.0rem; }
    .menusec__hero-time                    { font-size: 1.5rem; }
    .menusec__hero-time span               { font-size: 1.2rem; display: block; margin-top: 4px; }

    .menusec__hero--noimg                          { height: auto; padding: 44px 20px 40px; }
    .menusec__hero--noimg .menusec__hero-jp        { font-size: 2.8rem; gap: 18px; }
    .menusec__hero--noimg .menusec__hero-jp::before,
    .menusec__hero--noimg .menusec__hero-jp::after { width: 32px; }
    .menusec__hero--noimg .menusec__hero-time      { font-size: 1.3rem; letter-spacing: .3em; padding-left: .3em; }

    .signature-list                        { grid-template-columns: 1fr; gap: 40px; max-width: 320px; margin: 0 auto 40px; }
    .signature__media                      { width: 180px; height: 180px; }
    .signature__name                       { font-size: 1.7rem; }
    .signature__price                      { font-size: 2.0rem; }
    .signature__sub                        { display: block; font-size: 1.1rem; margin: 4px 0 0; }
    .signature__desc                       { font-size: 1.3rem; line-height: 1.7; }

    .menutables                            { grid-template-columns: 1fr; gap: 20px; }
    .menutable                             { padding: 22px 20px 18px; }
    .menutable__title                      { font-size: 1.5rem; }
    .menutable__name                       { font-size: 1.3rem; }
    .menutable__name small                 { font-size: 1.05rem; }
    .menutable__price                      { font-size: 1.4rem; }

    .course-cols                           { grid-template-columns: 1fr; gap: 24px; margin-bottom: 50px; }
    .course-card                           { padding: 22px 20px; }
    .course-card__title                    { font-size: 1.9rem; }
    .course-card__list li                  { font-size: 1.3rem; }
    .course-card__price                    { font-size: 1.9rem; text-align: center; }
}

/* =========================================================
   Menu Page — Small SP (≤480px)
========================================================= */
@media (max-width: 480px) {
    .menusec__hero                         { height: 180px; }
    .menusec__hero-jp                      { font-size: 2.6rem; }
    .menusec__hero-time                    { font-size: 1.3rem; }
    .signature__media                      { width: 160px; height: 160px; }

    .menusec__hero--noimg                          { height: auto; padding: 36px 16px 32px; }
    .menusec__hero--noimg .menusec__hero-jp        { font-size: 2.4rem; gap: 14px; }
    .menusec__hero--noimg .menusec__hero-jp::before,
    .menusec__hero--noimg .menusec__hero-jp::after { width: 24px; }
    .menusec__hero--noimg .menusec__hero-time      { font-size: 1.15rem; letter-spacing: .25em; padding-left: .25em; }
}


/* =========================================================
   History Page (page-history.php)
========================================================= */
.historypage                               { padding: 200px 0 150px; background: var(--c-bg); overflow: hidden; }

/* ---------- ページヘッダー ---------- */
.historypage__header                       { max-width: 800px; margin: 0 auto 80px; padding: 0 24px; text-align: center; }
.historypage__title                        { font-family: var(--serif); font-size: 3.4rem; font-weight: 500; color: var(--c-red); letter-spacing: .2em; margin: 0 0 60px; }

.historypage__catch-wrap                   { position: relative; display: inline-flex; justify-content: center; padding: 20px 0 40px; margin: 0 auto 40px; }
.historypage__catch-jp                     { writing-mode: vertical-rl; font-family: var(--serif); font-size: 3.2rem; line-height: 2.0; letter-spacing: 50%; color: var(--c-text); margin: 0; padding: 0 14px; position: relative; z-index: 2; }
.historypage__catch-en                     { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); font-family: var(--serif); font-size: 5.6rem; letter-spacing: .25em; color: rgba(0, 0, 0, .10); white-space: nowrap; z-index: 1; pointer-events: none; }

.historypage__lead                         { font-family: var(--sans); font-size: 1.6rem; line-height: 2.1; color: var(--c-text); margin: 0; }

/* ---------- ヒーロー画像 ---------- */
.historypage__hero                         { width: 100%; max-width: 1400px; margin: 0 auto 100px; padding: 0 24px; }
.historypage__hero img                     { width: 100%; height: auto; aspect-ratio: 16 / 7; object-fit: cover; display: block; background: #d9d9d9; }

/* ---------- 共通セクション ---------- */
.historysec                                { position: relative; margin: 0 0 120px; padding: 60px 0; }
.historysec__inner                         { max-width: var(--max-w); margin: 0 auto; padding: 0 24px; display: grid; grid-template-columns: 1.05fr 1fr; gap: 64px; align-items: center; position: relative; z-index: 2; }
.historysec--reverse .historysec__media    { order: 2; }
.historysec--reverse .historysec__body     { order: 1; }

.historysec__media img                     { width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; display: block; background: #d9d9d9; }
.historysec--reverse .historysec__media img{ aspect-ratio: 4 / 3; }

.historysec__body                          { display: flex; flex-direction: column; gap: 28px; }
.historysec__body--vertical                { flex-direction: row-reverse; align-items: flex-start; gap: 40px; min-height: 320px; }

.historysec__label                         { font-family: var(--serif); font-size: 3.2rem; font-weight: 500; color: var(--c-red); margin: 0; letter-spacing: .12em; line-height: 1.6; }
.historysec__body--vertical .historysec__label { writing-mode: vertical-rl; text-orientation: upright; }

.historysec__text                          { font-family: var(--sans); font-size: 1.6rem; line-height: 2.1; color: var(--c-text); margin: 0; letter-spacing: .04em; }
.historysec__body--vertical .historysec__text  { writing-mode: vertical-rl; text-orientation: upright; max-height: 360px; }
/* 2桁数字は縦中横（横並び1マス）にする */
.historysec__body--vertical .historysec__text .tcy { text-combine-upright: all; -webkit-text-combine: horizontal; }

/* ---------- ウォーターマーク（背面の英字） ---------- */
.historysec__watermark                     { position: absolute; font-family: var(--serif); font-weight: 500; font-size: 15.2rem; line-height: 1.1; letter-spacing: .04em; color: rgba(0, 0, 0, .10); pointer-events: none; user-select: none; z-index: 1; white-space: nowrap; }
.historysec__watermark--bottom-left        { left: 60px; bottom: 30px; }
.historysec__watermark--center             { left: 50%; top: 50%; transform: translate(-50%, -50%); text-align: center; }
.historysec__watermark--right-vertical     { right: 40px; top: 50%; transform: translateY(-50%); writing-mode: vertical-rl; line-height: 1.05; }

/* ---------- ネーミングストーリー ---------- */
.historysec--name                          { padding: 80px 0 60px; }
.historysec__inner--center                 { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 22px; }
.historysec__label-vertical                { writing-mode: vertical-rl; font-family: var(--serif); font-size: 2.8rem; color: var(--c-red); letter-spacing: .25em; margin: 0; }
.historysec__sub-en                        { font-family: var(--serif); font-size: 2.4rem; letter-spacing: .25em; color: var(--c-text-sub); margin: 0; }
.historysec__text-center                   { font-family: var(--sans); font-size: 1.6rem; line-height: 2.0; color: var(--c-text); margin: 12px 0 0; max-width: 640px; }

/* ---------- 締めキャッチ ---------- */
.historypage__outro                        { text-align: center; padding: 80px 24px 40px; }
.historypage__outro-text                   { font-family: var(--serif); font-size: 2.2rem; letter-spacing: .15em; color: var(--c-text); margin: 0; }

/* =========================================================
   History Page — Tablet (≤1101px)
========================================================= */
@media (max-width: 1101px) {
    .historysec__inner                     { gap: 40px; }
    .historysec__watermark                 { font-size: 6.0rem; }
    .historysec__watermark--bottom-left    { left: 24px; bottom: 12px; }
    .historysec__watermark--right-vertical { right: 20px; }
}

/* =========================================================
   History Page — SP (≤768px)
========================================================= */
@media (max-width: 768px) {
    .historypage                           { padding: 110px 0 60px; }

    .historypage__header                   { margin-bottom: 50px; padding: 0 20px; }
    .historypage__title                    { font-size: 2.6rem; margin-bottom: 40px; }
    .historypage__catch-wrap               { padding: 16px 0 28px; margin-bottom: 28px; }
    .historypage__catch-jp                 { font-size: 1.9rem; line-height: 1.9; padding: 0 8px; }
    .historypage__catch-en                 { font-size: 1.0rem; }
    .historypage__lead                     { font-size: 1.3rem; line-height: 2.0; }

    .historypage__hero                     { margin-bottom: 60px; padding: 0 20px; }
    .historypage__hero img                 { aspect-ratio: 4 / 3; }

    .historysec                            { margin-bottom: 70px; padding: 40px 0; }
    .historysec__inner                     { grid-template-columns: 1fr; gap: 28px; padding: 0 20px; }
    .historysec--reverse .historysec__media{ order: 0; }
    .historysec--reverse .historysec__body { order: 0; }

    /* SPでは縦書きを全て横書きに */
    .historysec__body                      { flex-direction: column; gap: 16px; min-height: 0; }
    .historysec__body--vertical            { flex-direction: column; align-items: flex-start; gap: 16px; }
    .historysec__body--vertical .historysec__label,
    .historysec__body--vertical .historysec__text { writing-mode: horizontal-tb; max-height: none; }
    .historysec__media img                 { aspect-ratio: 4 / 5; object-fit: contain; background: var(--c-bg); }
    .historysec--reverse .historysec__media img { aspect-ratio: 4 / 3; object-fit: cover; }

    .historysec__label                     { font-size: 1.8rem; }
    .historysec__text                      { font-size: 1.3rem; line-height: 1.95; }

    .historysec__watermark                 { font-size: 3.6rem; line-height: 1.1; }
    .historysec__watermark--bottom-left    { left: 16px; bottom: -8px; }
    .historysec__watermark--center         { font-size: 3.0rem; }
    .historysec__watermark--right-vertical { right: 8px; font-size: 3.4rem; }

    .historysec--name                      { padding: 50px 0 30px; }
    .historysec__label-vertical            { font-size: 1.8rem; }
    .historysec__sub-en                    { font-size: 1.2rem; }
    .historysec__text-center               { font-size: 1.3rem; }

    .historypage__outro                    { padding: 50px 20px 20px; }
    .historypage__outro-text               { font-size: 1.4rem; }
}

/* =========================================================
   History Page — Small SP (≤480px)
========================================================= */
@media (max-width: 480px) {
    .historypage__title                    { font-size: 2.2rem; }
    .historypage__catch-jp                 { font-size: 1.7rem; }
    .historysec__watermark--bottom-left    { font-size: 3.0rem; }
}


/* =========================================================
   Space Page (page-space.php)
========================================================= */
.spacepage                                 { padding: 200px 0 0; background: var(--c-bg); }

/* ---------- ページヘッダー ---------- */
.spacepage__header                         { max-width: 900px; margin: 0 auto 60px; padding: 0 24px; text-align: center; }
.spacepage__title                          { display: flex; flex-direction: column; align-items: center; gap: 8px; margin: 0 0 32px; }
.spacepage__title-jp                       { font-family: var(--serif); font-size: 4.0rem; font-weight: 500; color: var(--c-red); letter-spacing: .15em; position: relative; padding: 0 56px; }
.spacepage__title-jp::before,
.spacepage__title-jp::after                { content: ""; position: absolute; top: 50%; width: 40px; height: 1px; background: var(--c-red); }
.spacepage__title-jp::before               { left: 0; }
.spacepage__title-jp::after                { right: 0; }
.spacepage__title-en                       { font-family: var(--serif); font-size: 1.3rem; color: var(--c-text-sub); letter-spacing: .3em; }
.spacepage__lead                           { font-family: var(--sans); font-size: 1.5rem; line-height: 2.0; color: var(--c-text); margin: 0; letter-spacing: .04em; }

/* ---------- ヒーロー画像帯（3カラム） ---------- */
.spacepage__hero                           { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 4px; max-width: 1400px; width: 100%; margin: 0 auto 100px; padding: 0 24px; }
.spacepage__hero-item                      { width: 100%; aspect-ratio: 4 / 3; overflow: hidden; background: #d9d9d9; }
.spacepage__hero-item img                  { width: 100%; height: 100%; object-fit: cover; display: block; }

/* ---------- 座席紹介（2×2グリッド） ---------- */
.seatlist                                  { padding: 0 0 100px; }
.seatlist__inner                           { max-width: var(--max-w); margin: 0 auto; padding: 0 24px; }
.seatlist__grid                            { display: grid; grid-template-columns: 1fr 1fr; gap: 60px 56px; list-style: none; padding: 0; margin: 0; }

.seatcard                                  { display: flex; flex-direction: column; }
.seatcard__title                           { display: flex; align-items: baseline; flex-wrap: wrap; gap: 10px; margin: 0 0 18px; padding: 0 0 14px; border-bottom: 1px solid var(--c-red); }
.seatcard__title-main                      { font-family: var(--serif); font-size: 2.4rem; font-weight: 500; color: var(--c-red); letter-spacing: .12em; line-height: 1.4; }
.seatcard__title-sub                       { font-family: var(--serif); font-size: 1.5rem; color: var(--c-red); letter-spacing: .08em; }

.seatcard__media                           { width: 100%; aspect-ratio: 4 / 3; overflow: hidden; background: #d9d9d9; margin: 0 0 22px; }
.seatcard__media img                       { width: 100%; height: 100%; object-fit: cover; display: block; }

.seatcard__desc                            { font-family: var(--sans); font-size: 1.5rem; line-height: 2.0; color: var(--c-text); margin: 0; letter-spacing: .04em; }

/* ---------- 個室のご案内 ---------- */
.privateroom                               { background: var(--c-bg2); padding: 90px 0 110px; }
.privateroom__inner                        { max-width: var(--max-w); margin: 0 auto; padding: 0 24px; }
.privateroom__title                        { font-family: var(--serif); font-size: 3.2rem; font-weight: 500; color: var(--c-red); letter-spacing: .15em; text-align: center; margin: 0 0 28px; }
.privateroom__lead                         { font-family: var(--sans); font-size: 1.5rem; line-height: 2.0; color: var(--c-text); text-align: center; margin: 0 0 50px; letter-spacing: .04em; }

.privateroom__media                        { width: 100%; max-width: 960px; margin: 0 auto 36px; aspect-ratio: 16 / 9; overflow: hidden; background: #d9d9d9; }
.privateroom__media img                    { width: 100%; height: 100%; object-fit: cover; display: block; }

.privateroom__foot                         { max-width: 960px; margin: 0 auto; display: flex; align-items: center; justify-content: space-between; gap: 32px; flex-wrap: wrap; }
.privateroom__notes                        { list-style: none; padding: 0; margin: 0; font-size: 1.4rem; line-height: 1.9; color: var(--c-text); }
.privateroom__notes li                     { letter-spacing: .04em; }
.privateroom__btn                          { flex-shrink: 0; }


/* =========================================================
   Space Page — Tablet (≤1101px)
========================================================= */
@media (max-width: 1101px) {
    .seatlist__grid                        { gap: 50px 36px; }
}


/* =========================================================
   Space Page — SP (≤768px)
========================================================= */
@media (max-width: 768px) {
    .spacepage                             { padding: 110px 0 0; }

    .spacepage__header                     { margin-bottom: 40px; padding: 0 20px; }
    .spacepage__title                      { margin-bottom: 24px; }
    .spacepage__title-jp                   { font-size: 2.6rem; padding: 0 36px; letter-spacing: .12em; }
    .spacepage__title-jp::before,
    .spacepage__title-jp::after            { width: 24px; }
    .spacepage__title-en                   { font-size: 1.1rem; }
    .spacepage__lead                       { font-size: 1.3rem; line-height: 1.95; text-align: left; }

    .spacepage__hero                       { grid-template-columns: 1fr 1fr 1fr; gap: 3px; padding: 0; margin-bottom: 60px; }
    .spacepage__hero-item                  { aspect-ratio: 1 / 1; }

    .seatlist                              { padding: 0 0 70px; }
    .seatlist__inner                       { padding: 0 20px; }
    .seatlist__grid                        { grid-template-columns: 1fr; gap: 44px; }

    .seatcard__title                       { margin-bottom: 14px; padding-bottom: 10px; }
    .seatcard__title-main                  { font-size: 1.9rem; }
    .seatcard__title-sub                   { font-size: 1.3rem; }
    .seatcard__media                       { margin-bottom: 16px; }
    .seatcard__desc                        { font-size: 1.3rem; line-height: 1.95; }

    .privateroom                           { padding: 60px 0 70px; }
    .privateroom__inner                    { padding: 0 20px; }
    .privateroom__title                    { font-size: 2.4rem; margin-bottom: 20px; }
    .privateroom__lead                     { font-size: 1.3rem; line-height: 1.95; text-align: left; margin-bottom: 32px; }
    .privateroom__media                    { aspect-ratio: 4 / 3; margin-bottom: 24px; }

    .privateroom__foot                     { flex-direction: column; align-items: stretch; gap: 24px; }
    .privateroom__notes                    { font-size: 1.25rem; }
    .privateroom__btn                      { align-self: center; }
}


/* =========================================================
   Space Page — Small SP (≤480px)
========================================================= */
@media (max-width: 480px) {
    .spacepage__title-jp                   { font-size: 2.2rem; }
    .spacepage__hero                       { gap: 2px; }
}


/* =========================================================
   Access Page (page-access.php)
========================================================= */
.accesspage                                { padding: 200px 0 150px; background: var(--c-bg); }

/* ---------- ページヘッダー ---------- */
.accesspage__header                        { max-width: 900px; margin: 0 auto 50px; padding: 0 24px; text-align: center; }
.accesspage__title                         { display: flex; flex-direction: column; align-items: center; gap: 8px; margin: 0 0 32px; }
.accesspage__title-jp                      { font-family: var(--serif); font-size: 4.0rem; font-weight: 500; color: var(--c-red); letter-spacing: .15em; position: relative; padding: 0 56px; }
.accesspage__title-jp::before,
.accesspage__title-jp::after               { content: ""; position: absolute; top: 50%; width: 40px; height: 1px; background: var(--c-red); }
.accesspage__title-jp::before              { left: 0; }
.accesspage__title-jp::after               { right: 0; }
.accesspage__title-en                      { font-family: var(--serif); font-size: 1.3rem; color: var(--c-text-sub); letter-spacing: .3em; }
.accesspage__lead                          { font-family: var(--sans); font-size: 1.5rem; line-height: 2.0; color: var(--c-text); margin: 0 0 12px; letter-spacing: .04em; }
.accesspage__lead:last-child               { margin-bottom: 0; }

/* ---------- Googleマップ（大） ---------- */
.accesspage__map                           { width: 100%; max-width: 1200px; margin: 0 auto 70px; padding: 0 24px; }
.accesspage__map iframe                    { display: block; width: 100%; height: 460px; background: #d9d9d9; border: 0; }
.accesspage__map img                       { display: block; width: 100%; height: 460px; background: #d9d9d9; object-fit: cover; }
.accesspage__exterior img                  { border-radius: 4px; }

/* ---------- マップカード（共通） ---------- */
.accessmaps                                { padding: 0 0 60px; }
.accessmaps__inner                         { max-width: var(--max-w); margin: 0 auto; padding: 0 24px; }
.accessmaps__grid                          { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: start; }
.accessmaps__col                           { display: flex; flex-direction: column; }

.mapcard                                   { background: #fff; border: 1px solid var(--c-red); padding: 12px; box-shadow: 0 0 0 3px #fff, 0 0 0 4px var(--c-red); margin: 0 0 28px; }
.mapcard__caption                          { background: var(--c-yellow-dk); color: #fff; font-family: var(--serif); font-size: 1.7rem; font-weight: 500; padding: 8px 18px; letter-spacing: .12em; text-align: center; }
.mapcard__media                            { width: 100%; aspect-ratio: 4 / 3; overflow: hidden; background: #d9d9d9; }
.mapcard__media img                        { width: 100%; height: 100%; object-fit: cover; display: block; }
.mapcard__media iframe                     { width: 100%; height: 100%; border: 0; display: block; }
.mapcard__media-link                       { display: block; }
.mapcard--google .mapcard__media           { aspect-ratio: 4 / 3; }

/* ---------- 駐車場のご案内 ---------- */
.accessmaps__info                          { margin: 8px 0 0; }
.accessmaps__info-title                    { font-family: var(--serif); font-size: 2.0rem; font-weight: 500; color: var(--c-red); letter-spacing: .12em; margin: 0 0 14px; padding: 0 0 10px; border-bottom: 1px solid var(--c-red); }
.accessmaps__info-text                     { font-family: var(--sans); font-size: 1.4rem; line-height: 1.95; color: var(--c-text); margin: 0; letter-spacing: .04em; }

/* ---------- Google Map ボタン ---------- */
.accessmaps__btn-wrap                      { display: flex; justify-content: center; margin-top: 8px; }
.accessmaps__btn                           { min-width: 220px; }
.accessmaps__btn-pin                       { display: inline-block; width: 16px; height: 16px; background: url('../img/icon_map.svg') center/contain no-repeat; filter: brightness(0) invert(1); flex-shrink: 0; }

/* ---------- 店舗情報 ---------- */
.shopinfo                                  { padding: 60px 0 0; }
.shopinfo__inner                           { max-width: var(--max-w); margin: 0 auto; padding: 0 24px; display: grid; grid-template-columns: 1fr 1.2fr; gap: 56px; align-items: start; }
.shopinfo__media                           { width: 100%; aspect-ratio: 4 / 3; overflow: hidden; background: #d9d9d9; }
.shopinfo__media img                       { width: 100%; height: 100%; object-fit: cover; display: block; }

.shopinfo__body                            { padding-top: 6px; }
.shopinfo__name                            { font-family: var(--serif); font-size: 2.6rem; font-weight: 500; color: var(--c-text); letter-spacing: .12em; margin: 0 0 24px; padding: 0 0 16px; border-bottom: 1px solid var(--c-line); }

.shopinfo__list                            { margin: 0; padding: 0; }
.shopinfo__row                             { display: flex; align-items: baseline; gap: 8px; padding: 3px 0; font-size: 1.5rem; line-height: 1.9; }
.shopinfo__row--block                      { align-items: flex-start; flex-direction: row; }
.shopinfo__label                           { flex-shrink: 0; min-width: 96px; font-family: var(--sans); color: var(--c-red); font-weight: 500; letter-spacing: .04em; }
.shopinfo__data                            { flex: 1; color: var(--c-text); letter-spacing: .04em; }
.shopinfo__data a                          { color: inherit; text-decoration: none; border-bottom: 1px solid transparent; transition: border-color .2s; }
.shopinfo__data a:hover                    { border-bottom-color: var(--c-red); opacity: 1; }
.shopinfo__sublist                         { list-style: none; padding: 0; margin: 0; }
.shopinfo__sublist li                      { font-size: 1.5rem; line-height: 1.9; }


/* =========================================================
   Access Page — Tablet (≤1101px)
========================================================= */
@media (max-width: 1101px) {
    .accessmaps__grid                      { gap: 36px; }
    .shopinfo__inner                       { gap: 36px; }
}


/* =========================================================
   Access Page — SP (≤768px)
========================================================= */
@media (max-width: 768px) {
    .accesspage                            { padding: 110px 0 80px; }

    .accesspage__header                    { margin-bottom: 36px; padding: 0 20px; }
    .accesspage__title                     { margin-bottom: 24px; }
    .accesspage__title-jp                  { font-size: 2.6rem; padding: 0 36px; letter-spacing: .12em; }
    .accesspage__title-jp::before,
    .accesspage__title-jp::after           { width: 24px; }
    .accesspage__title-en                  { font-size: 1.1rem; }
    .accesspage__lead                      { font-size: 1.3rem; line-height: 1.95; text-align: left; }

    .accesspage__map                       { margin-bottom: 50px; padding: 0 20px; }
    .accesspage__map iframe                { height: 280px; }
    .accesspage__map img                   { height: 280px; }

    .accessmaps                            { padding: 0 0 40px; }
    .accessmaps__inner                     { padding: 0 20px; }
    .accessmaps__grid                      { grid-template-columns: 1fr; gap: 36px; }

    .mapcard                               { padding: 8px; box-shadow: 0 0 0 2px #fff, 0 0 0 3px var(--c-red); margin-bottom: 18px; }
    .mapcard__caption                      { font-size: 1.4rem; padding: 6px 12px; }

    .accessmaps__info                      { margin-bottom: 8px; }
    .accessmaps__info-title                { font-size: 1.7rem; }
    .accessmaps__info-text                 { font-size: 1.3rem; }

    .accessmaps__btn-wrap                  { margin-top: 4px; }
    .accessmaps__btn                       { min-width: 200px; }

    .shopinfo                              { padding: 30px 0 0; }
    .shopinfo__inner                       { grid-template-columns: 1fr; gap: 24px; padding: 0 20px; }
    .shopinfo__media                       { aspect-ratio: 4 / 3; }
    .shopinfo__name                        { font-size: 2.0rem; margin-bottom: 18px; padding-bottom: 12px; }

    .shopinfo__row                         { font-size: 1.3rem; line-height: 1.8; padding: 4px 0; flex-wrap: wrap; gap: 4px; }
    .shopinfo__label                       { min-width: 84px; }
    .shopinfo__sublist li                  { font-size: 1.3rem; }
}


/* =========================================================
   Access Page — Small SP (≤480px)
========================================================= */
@media (max-width: 480px) {
    .accesspage__title-jp                  { font-size: 2.2rem; }
    .shopinfo__row                         { flex-direction: column; gap: 0; }
    .shopinfo__label                       { min-width: 0; }
}


/* =========================================================
   Occasion Page (page-occasion.php)
   ※ベースは menupage の構造を流用。差分のみここで定義。
========================================================= */
.occasionpage__lead                        { font-family: var(--sans); font-size: 1.5rem; line-height: 2.0; color: var(--c-text); margin: 24px 0 0; letter-spacing: .04em; text-align: center; }

/* ---------- ご利用ポイント（3カラム） ---------- */
.occasion-points                           { list-style: none; padding: 0; margin: 0 0 60px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }
.occasion-point                            { background: #fff; border: 1px solid var(--c-line); border-radius: 12px; padding: 26px 24px; }
.occasion-point__title                     { font-family: var(--serif); font-size: 1.7rem; font-weight: 500; color: var(--c-red); letter-spacing: .06em; margin: 0 0 12px; padding: 0 0 10px; border-bottom: 1px solid var(--c-line); line-height: 1.5; }
.occasion-point__text                      { font-family: var(--sans); font-size: 1.4rem; line-height: 1.95; color: var(--c-text); margin: 0; letter-spacing: .04em; }

/* ---------- おすすめメニュー（カード3カラム） ---------- */
.occasion-recommend__heading               { font-family: var(--serif); font-size: 2.0rem; font-weight: 500; color: var(--c-red); letter-spacing: .12em; text-align: center; margin: 0 0 30px; position: relative; padding-bottom: 14px; }
.occasion-recommend__heading::after        { content: ""; display: block; width: 40px; height: 1px; background: var(--c-red); margin: 14px auto 0; }

.occasion-recommend                        { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }
.occasion-recommend__item                  { background: var(--c-bg2); border: 1px solid var(--c-line); padding: 24px 22px; display: flex; flex-direction: column; gap: 10px; }
.occasion-recommend__name                  { font-family: var(--serif); font-size: 1.7rem; font-weight: 500; color: var(--c-text); margin: 0; line-height: 1.5; letter-spacing: .04em; }
.occasion-recommend__sub                   { display: block; font-size: 1.2rem; color: var(--c-text-sub); margin-top: 4px; letter-spacing: .03em; }
.occasion-recommend__price                 { font-family: var(--serif); font-size: 1.8rem; color: var(--c-red); margin: 0; letter-spacing: .04em; }
.occasion-recommend__tax                   { font-size: 1.2rem; color: var(--c-text-sub); margin-left: 4px; }
.occasion-recommend__desc                  { font-family: var(--sans); font-size: 1.35rem; line-height: 1.85; color: var(--c-text); margin: 0; letter-spacing: .03em; }

/* ---------- ご予約CTA ---------- */
.occasion-cta                              { background: var(--c-bg2); padding: 80px 0 90px; }
.occasion-cta__inner                       { max-width: 800px; margin: 0 auto; padding: 0 24px; text-align: center; }
.occasion-cta__title                       { font-family: var(--serif); font-size: 2.6rem; font-weight: 500; color: var(--c-red); letter-spacing: .15em; margin: 0 0 18px; }
.occasion-cta__text                        { font-family: var(--sans); font-size: 1.5rem; line-height: 2.0; color: var(--c-text); margin: 0 0 36px; letter-spacing: .04em; }
.occasion-cta__btn-wrap                    { display: flex; justify-content: center; }

/* ---------- レスポンシブ用ヘルパー ---------- */
.br--md                                    { display: inline; }


/* =========================================================
   Occasion Page — Tablet (≤1101px)
========================================================= */
@media (max-width: 1101px) {
    .occasion-points                       { gap: 20px; }
    .occasion-recommend                    { gap: 20px; }
}


/* =========================================================
   Occasion Page — SP (≤768px)
========================================================= */
@media (max-width: 768px) {
    .occasionpage__lead                    { font-size: 1.3rem; line-height: 1.95; text-align: left; padding: 0 4px; margin-top: 16px; }
    .br--md                                { display: none; }

    .occasion-points                       { grid-template-columns: 1fr; gap: 16px; margin-bottom: 44px; }
    .occasion-point                        { padding: 22px 20px; }
    .occasion-point__title                 { font-size: 1.5rem; }
    .occasion-point__text                  { font-size: 1.3rem; }

    .occasion-recommend__heading           { font-size: 1.7rem; margin-bottom: 22px; padding-bottom: 12px; }
    .occasion-recommend                    { grid-template-columns: 1fr; gap: 16px; }
    .occasion-recommend__item              { padding: 20px 18px; }
    .occasion-recommend__name              { font-size: 1.5rem; }
    .occasion-recommend__price             { font-size: 1.6rem; }
    .occasion-recommend__desc              { font-size: 1.25rem; line-height: 1.8; }

    .occasion-cta                          { padding: 56px 0 64px; }
    .occasion-cta__inner                   { padding: 0 20px; }
    .occasion-cta__title                   { font-size: 2.0rem; }
    .occasion-cta__text                    { font-size: 1.3rem; line-height: 1.95; margin-bottom: 24px; text-align: left; }
}


/* =========================================================
   Occasion Page — Small SP (≤480px)
========================================================= */
@media (max-width: 480px) {
    .occasion-cta__title                   { font-size: 1.8rem; }
}


/* =========================================================
   Privacy Page (page-privacy.php)
========================================================= */
.privacypage                               { padding: 200px 0 150px; background: var(--c-bg); }

/* ---------- ページヘッダー ---------- */
.privacypage__header                       { max-width: 900px; margin: 0 auto 60px; padding: 0 24px; text-align: center; }
.privacypage__title                        { display: flex; flex-direction: column; align-items: center; gap: 8px; margin: 0 0 24px; }
.privacypage__title-jp                     { font-family: var(--serif); font-size: 4.0rem; font-weight: 500; color: var(--c-red); letter-spacing: .12em; position: relative; padding: 0 56px; }
.privacypage__title-jp::before,
.privacypage__title-jp::after              { content: ""; position: absolute; top: 50%; width: 40px; height: 1px; background: var(--c-red); }
.privacypage__title-jp::before             { left: 0; }
.privacypage__title-jp::after              { right: 0; }
.privacypage__title-en                     { font-family: var(--serif); font-size: 1.3rem; color: var(--c-text-sub); letter-spacing: .3em; }
.privacypage__lead                         { font-family: var(--sans); font-size: 1.5rem; color: var(--c-text-sub); letter-spacing: .12em; margin: 0; }

/* ---------- 本文コンテナ ---------- */
.privacypage__article                      { max-width: 900px; margin: 0 auto; padding: 64px 56px; background: #fff; box-shadow: 0 0 0 1px var(--c-line); }

/* ---------- セクション ---------- */
.privsec                                   { margin: 0 0 56px; }
.privsec:last-of-type                      { margin-bottom: 24px; }

.privsec__h2                               { font-family: var(--serif); font-size: 2.4rem; font-weight: 500; color: var(--c-red); letter-spacing: .12em; margin: 0 0 24px; padding: 0 0 14px; border-bottom: 1px solid var(--c-red); }
.privsec__h2--en                           { display: flex; align-items: baseline; gap: 18px; flex-wrap: wrap; }
.privsec__h2-jp                            { font-family: var(--serif); font-size: 2.4rem; font-weight: 500; color: var(--c-red); letter-spacing: .12em; }
.privsec__h2-en                            { font-family: var(--serif); font-size: 1.4rem; color: var(--c-text-sub); letter-spacing: .25em; }

.privsec__h3                               { font-family: var(--serif); font-size: 1.8rem; font-weight: 500; color: var(--c-text); letter-spacing: .08em; margin: 32px 0 14px; padding: 0 0 0 14px; border-left: 3px solid var(--c-red); line-height: 1.5; }
.privsec__h4                               { font-family: var(--sans); font-size: 1.5rem; font-weight: 700; color: var(--c-text); letter-spacing: .04em; margin: 24px 0 10px; }

.privsec__p                                { font-family: var(--sans); font-size: 1.45rem; line-height: 2.0; color: var(--c-text); margin: 0 0 16px; letter-spacing: .04em; }
.privsec__p:last-child                     { margin-bottom: 0; }

.privsec__ol                               { padding-left: 0; margin: 0 0 16px; list-style: none; counter-reset: privnum; }
.privsec__ol li                            { position: relative; padding-left: 36px; font-family: var(--sans); font-size: 1.45rem; line-height: 2.0; color: var(--c-text); margin-bottom: 10px; letter-spacing: .04em; counter-increment: privnum; }
.privsec__ol li::before                    { content: counter(privnum) "."; position: absolute; left: 0; top: 0; font-family: var(--serif); font-weight: 500; color: var(--c-red); width: 28px; text-align: right; padding-right: 8px; }

.privsec__notes                            { padding-left: 0; margin: 24px 0 0; list-style: none; }
.privsec__notes li                         { position: relative; padding-left: 18px; font-family: var(--sans); font-size: 1.3rem; line-height: 1.95; color: var(--c-text-sub); margin-bottom: 8px; letter-spacing: .03em; }
.privsec__notes li::before                 { content: "※"; position: absolute; left: 0; top: 0; color: var(--c-text-sub); }

.privsec__note                             { font-family: var(--sans); font-size: 1.3rem; line-height: 1.95; color: var(--c-text-sub); margin: 16px 0 0; padding-left: 18px; text-indent: -18px; letter-spacing: .03em; }

.privsec__link                             { color: var(--c-red); border-bottom: 1px solid var(--c-red); padding-bottom: 1px; transition: opacity .2s; }
.privsec__link:hover                       { opacity: .7; }

/* ---------- 制定日 ---------- */
.privacypage__signature                    { font-family: var(--serif); font-size: 1.4rem; line-height: 1.9; color: var(--c-text-sub); text-align: right; margin: 48px 0 0; letter-spacing: .08em; }


/* =========================================================
   Privacy Page — SP (≤768px)
========================================================= */
@media (max-width: 768px) {
    .privacypage                           { padding: 110px 0 80px; }

    .privacypage__header                   { margin-bottom: 40px; padding: 0 20px; }
    .privacypage__title                    { margin-bottom: 16px; }
    .privacypage__title-jp                 { font-size: 2.4rem; padding: 0 32px; }
    .privacypage__title-jp::before,
    .privacypage__title-jp::after          { width: 22px; }
    .privacypage__title-en                 { font-size: 1.0rem; }
    .privacypage__lead                     { font-size: 1.3rem; }

    .privacypage__article                  { padding: 36px 20px; margin: 0 16px; }

    .privsec                               { margin-bottom: 40px; }
    .privsec__h2                           { font-size: 1.9rem; padding-bottom: 12px; margin-bottom: 18px; }
    .privsec__h2-jp                        { font-size: 1.9rem; }
    .privsec__h2-en                        { font-size: 1.2rem; }
    .privsec__h3                           { font-size: 1.5rem; margin-top: 24px; padding-left: 10px; border-left-width: 2px; }
    .privsec__h4                           { font-size: 1.35rem; margin-top: 20px; }

    .privsec__p                            { font-size: 1.3rem; line-height: 1.95; margin-bottom: 14px; }
    .privsec__ol li                        { font-size: 1.3rem; line-height: 1.95; padding-left: 30px; }
    .privsec__ol li::before                { width: 24px; }
    .privsec__notes li                     { font-size: 1.2rem; line-height: 1.85; }
    .privsec__note                         { font-size: 1.2rem; line-height: 1.85; }

    .privacypage__signature                { font-size: 1.25rem; margin-top: 32px; }
}


/* =========================================================
   Privacy Page — Small SP (≤480px)
========================================================= */
@media (max-width: 480px) {
    .privacypage__title-jp                 { font-size: 2.0rem; }
}


/* =========================================================
   Contact Page (page-contact.php)
========================================================= */
.contactpage                               { padding: 200px 0 150px; background: var(--c-bg); }

/* ---------- ページヘッダー ---------- */
.contactpage__header                       { max-width: 900px; margin: 0 auto 50px; padding: 0 24px; text-align: center; }
.contactpage__title                        { display: flex; flex-direction: column; align-items: center; gap: 8px; margin: 0 0 32px; }
.contactpage__title-jp                     { font-family: var(--serif); font-size: 4.0rem; font-weight: 500; color: var(--c-red); letter-spacing: .12em; position: relative; padding: 0 56px; }
.contactpage__title-jp::before,
.contactpage__title-jp::after              { content: ""; position: absolute; top: 50%; width: 40px; height: 1px; background: var(--c-red); }
.contactpage__title-jp::before             { left: 0; }
.contactpage__title-jp::after              { right: 0; }
.contactpage__title-en                     { font-family: var(--serif); font-size: 1.3rem; color: var(--c-text-sub); letter-spacing: .25em; }
.contactpage__lead                         { font-family: var(--sans); font-size: 1.5rem; line-height: 2.0; color: var(--c-text); margin: 0; letter-spacing: .04em; }

/* ---------- 電話予約のご案内 ---------- */
.contact-tel                               { max-width: 720px; margin: 0 auto 80px; padding: 0 24px; }
.contact-tel__inner                        { background: #fff; border: 1px solid var(--c-red); padding: 36px 32px; box-shadow: 0 0 0 3px #fff, 0 0 0 4px var(--c-red); text-align: center; }
.contact-tel__label                        { font-family: var(--serif); font-size: 1.6rem; color: var(--c-red); letter-spacing: .12em; margin: 0 0 12px; }
.contact-tel__num                          { display: inline-block; font-family: var(--serif); font-size: 4.2rem; font-weight: 500; color: var(--c-red); letter-spacing: .04em; margin: 0 0 14px; line-height: 1.1; padding-left: 38px; position: relative; }
.contact-tel__num::before                  { content: url(../img/icon_tel.svg); width: 28px; height: 28px; position: absolute; left: 0; top: 50%; transform: translateY(-50%); }
.contact-tel__num:hover                    { opacity: 1; }
.contact-tel__hours                        { font-family: var(--sans); font-size: 1.4rem; line-height: 1.95; color: var(--c-text); margin: 0; letter-spacing: .04em; }

/* ---------- フォームコンテナ ---------- */
.contactform                               { padding: 0 0 0; }
.contactform__inner                        { max-width: 920px; margin: 0 auto; padding: 64px 56px; background: #fff; box-shadow: 0 0 0 1px var(--c-line); }
.contactform__intro                        { font-family: var(--sans); font-size: 1.4rem; line-height: 1.9; color: var(--c-text); margin: -20px 0 36px; letter-spacing: .04em; text-align: center; }
.contactform__required-badge               { display: inline-block; background: var(--c-red); color: #fff; font-size: 1.1rem; padding: 2px 10px; border-radius: 999px; margin-right: 4px; letter-spacing: .08em; vertical-align: middle; }

/* ---------- フォーム共通 ---------- */
.cform                                     { width: 100%; }
.cform__row                                { display: grid; grid-template-columns: 220px 1fr; gap: 20px 28px; padding: 22px 0; border-bottom: 1px dashed var(--c-line); align-items: start; }
.cform__row:last-of-type                   { border-bottom: 1px dashed var(--c-line); }

.cform__label                              { display: flex; align-items: center; gap: 10px; padding-top: 8px; flex-wrap: wrap; }
.cform__label-text                         { font-family: var(--serif); font-size: 1.55rem; font-weight: 500; color: var(--c-text); letter-spacing: .06em; }
.cform__required                           { display: inline-block; background: var(--c-red); color: #fff; font-size: 1.05rem; padding: 2px 10px; border-radius: 999px; letter-spacing: .08em; line-height: 1.5; }
.cform__optional                           { display: inline-block; background: #fff; border: 1px solid var(--c-text-sub); color: var(--c-text-sub); font-size: 1.05rem; padding: 1px 10px; border-radius: 999px; letter-spacing: .08em; line-height: 1.5; }

.cform__field                              { font-family: var(--sans); font-size: 1.4rem; color: var(--c-text); }
.cform__field--inline                      { display: flex; gap: 28px; flex-wrap: wrap; }

/* ---------- インプット類 ---------- */
.cform__input,
.cform__select,
.cform__textarea                           { width: 100%; font-family: var(--sans); font-size: 1.5rem; line-height: 1.6; color: var(--c-text); background: #fff; border: 1px solid var(--c-line); border-radius: 4px; padding: 12px 16px; letter-spacing: .04em; transition: border-color .2s, box-shadow .2s; }
.cform__input:focus,
.cform__select:focus,
.cform__textarea:focus                     { outline: none; border-color: var(--c-red); box-shadow: 0 0 0 2px rgba(165,28,28,.15); }

.cform__input--date                        { max-width: 240px; }
.cform__input--tel                         { max-width: 280px; }

.cform__textarea                           { resize: vertical; min-height: 140px; }

/* select wrap with custom arrow */
.cform__select-wrap                        { position: relative; display: block; max-width: 360px; }
.cform__select-wrap--num                   { max-width: 100px; display: inline-block; }
.cform__select                             { appearance: none; -webkit-appearance: none; -moz-appearance: none; padding-right: 38px; cursor: pointer; }
.cform__select-wrap::after                 { content: ""; position: absolute; top: 50%; right: 14px; width: 8px; height: 8px; border-right: 1.5px solid var(--c-red); border-bottom: 1.5px solid var(--c-red); transform: translateY(-70%) rotate(45deg); pointer-events: none; }

/* 数量グループ */
.cform__group                              { display: inline-flex; align-items: center; gap: 8px; }
.cform__group-label                        { font-size: 1.4rem; color: var(--c-text); }
.cform__group-unit                         { font-size: 1.4rem; color: var(--c-text); }

/* ---------- ラジオ／チェックボックス ---------- */
.cform__radio-list,
.cform__check-list                         { list-style: none; padding: 0; margin: 0; display: grid; gap: 10px; }
.cform__check-list--horizontal             { grid-template-columns: repeat(auto-fit, minmax(120px, max-content)); gap: 8px 24px; }

.cform__radio,
.cform__check                              { display: inline-flex; align-items: center; gap: 8px; cursor: pointer; font-size: 1.45rem; color: var(--c-text); letter-spacing: .04em; line-height: 1.6; }
.cform__radio input,
.cform__check input                        { width: 18px; height: 18px; accent-color: var(--c-red); cursor: pointer; flex-shrink: 0; }

.cform__check--agree                       { font-weight: 500; }

/* ---------- 注釈 ---------- */
.cform__note                               { font-family: var(--sans); font-size: 1.2rem; line-height: 1.8; color: var(--c-text-sub); margin: 8px 0 0; letter-spacing: .03em; }

/* ---------- 区切り ---------- */
.cform__divider                            { grid-column: 1 / -1; height: 1px; background: var(--c-red); margin: 20px 0 4px; opacity: .3; }

/* ---------- 同意 ---------- */
.cform__agreement                          { margin: 32px 0 28px; padding: 24px; background: var(--c-bg); border: 1px solid var(--c-line); text-align: center; }
.cform__agreement-text                     { font-family: var(--sans); font-size: 1.35rem; line-height: 1.9; color: var(--c-text); margin: 0 0 14px; letter-spacing: .03em; }
.cform__agreement-link                     { color: var(--c-red); border-bottom: 1px solid var(--c-red); padding-bottom: 1px; }
.cform__agreement-link:hover               { opacity: .7; }

/* ---------- 送信 ---------- */
.cform__submit                             { display: flex; justify-content: center; margin-top: 12px; }
.cform__submit-btn                         { min-width: 280px; cursor: pointer; }


/* =========================================================
   Contact Page — Tablet (≤1101px)
========================================================= */
@media (max-width: 1101px) {
    .contactform__inner                    { padding: 48px 36px; }
    .cform__row                             { grid-template-columns: 200px 1fr; }
}


/* =========================================================
   Contact Page — SP (≤768px)
========================================================= */
@media (max-width: 768px) {
    .contactpage                            { padding: 110px 0 80px; }

    .contactpage__header                    { margin-bottom: 40px; padding: 0 20px; }
    .contactpage__title                     { margin-bottom: 24px; }
    .contactpage__title-jp                  { font-size: 2.4rem; padding: 0 32px; }
    .contactpage__title-jp::before,
    .contactpage__title-jp::after           { width: 22px; }
    .contactpage__title-en                  { font-size: 1.0rem; }
    .contactpage__lead                      { font-size: 1.3rem; line-height: 1.95; text-align: left; }

    .contact-tel                            { margin-bottom: 50px; padding: 0 16px; }
    .contact-tel__inner                     { padding: 28px 20px; box-shadow: 0 0 0 2px #fff, 0 0 0 3px var(--c-red); }
    .contact-tel__num                       { font-size: 3.0rem; padding-left: 30px; }
    .contact-tel__num::before               { width: 22px; height: 22px; }
    .contact-tel__hours                     { font-size: 1.25rem; }

    .contactform__inner                     { padding: 36px 20px; margin: 0 16px; }
    .contactform__intro                     { font-size: 1.25rem; margin-top: -10px; margin-bottom: 24px; text-align: left; }

    .cform__row                             { grid-template-columns: 1fr; gap: 8px; padding: 18px 0; }
    .cform__label                           { padding-top: 0; }
    .cform__label-text                      { font-size: 1.4rem; }

    .cform__field                           { font-size: 1.3rem; }
    .cform__field--inline                   { gap: 18px; }

    .cform__input,
    .cform__select,
    .cform__textarea                        { font-size: 1.4rem; padding: 10px 14px; }

    .cform__select-wrap                     { max-width: 100%; }
    .cform__input--date,
    .cform__input--tel                      { max-width: 100%; }

    .cform__radio,
    .cform__check                           { font-size: 1.3rem; }

    .cform__agreement                       { padding: 18px 16px; margin: 24px 0 20px; }
    .cform__agreement-text                  { font-size: 1.2rem; }

    .cform__submit-btn                      { min-width: 220px; }
}


/* =========================================================
   404 Page (404.php)
========================================================= */
.errorpage                                 { padding: 200px 0 150px; background: var(--c-bg); min-height: 80vh; display: flex; align-items: center; justify-content: center; }
.errorpage__inner                          { max-width: 720px; width: 100%; margin: 0 auto; padding: 0 24px; text-align: center; }

.errorpage__num                            { font-family: var(--serif); font-size: 12.0rem; font-weight: 500; color: var(--c-red); letter-spacing: .08em; line-height: 1; margin: 0 0 24px; opacity: .9; }

.errorpage__title                          { display: flex; flex-direction: column; align-items: center; gap: 10px; margin: 0 0 32px; }
.errorpage__title-jp                       { font-family: var(--serif); font-size: 2.6rem; font-weight: 500; color: var(--c-text); letter-spacing: .12em; }
.errorpage__title-en                       { font-family: var(--serif); font-size: 1.4rem; color: var(--c-text-sub); letter-spacing: .35em; }

.errorpage__text                           { font-family: var(--sans); font-size: 1.5rem; line-height: 2.0; color: var(--c-text); margin: 0 0 40px; letter-spacing: .04em; }

.errorpage__btn-wrap                       { display: flex; justify-content: center; margin-bottom: 56px; }
.errorpage__btn                            { min-width: 280px; }

.errorpage__links                          { list-style: none; padding: 32px 0 0; margin: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: 12px 28px; border-top: 1px solid var(--c-line); }
.errorpage__links-item a                   { font-family: var(--serif); font-size: 1.4rem; color: var(--c-red); border-bottom: 1px solid transparent; padding-bottom: 2px; transition: border-color .2s; letter-spacing: .06em; }
.errorpage__links-item a:hover             { border-bottom-color: var(--c-red); opacity: 1; }


/* =========================================================
   404 Page — SP (≤768px)
========================================================= */
@media (max-width: 768px) {
    .errorpage                              { padding: 100px 0 80px; }
    .errorpage__num                         { font-size: 7.6rem; }
    .errorpage__title-jp                    { font-size: 1.9rem; }
    .errorpage__title-en                    { font-size: 1.1rem; letter-spacing: .25em; }
    .errorpage__text                        { font-size: 1.3rem; line-height: 1.95; margin-bottom: 30px; }
    .errorpage__btn-wrap                    { margin-bottom: 36px; }
    .errorpage__btn                         { min-width: 220px; }
    .errorpage__links                       { padding-top: 24px; gap: 10px 18px; }
    .errorpage__links-item a                { font-size: 1.25rem; }
}


/* =========================================================
   News List Page (page-news.php)
========================================================= */
.newspage                                  { padding: 200px 0 150px; background: var(--c-bg); }

/* ---------- ページヘッダー ---------- */
.newspage__header                          { max-width: 900px; margin: 0 auto 60px; padding: 0 24px; text-align: center; }
.newspage__title                           { display: flex; flex-direction: column; align-items: center; gap: 8px; margin: 0 0 24px; }
.newspage__title-jp                        { font-family: var(--serif); font-size: 4.0rem; font-weight: 500; color: var(--c-red); letter-spacing: .15em; position: relative; padding: 0 56px; }
.newspage__title-jp::before,
.newspage__title-jp::after                 { content: ""; position: absolute; top: 50%; width: 40px; height: 1px; background: var(--c-red); }
.newspage__title-jp::before                { left: 0; }
.newspage__title-jp::after                 { right: 0; }
.newspage__title-en                        { font-family: var(--serif); font-size: 1.3rem; color: var(--c-text-sub); letter-spacing: .3em; }
.newspage__lead                            { font-family: var(--sans); font-size: 1.5rem; color: var(--c-text); letter-spacing: .04em; margin: 0; }

/* ---------- 一覧 ---------- */
.newslist-sec__inner                       { max-width: 960px; margin: 0 auto; padding: 0 24px; }

.newslist                                  { list-style: none; padding: 0; margin: 0 0 60px; }
.newslist__item                            { background: #fff; border-bottom: 1px solid var(--c-line); transition: background .2s; }
.newslist__item:first-child                { border-top: 1px solid var(--c-line); }
.newslist__item:hover                      { background: #fbf7ee; }

.newslist__link                            { display: grid; grid-template-columns: 200px 1fr; gap: 32px; align-items: center; padding: 24px 24px; color: inherit; }
.newslist__link:hover                      { opacity: 1; }

.newslist__media                           { width: 200px; aspect-ratio: 4 / 3; overflow: hidden; background: var(--c-bg2); }
.newslist__img                             { width: 100%; height: 100%; object-fit: cover; display: block; }

.newslist__body                            { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.newslist__meta                            { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.newslist__date                            { font-family: var(--serif); font-size: 1.4rem; color: var(--c-text-sub); letter-spacing: .08em; }
.newslist__cat                             { display: inline-block; font-family: var(--sans); font-size: 1.15rem; color: var(--c-red); border: 1px solid var(--c-red); padding: 1px 12px; border-radius: 999px; letter-spacing: .08em; line-height: 1.6; }

.newslist__title                           { font-family: var(--serif); font-size: 1.9rem; font-weight: 500; color: var(--c-text); line-height: 1.5; letter-spacing: .04em; margin: 4px 0 0; }
.newslist__item:hover .newslist__title     { color: var(--c-red); }

.newslist__excerpt                         { font-family: var(--sans); font-size: 1.35rem; line-height: 1.85; color: var(--c-text); margin: 4px 0 0; letter-spacing: .03em; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }

.newslist__more                            { display: inline-flex; align-items: center; gap: 8px; font-family: var(--sans); font-size: 1.25rem; color: var(--c-yellow-dk); letter-spacing: .06em; margin-top: 6px; padding-bottom: 1px; border-bottom: 1px solid var(--c-red); align-self: flex-start; }
.newslist__more-arrow::after               { content: ""; display: inline-block; width: 6px; height: 6px; border-top: 1.5px solid var(--c-red); border-right: 1.5px solid var(--c-red); transform: rotate(45deg); margin-bottom: 1px; }

.newslist__empty                           { text-align: center; font-size: 1.4rem; color: var(--c-text-sub); padding: 60px 0; background: #fff; border: 1px solid var(--c-line); }

/* ---------- ページネーション ---------- */
.newspager                                 { display: flex; justify-content: center; margin-top: 32px; }
.newspager__list                           { list-style: none; padding: 0; margin: 0; display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.newspager__item a,
.newspager__item span                      { display: inline-flex; align-items: center; justify-content: center; min-width: 38px; height: 38px; padding: 0 10px; font-family: var(--serif); font-size: 1.4rem; color: var(--c-text); border: 1px solid var(--c-line); background: #fff; transition: background .2s, color .2s, border-color .2s; }
.newspager__item a:hover                   { background: var(--c-red); color: #fff; border-color: var(--c-red); opacity: 1; }
.newspager__item span.current              { background: var(--c-red); color: #fff; border-color: var(--c-red); }
.newspager__item span.dots                 { background: transparent; border: 0; color: var(--c-text-sub); }
.newspager__arrow                          { display: inline-block; width: 7px; height: 7px; border-top: 1.5px solid currentColor; border-right: 1.5px solid currentColor; }
.newspager__arrow--prev                    { transform: rotate(-135deg); }
.newspager__arrow--next                    { transform: rotate(45deg); }


/* =========================================================
   News List Page — SP (≤768px)
========================================================= */
@media (max-width: 768px) {
    .newspage                              { padding: 110px 0 80px; }

    .newspage__header                      { margin-bottom: 36px; padding: 0 20px; }
    .newspage__title                       { margin-bottom: 16px; }
    .newspage__title-jp                    { font-size: 2.4rem; padding: 0 32px; letter-spacing: .12em; }
    .newspage__title-jp::before,
    .newspage__title-jp::after             { width: 22px; }
    .newspage__title-en                    { font-size: 1.0rem; }
    .newspage__lead                        { font-size: 1.3rem; line-height: 1.85; }

    .newslist-sec__inner                   { padding: 0 16px; }

    .newslist__link                        { grid-template-columns: 96px 1fr; gap: 16px; padding: 16px; }
    .newslist__media                       { width: 96px; aspect-ratio: 1 / 1; }

    .newslist__date                        { font-size: 1.2rem; }
    .newslist__cat                         { font-size: 1.0rem; padding: 0 10px; }
    .newslist__title                       { font-size: 1.4rem; }
    .newslist__excerpt                     { display: none; }
    .newslist__more                        { font-size: 1.15rem; margin-top: 4px; }

    .newspager__item a,
    .newspager__item span                  { min-width: 34px; height: 34px; font-size: 1.3rem; padding: 0 8px; }
}


/* =========================================================
   News List Page — Small SP (≤480px)
========================================================= */
@media (max-width: 480px) {
    .newspage__title-jp                    { font-size: 2.0rem; }
}


/* =========================================================
   News Single Page (single.php)
========================================================= */
.newssingle                                { padding: 200px 0 150px; background: var(--c-bg); }
.newssingle__article                       { max-width: 800px; margin: 0 auto; padding: 56px 56px; background: #fff; box-shadow: 0 0 0 1px var(--c-line); }

/* ---------- 記事ヘッダー ---------- */
.newssingle__header                        { margin: 0 0 32px; }
.newssingle__crumb                         { font-family: var(--sans); font-size: 1.2rem; color: var(--c-text-sub); margin: 0 0 24px; letter-spacing: .04em; }
.newssingle__crumb-link                    { color: var(--c-text-sub); }
.newssingle__crumb-link:hover              { color: var(--c-red); opacity: 1; }
.newssingle__crumb-sep                     { margin: 0 8px; color: var(--c-line); }
.newssingle__crumb-current                 { color: var(--c-text); }

.newssingle__meta                          { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin: 0 0 16px; }
.newssingle__date                          { font-family: var(--serif); font-size: 1.4rem; color: var(--c-text-sub); letter-spacing: .08em; }
.newssingle__cat                           { display: inline-block; font-family: var(--sans); font-size: 1.15rem; color: var(--c-red); border: 1px solid var(--c-red); padding: 1px 12px; border-radius: 999px; letter-spacing: .08em; line-height: 1.6; }

.newssingle__title                         { font-family: var(--serif); font-size: 2.6rem; font-weight: 500; color: var(--c-red); line-height: 1.5; letter-spacing: .06em; margin: 0; padding: 0 0 18px; border-bottom: 1px dashed var(--c-red); }

/* ---------- ヒーロー画像 ---------- */
.newssingle__hero                          { margin: 0 0 32px; }
.newssingle__hero-img                      { width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: cover; display: block; background: var(--c-bg2); }

/* ---------- 本文 ---------- */
.newssingle__body                          { font-family: var(--sans); font-size: 1.5rem; line-height: 2.0; color: var(--c-text); letter-spacing: .04em; }
.newssingle__body p                        { margin: 0 0 1.5em; }
.newssingle__body h2                       { font-family: var(--serif); font-size: 2.0rem; font-weight: 500; color: var(--c-red); letter-spacing: .08em; margin: 2em 0 .8em; padding: 0 0 .4em; border-bottom: 1px solid var(--c-line); }
.newssingle__body h3                       { font-family: var(--serif); font-size: 1.7rem; font-weight: 500; color: var(--c-text); letter-spacing: .06em; margin: 1.6em 0 .6em; padding-left: 12px; border-left: 3px solid var(--c-red); line-height: 1.5; }
.newssingle__body h4                       { font-family: var(--sans); font-size: 1.5rem; font-weight: 700; color: var(--c-text); margin: 1.4em 0 .5em; }
.newssingle__body ul,
.newssingle__body ol                       { margin: 0 0 1.5em; padding-left: 1.6em; }
.newssingle__body ul                       { list-style: disc; }
.newssingle__body ol                       { list-style: decimal; }
.newssingle__body li                       { margin-bottom: .4em; }
.newssingle__body a                        { color: var(--c-red); border-bottom: 1px solid var(--c-red); }
.newssingle__body a:hover                  { opacity: .7; }
.newssingle__body img                      { height: auto; max-width: 100%; margin: 1em 0; }
.newssingle__body blockquote               { margin: 1.5em 0; padding: 1em 1.4em; background: var(--c-bg); border-left: 4px solid var(--c-red); color: var(--c-text); font-style: normal; }
.newssingle__body strong                   { font-weight: 700; }
.newssingle__body table                    { width: 100%; margin: 1em 0; border-collapse: collapse; font-size: 1.4rem; }
.newssingle__body table th,
.newssingle__body table td                 { border: 1px solid var(--c-line); padding: 8px 12px; }
.newssingle__body table th                 { background: var(--c-bg2); }

/* ---------- 記事内ページ送り ---------- */
.newssingle__pagebreak                     { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 32px 0 0; font-size: 1.3rem; }
.newssingle__pagebreak a                   { display: inline-flex; align-items: center; justify-content: center; min-width: 32px; height: 32px; padding: 0 8px; border: 1px solid var(--c-line); background: #fff; }
.newssingle__pagebreak-num                 { display: inline-flex; align-items: center; justify-content: center; min-width: 32px; height: 32px; padding: 0 8px; border: 1px solid var(--c-red); background: var(--c-red); color: #fff; }

/* ---------- タグ ---------- */
.newssingle__tags                          { list-style: none; padding: 24px 0 0; margin: 32px 0 0; border-top: 1px solid var(--c-line); display: flex; flex-wrap: wrap; gap: 8px; }
.newssingle__tag a                         { display: inline-block; font-size: 1.2rem; color: var(--c-text-sub); background: var(--c-bg); padding: 4px 12px; border-radius: 999px; letter-spacing: .03em; transition: background .2s, color .2s; }
.newssingle__tag a:hover                   { background: var(--c-red); color: #fff; opacity: 1; }


/* ---------- 前後記事ナビ ---------- */
.newsnav                                   { max-width: 800px; margin: 40px auto 0; padding: 0 24px; }
.newsnav__inner                            { display: grid; grid-template-columns: 1fr auto 1fr; gap: 16px; align-items: center; }

.newsnav__col                              { display: flex; }
.newsnav__col--prev                        { justify-content: flex-start; }
.newsnav__col--list                        { justify-content: center; }
.newsnav__col--next                        { justify-content: flex-end; }

.newsnav__link                             { display: inline-flex; align-items: center; gap: 14px; padding: 12px 16px; background: #fff; border: 1px solid var(--c-line); border-radius: 4px; max-width: 300px; transition: background .2s, border-color .2s; }
.newsnav__link:hover                       { background: #fbf7ee; border-color: var(--c-red); opacity: 1; }
.newsnav__direction                        { font-family: var(--sans); font-size: 1.15rem; color: var(--c-red); letter-spacing: .08em; flex-shrink: 0; }
.newsnav__title                            { font-family: var(--serif); font-size: 1.3rem; color: var(--c-text); line-height: 1.5; letter-spacing: .04em; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.newsnav__col--next .newsnav__link         { text-align: right; }
.newsnav__col--next .newsnav__direction,
.newsnav__col--next .newsnav__title        { text-align: right; }

.newsnav__arrow                            { display: inline-block; width: 7px; height: 7px; border-top: 1.5px solid var(--c-red); border-right: 1.5px solid var(--c-red); flex-shrink: 0; }
.newsnav__arrow--prev                      { transform: rotate(-135deg); }
.newsnav__arrow--next                      { transform: rotate(45deg); }

.newsnav__list-link                        { display: inline-flex; align-items: center; gap: 8px; padding: 12px 22px; background: var(--c-red); color: #fff; font-family: var(--serif); font-size: 1.4rem; letter-spacing: .08em; border-radius: 999px; transition: background .2s; }
.newsnav__list-link:hover                  { background: var(--c-red-dark); opacity: 1; }
.newsnav__list-icon                        { display: inline-block; width: 14px; height: 10px; position: relative; }
.newsnav__list-icon::before,
.newsnav__list-icon::after                 { content: ""; position: absolute; left: 0; right: 0; height: 1.5px; background: #fff; }
.newsnav__list-icon::before                { top: 0; }
.newsnav__list-icon::after                 { bottom: 0; }


/* =========================================================
   News Single Page — SP (≤768px)
========================================================= */
@media (max-width: 768px) {
    .newssingle                            { padding: 110px 0 80px; }
    .newssingle__article                   { padding: 32px 20px; margin: 0 16px; }

    .newssingle__crumb                     { font-size: 1.1rem; margin-bottom: 18px; }
    .newssingle__date                      { font-size: 1.25rem; }
    .newssingle__cat                       { font-size: 1.05rem; }
    .newssingle__title                     { font-size: 1.9rem; padding-bottom: 14px; }

    .newssingle__hero                      { margin-bottom: 22px; }
    .newssingle__hero-img                  { aspect-ratio: 4 / 3; }

    .newssingle__body                      { font-size: 1.35rem; line-height: 1.95; }
    .newssingle__body h2                   { font-size: 1.7rem; }
    .newssingle__body h3                   { font-size: 1.5rem; }
    .newssingle__body h4                   { font-size: 1.35rem; }

    .newsnav                               { padding: 0 16px; }
    .newsnav__inner                        { grid-template-columns: 1fr; gap: 10px; }
    .newsnav__col                          { justify-content: stretch; }
    .newsnav__col--list                    { order: 99; justify-content: center; margin-top: 8px; }
    .newsnav__link                         { max-width: none; width: 100%; }
    .newsnav__col--next .newsnav__link     { text-align: left; }
    .newsnav__col--next .newsnav__direction,
    .newsnav__col--next .newsnav__title    { text-align: left; }
}
