*{box-sizing:border-box;margin:0;padding:0}
:root{
  --ink:#242321;
  --muted:#77736c;
  --paper:#f7f4ee;
  --paper-2:#eee9df;
  --white:#fff;
  --blue:#173b70;
  --blue-deep:#102b50;
  --line:#d9d3c8;
  --serif:"Hiragino Mincho ProN","Yu Mincho","YuMincho",serif;
  --sans:-apple-system,BlinkMacSystemFont,"Helvetica Neue","Hiragino Kaku Gothic ProN","Yu Gothic",sans-serif;
}
html{scroll-behavior:smooth}
body{font-family:var(--sans);color:var(--ink);background:var(--paper);line-height:1.8;letter-spacing:.025em}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.content-wide{width:min(1120px,calc(100% - 48px));margin-inline:auto}
.content-narrow{width:min(900px,calc(100% - 48px));margin-inline:auto}

/* header */
.site-header{position:fixed;z-index:50;top:0;left:0;width:100%;background:rgba(247,244,238,.96);border-bottom:1px solid rgba(36,35,33,.12);backdrop-filter:blur(10px)}
.header-inner{height:76px;width:min(1240px,calc(100% - 48px));margin:auto;display:flex;align-items:center;justify-content:space-between}
.brand-logo{width:92px;height:54px;object-fit:contain}
.global-nav{display:flex;align-items:center;gap:34px;font-size:14px}
.global-nav a{position:relative;padding:8px 0}
.global-nav a::after{content:"";position:absolute;left:0;bottom:2px;width:0;height:1px;background:var(--blue);transition:width .25s}
.global-nav a:hover::after{width:100%}
.menu-toggle{display:none;border:0;background:none;width:42px;height:42px}

/* hero */
.hero{position:relative;height:min(780px,calc(100vh - 76px));min-height:560px;margin-top:76px;overflow:hidden;background:#222}
.hero-slides,.hero-slide,.hero-shade{position:absolute;inset:0}
.hero-slide{background-size:cover;background-position:center;opacity:0;animation:heroFade 18s infinite}
.slide-1{background-image:url("../img/gaikan1.jpeg");animation-delay:0s}
.slide-2{background-image:url("../img/gaikan2.jpeg");animation-delay:6s}
.slide-3{background-image:url("../img/gaikan3.jpeg");animation-delay:12s}
@keyframes heroFade{0%{opacity:0}5%{opacity:1}30%{opacity:1}35%{opacity:0}100%{opacity:0}}
.hero-shade{background:linear-gradient(90deg,rgba(0,0,0,.38),rgba(0,0,0,.08) 60%,rgba(0,0,0,.25)),linear-gradient(0deg,rgba(0,0,0,.42),transparent 45%)}
.hero-content{position:absolute;left:clamp(28px,8vw,120px);bottom:clamp(60px,10vh,110px);color:#fff;max-width:760px;text-shadow:0 2px 18px rgba(0,0,0,.35)}
.hero-kicker{font-size:16px;letter-spacing:.22em;margin-bottom:14px}
.hero h1{font-family:var(--serif);font-size:clamp(30px,4.5vw,58px);font-weight:500;line-height:1.45;letter-spacing:.07em}
.hero-link{display:inline-flex;gap:18px;align-items:center;margin-top:26px;padding-bottom:6px;border-bottom:1px solid rgba(255,255,255,.8);font-size:13px;letter-spacing:.12em}
.hero-dots{position:absolute;right:clamp(28px,6vw,80px);bottom:44px;display:flex;gap:9px}
.hero-dots span{display:block;width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.55)}
.hero-dots span:first-child{background:#fff}

/* common sections */
.section{padding:92px 0}
.section-heading{margin-bottom:42px}
.split-heading{display:flex;align-items:end;justify-content:space-between}
.eyebrow{font-size:11px;letter-spacing:.24em;color:var(--blue);font-weight:700;margin-bottom:8px}
.section h2{font-family:var(--serif);font-size:clamp(28px,3vw,40px);font-weight:500;letter-spacing:.08em}
.section-intro{color:var(--muted);margin-top:12px}
.text-link{font-size:13px;letter-spacing:.1em;border-bottom:1px solid var(--ink);padding-bottom:5px}
.text-link span{margin-left:12px}

/* news */
.news-preview{background:#fbfaf7;padding-top:58px;padding-bottom:58px}
.news-list{border-top:1px solid var(--line)}
.news-row{display:grid;grid-template-columns:130px 1fr 30px;gap:20px;align-items:center;padding:18px 4px;border-bottom:1px solid var(--line);font-size:14px}
.news-row time{font-size:12px;color:var(--muted);letter-spacing:.1em}
.news-row .arrow{color:var(--blue);text-align:right}

/* about */
.about{padding-top:105px}
.about-grid{display:grid;grid-template-columns:1.08fr .92fr;gap:72px;align-items:center}
.about-photo img{width:100%;height:540px;object-fit:cover}
.about-copy{max-width:520px}
.about-copy h2{margin-bottom:25px}
.about-copy .lead{font-family:var(--serif);font-size:21px;line-height:2;margin-bottom:22px}
.about-copy>p:last-child{color:#5e5a54;font-size:15px}
.about-banner{position:relative;width:min(1120px,calc(100% - 48px));margin:105px auto 0;height:360px;overflow:hidden}
.about-banner img{width:100%;height:100%;object-fit:cover;object-position:center 52%}
.about-banner-copy{position:absolute;right:0;bottom:0;background:rgba(247,244,238,.94);padding:28px 38px;font-family:var(--serif);font-size:22px;line-height:1.8}

/* menu */
.menu-feature{background:#eee9df}
.menu-gallery{display:grid;grid-template-columns:1.4fr 1fr 1fr;grid-template-rows:250px 250px;gap:18px}
.menu-card{position:relative;overflow:hidden;background:#ddd}
.menu-card img{width:100%;height:100%;object-fit:cover;transition:transform .5s}
.menu-card:hover img{transform:scale(1.03)}
.menu-card-large{grid-row:1/3}
.menu-card-caption{position:absolute;left:0;right:0;bottom:0;padding:38px 22px 20px;color:#fff;background:linear-gradient(transparent,rgba(0,0,0,.7))}
.menu-card-caption span{font-size:9px;letter-spacing:.2em}
.menu-card-caption h3{font-family:var(--serif);font-size:19px;font-weight:500;margin-top:3px}
.center-link{text-align:center;margin-top:40px}
.button{display:inline-block;padding:14px 32px;font-size:13px;letter-spacing:.12em}
.button-outline{border:1px solid var(--ink)}

/* hours */
.hours{background:#f7f4ee}
.centered{text-align:center}
.hours-grid{display:grid;grid-template-columns:1fr 1fr;max-width:900px;margin:auto}
.hours-card{padding:42px;text-align:center;background:#fff;border:1px solid var(--line)}
.hours-card.dark{background:var(--blue-deep);color:#fff;border-color:var(--blue-deep)}
.hours-label{font-size:11px;letter-spacing:.28em;font-weight:700;margin-bottom:12px}
.hours-time{font-family:var(--serif);font-size:28px;letter-spacing:.08em}
.hours-card>p:last-child{font-size:12px;margin-top:6px;opacity:.72}

/* reservation */
.reservation{padding:96px 24px;background:var(--blue);color:#fff;text-align:center}
.reservation .eyebrow{color:#d7e2f2}
.reservation h2{font-family:var(--serif);font-weight:500;font-size:36px;letter-spacing:.1em;margin-bottom:18px}
.reservation p{font-size:14px}
.phone-link{display:inline-flex;align-items:baseline;gap:16px;margin-top:25px;font-family:var(--serif);font-size:31px;letter-spacing:.08em;border-bottom:1px solid rgba(255,255,255,.65);padding-bottom:5px}
.phone-label{font-family:var(--sans);font-size:10px;letter-spacing:.2em}

/* access */
.access{padding-bottom:105px}
.access-grid{display:grid;grid-template-columns:1.3fr .7fr;gap:60px;align-items:stretch}
.map-card{min-height:390px;background:#e2ddd3}
.map-card a,.map-placeholder{height:100%}
.map-placeholder{min-height:390px;display:flex;flex-direction:column;justify-content:center;align-items:center;background:linear-gradient(135deg,#ded9cf,#f1ede5);color:var(--blue);gap:10px}
.map-placeholder span{font-size:10px;letter-spacing:.25em}
.map-placeholder strong{font-family:var(--serif);font-size:24px;font-weight:500}
.access-copy{padding:28px 0}
.access-copy h3{font-family:var(--serif);font-size:28px;font-weight:500;margin-bottom:30px}
.access-copy dl>div{display:grid;grid-template-columns:75px 1fr;border-top:1px solid var(--line);padding:15px 0}
.access-copy dl>div:last-child{border-bottom:1px solid var(--line)}
.access-copy dt{font-size:10px;letter-spacing:.18em;color:var(--blue);font-weight:700}
.access-copy dd{font-size:13px}
.access-copy .text-link{display:inline-block;margin-top:28px}

/* footer */
.site-footer{background:#20201e;color:#f4f1e9}
.footer-grid{display:grid;grid-template-columns:1.3fr 1fr .8fr;gap:50px;padding:62px 0}
.footer-brand img{width:86px;height:48px;object-fit:contain;margin-bottom:14px}
.footer-brand p,.footer-info{font-size:12px;color:#c5c1b8}
.footer-info>p:first-child{color:#fff;margin-bottom:8px}
.footer-tel{font-family:var(--serif);font-size:22px!important;color:#fff!important;margin-top:18px}
.footer-nav{display:flex;flex-direction:column;gap:12px;font-size:13px}
.footer-nav a{width:max-content;color:#e7e3db}
.footer-bottom{border-top:1px solid #41403c;text-align:center;padding:17px;font-size:9px;letter-spacing:.18em;color:#9e9a91}

/* subpages */
.subpage{padding-top:76px;min-height:70vh}
.subpage-hero{padding:100px 24px 82px;background:#eee9df;text-align:center}
.subpage-hero h1{font-family:var(--serif);font-size:42px;font-weight:500;letter-spacing:.1em}
.menu-page,.news-page{padding-top:70px;padding-bottom:100px}
.menu-section{margin-bottom:70px}
.menu-section h2{font-family:var(--serif);font-size:27px;font-weight:500;border-bottom:2px solid var(--ink);padding-bottom:12px;margin-bottom:0}
.menu-item{display:grid;grid-template-columns:1fr auto;gap:24px;padding:16px 4px;border-bottom:1px solid var(--line);font-size:14px}
.menu-item strong{font-weight:500;white-space:nowrap}
.news-article{padding:30px 0 42px;border-bottom:1px solid var(--line)}
.news-article time{font-size:11px;color:var(--muted);letter-spacing:.1em}
.news-article h2{font-family:var(--serif);font-size:25px;font-weight:500;margin:9px 0 16px}
.news-article p{font-size:14px;color:#5e5a54}

/* responsive */
@media(max-width:800px){
  .header-inner{height:66px;width:calc(100% - 32px)}
  .brand-logo{width:78px;height:48px}
  .menu-toggle{display:flex;flex-direction:column;justify-content:center;gap:5px}
  .menu-toggle span:not(.sr-only){display:block;width:22px;height:1px;background:var(--ink)}
  .global-nav{position:absolute;top:66px;left:0;right:0;display:flex;flex-direction:column;align-items:stretch;gap:0;background:rgba(247,244,238,.98);border-bottom:1px solid var(--line);padding:8px 24px;transform:translateY(-10px);opacity:0;pointer-events:none;transition:.25s}
  .global-nav.is-open{transform:translateY(0);opacity:1;pointer-events:auto}
  .global-nav a{padding:14px 0;border-bottom:1px solid var(--line)}
  .hero{margin-top:66px;height:72vh;min-height:520px}
  .hero-content{left:24px;right:24px;bottom:68px}
  .hero h1{font-size:31px}
  .section{padding:72px 0}
  .content-wide,.content-narrow{width:calc(100% - 36px)}
  .split-heading{align-items:start;gap:20px;flex-direction:column}
  .about-grid,.access-grid{grid-template-columns:1fr;gap:38px}
  .about-photo img{height:400px}
  .about-banner{width:calc(100% - 36px);height:270px;margin-top:70px}
  .about-banner-copy{padding:20px 22px;font-size:18px}
  .menu-gallery{grid-template-columns:1fr 1fr;grid-template-rows:250px 190px 190px}
  .menu-card-large{grid-column:1/3;grid-row:auto}
  .hours-grid{grid-template-columns:1fr}
  .hours-card{padding:32px 20px}
  .access-grid{gap:10px}
  .map-card,.map-placeholder{min-height:300px}
  .footer-grid{grid-template-columns:1fr;gap:30px;padding:46px 0}
  .footer-nav{display:grid;grid-template-columns:1fr 1fr}
  .subpage{padding-top:66px}
  .subpage-hero{padding:76px 18px 64px}
  .subpage-hero h1{font-size:34px}
  .menu-page,.news-page{padding-top:50px}
  .menu-item{grid-template-columns:1fr;gap:4px}
  .menu-item strong{font-size:13px}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .hero-slide{animation:none}
  .slide-1{opacity:1}
  .hero-card img,.menu-card img{transition:none}
}

.news-empty{padding:38px 4px;border-bottom:1px solid var(--line);color:var(--muted);font-size:14px}

/* mobile refinements */
@media(max-width:600px){
  .hero{min-height:500px;height:72svh}
  .hero h1{font-size:28px}
  .hero-content{bottom:62px}
  .about-copy .lead{font-size:19px}
  .access-copy dl>div{grid-template-columns:82px 1fr}
  .access-copy dd{word-break:break-word}
  .phone-link{font-size:27px}
}


/* Shared editable menu and news */
#home-menu-gallery {
  width: 100%;
}
#menu-page-list {
  width: 100%;
}
.menu-section {
  margin-bottom: 48px;
}
.menu-section h2 {
  margin-bottom: 18px;
}
.menu-item {
  display: flex;
  justify-content: space-between;
  gap: 24px;
  padding: 13px 0;
  border-bottom: 1px solid rgba(0,0,0,.10);
}
.menu-item span {
  line-height: 1.7;
}
.menu-item strong {
  white-space: nowrap;
}
.news-page-list {
  display: grid;
  gap: 30px;
}
.news-article {
  padding: 0 0 28px;
  border-bottom: 1px solid rgba(0,0,0,.12);
}
.news-article h2 {
  margin: 6px 0 12px;
}
.news-article p {
  line-height: 1.9;
  margin: 0;
}
.news-empty {
  margin: 0;
  color: #777;
}
.instagram-info {
  margin-top: 12px;
}
.instagram-info a {
  color: inherit;
  text-decoration: none;
}
.instagram-info a:hover {
  text-decoration: underline;
}
@media (max-width: 600px) {
  .menu-item {
    gap: 12px;
  }
  .menu-item span {
    overflow-wrap: anywhere;
  }
}

/* MENUページの左右に適度な余白 */
#menu-page-list {
  width: calc(100% - 56px);
  max-width: 900px;
  margin-left: auto;
  margin-right: auto;
  box-sizing: border-box;
}
