:root{
  --ink:#2b2a28;
  --ink-soft:#54514a;
  --cream:#f7f2e7;
  --cream-alt:#efe6d3;
  --card:#fffdf8;
  --indigo:#2c4a57;
  --indigo-deep:#203a45;
  --rust:#b5562a;
  --moss:#5b6b3e;
  --line:#ddd0b3;
  --radius:14px;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  font-family:"Noto Sans JP",sans-serif;
  color:var(--ink);
  background:var(--cream);
  line-height:1.8;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3{
  font-family:"Shippori Mincho",serif;
  font-weight:800;
  line-height:1.4;
  margin:0;
}
a{color:inherit;text-decoration:none;}
img{max-width:100%;display:block;}
.wrap{
  max-width:1080px;
  margin:0 auto;
  padding:0 24px;
}
.icon{width:36px;height:36px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}

/* header */
.site-header{
  position:sticky;
  top:0;
  z-index:10;
  background:rgba(247,242,231,0.94);
  border-bottom:1px solid var(--line);
  backdrop-filter:blur(4px);
}
.site-header .wrap{
  display:flex;
  align-items:center;
  justify-content:space-between;
  flex-wrap:wrap;
  gap:12px;
  padding-top:16px;
  padding-bottom:16px;
}
.brand{
  font-size:20px;
  letter-spacing:0.04em;
}
.brand small{
  display:block;
  font-family:"Noto Sans JP",sans-serif;
  font-weight:500;
  font-size:11px;
  letter-spacing:0.16em;
  color:var(--ink-soft);
  margin-top:2px;
}
nav.main-nav ul{
  display:flex;
  gap:22px;
  margin:0;
  padding:0;
  list-style:none;
  flex-wrap:wrap;
}
nav.main-nav a{
  font-size:14px;
  font-weight:500;
  padding:6px 2px;
  border-bottom:2px solid transparent;
}
nav.main-nav a.is-detail{color:var(--rust);}
nav.main-nav a:hover,
nav.main-nav a:focus-visible{
  border-bottom-color:var(--rust);
}

/* hero */
.hero{
  background:var(--indigo);
  color:#f7f2e7;
  padding:88px 0 96px;
  text-align:center;
}
.hero.hero-sub{padding:64px 0 72px;}
.hero .eyebrow{
  font-size:13px;
  letter-spacing:0.24em;
  color:#cddadf;
  margin-bottom:18px;
}
.hero h1{
  font-size:clamp(28px,5vw,44px);
  max-width:820px;
  margin:0 auto 22px;
}
.hero-sub h1{font-size:clamp(26px,4.4vw,38px);}
.hero p{
  max-width:560px;
  margin:0 auto 34px;
  color:#dfe6e8;
  font-size:15px;
}
.hero-sub p{margin-bottom:8px;}
.hero .cta{
  display:flex;
  justify-content:center;
  gap:16px;
  flex-wrap:wrap;
}
.btn{
  display:inline-block;
  padding:12px 28px;
  border-radius:999px;
  font-size:14px;
  font-weight:700;
  letter-spacing:0.04em;
  border:1.5px solid transparent;
}
.btn-primary{
  background:var(--rust);
  color:#fff8f1;
}
.btn-ghost{
  border-color:#9fb3ba;
  color:#f2f6f7;
}

section{
  padding:88px 0;
}
section:nth-of-type(even){
  background:var(--cream-alt);
}
.section-head{
  text-align:center;
  max-width:640px;
  margin:0 auto 52px;
}
.section-head .kicker{
  font-size:12px;
  letter-spacing:0.22em;
  color:var(--rust);
  font-weight:700;
  margin-bottom:10px;
}
.section-head h2{
  font-size:clamp(24px,3.4vw,32px);
  margin-bottom:14px;
}
.section-head p{
  color:var(--ink-soft);
  font-size:15px;
}

/* back-to-top link (sub pages) */
.back-link-row{
  padding:20px 0 0;
}
.back-link{
  display:inline-flex;
  align-items:center;
  gap:8px;
  font-size:13.5px;
  font-weight:700;
  color:var(--indigo);
}
.back-link svg{
  width:16px;height:16px;
  stroke:currentColor;fill:none;stroke-width:2.2;
  stroke-linecap:round;stroke-linejoin:round;
}
.link-more{
  display:inline-flex;
  align-items:center;
  gap:6px;
  color:var(--rust);
  font-weight:700;
  font-size:13.5px;
}

/* about */
.about-grid{
  display:grid;
  grid-template-columns:1.1fr 1fr;
  gap:56px;
  align-items:start;
}
.about-lead p{
  color:var(--ink-soft);
  font-size:15.5px;
  margin:0 0 16px;
}
.feature-list{
  display:grid;
  gap:20px;
}
.feature{
  display:flex;
  gap:16px;
  align-items:flex-start;
  background:var(--card);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:20px;
}
.feature .icon{flex-shrink:0;}
.feature h3{
  font-size:16px;
  margin-bottom:6px;
}
.feature p{
  margin:0;
  font-size:13.5px;
  color:var(--ink-soft);
}
.feature.sea .icon{color:var(--indigo);}
.feature.mountain .icon{color:var(--moss);}
.feature.field .icon{color:var(--rust);}
.feature.train .icon{color:var(--indigo);}
.feature.car .icon{color:var(--rust);}
.feature.bus .icon{color:var(--moss);}

/* menu (top page summary cards) */
.menu-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:24px;
}
.menu-card{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:28px 24px;
}
.menu-tag{
  display:inline-flex;
  align-items:center;
  gap:8px;
  font-size:12px;
  font-weight:700;
  letter-spacing:0.08em;
  padding:6px 14px;
  border-radius:999px;
  color:#fff;
  margin-bottom:20px;
}
.menu-tag.sea{background:var(--indigo);}
.menu-tag.mountain{background:var(--moss);}
.menu-tag.field{background:var(--rust);}
.menu-item{
  display:flex;
  justify-content:space-between;
  gap:12px;
  padding:14px 0;
  border-top:1px solid var(--line);
}
.menu-item:first-of-type{border-top:none;padding-top:0;}
.menu-item .name{
  font-weight:700;
  font-size:14.5px;
}
.menu-item .origin{
  display:block;
  font-size:12px;
  color:var(--ink-soft);
  margin-top:3px;
}
.menu-item .price{
  font-weight:700;
  white-space:nowrap;
  font-size:14.5px;
  color:var(--rust);
}
.menu-item .weight{
  display:block;
  font-size:11px;
  color:var(--ink-soft);
  text-align:right;
  margin-top:3px;
  font-weight:400;
}
.menu-note{
  text-align:center;
  font-size:12.5px;
  color:var(--ink-soft);
  margin-top:36px;
}
.menu-note + .menu-note{margin-top:8px;}

/* menu detail page */
.menu-detail-card{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:32px 28px;
  margin-bottom:28px;
}
.menu-detail-card .intro{
  color:var(--ink-soft);
  font-size:14px;
  margin:10px 0 24px;
}
.menu-detail-item{
  padding:18px 0;
  border-top:1px solid var(--line);
}
.menu-detail-item:first-child{border-top:none;padding-top:0;}
.menu-detail-item .row{
  display:flex;
  justify-content:space-between;
  gap:16px;
}
.menu-detail-item .name{font-weight:700;font-size:15.5px;}
.menu-detail-item .origin{
  display:block;
  font-size:12px;
  color:var(--ink-soft);
  margin-top:3px;
}
.menu-detail-item .price{
  font-weight:700;
  color:var(--rust);
  font-size:15.5px;
  white-space:nowrap;
}
.menu-detail-item .weight{
  display:block;
  font-size:11px;
  color:var(--ink-soft);
  text-align:right;
  margin-top:3px;
}
.menu-detail-item .tip{
  margin:10px 0 0;
  font-size:13.5px;
  color:var(--ink-soft);
}
.menu-detail-item .tip .mark{
  color:var(--moss);
  font-family:"Shippori Mincho",serif;
  font-weight:700;
  margin-right:6px;
}

.giftset-grid{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:24px;
}
.giftset-card{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:28px;
}
.giftset-card h3{font-size:17px;margin-bottom:10px;}
.giftset-card .contents{
  font-size:13.5px;
  color:var(--ink-soft);
  margin:0 0 16px;
}
.giftset-card .price{
  font-weight:700;
  color:var(--rust);
  font-size:17px;
}

.owner-text{
  max-width:640px;
  margin:0 auto;
  text-align:center;
}
.owner-text p{
  color:var(--ink-soft);
  font-size:15px;
  margin:0 0 14px;
}
.faq-list{
  max-width:720px;
  margin:0 auto;
}
.faq-item{
  border-top:1px solid var(--line);
  padding:22px 4px;
}
.faq-item:first-child{border-top:none;padding-top:0;}
.faq-q{
  display:flex;
  gap:12px;
  align-items:baseline;
  font-weight:700;
  font-size:15px;
  margin-bottom:8px;
}
.faq-q .mark{
  font-family:"Shippori Mincho",serif;
  color:var(--rust);
  flex-shrink:0;
}
.faq-a{
  display:flex;
  gap:12px;
  align-items:baseline;
  margin:0;
  color:var(--ink-soft);
  font-size:14px;
}
.faq-a .mark{
  font-family:"Shippori Mincho",serif;
  color:var(--indigo);
  flex-shrink:0;
}

/* hours */
.hours-panel{
  max-width:520px;
  margin:0 auto;
  background:var(--card);
  border:1px solid var(--line);
  border-radius:var(--radius);
  overflow:hidden;
}
table.hours-table{
  width:100%;
  border-collapse:collapse;
}
table.hours-table td{
  padding:16px 26px;
  font-size:15px;
  border-top:1px solid var(--line);
}
table.hours-table tr:first-child td{border-top:none;}
table.hours-table td:first-child{
  font-weight:700;
  color:var(--indigo);
  width:45%;
}
.hours-note{
  text-align:center;
  font-size:12.5px;
  color:var(--ink-soft);
  margin-top:24px;
  max-width:480px;
  margin-left:auto;
  margin-right:auto;
}

/* access */
.access-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:40px;
}
.access-card{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:32px;
}
.access-card dl{
  margin:0;
  display:grid;
  grid-template-columns:88px 1fr;
  row-gap:16px;
  column-gap:12px;
}
.access-card dt{
  font-size:12px;
  font-weight:700;
  letter-spacing:0.06em;
  color:var(--rust);
  padding-top:2px;
}
.access-card dd{
  margin:0;
  font-size:14.5px;
}
.access-note{
  background:var(--indigo);
  color:#eef2f2;
  border-radius:var(--radius);
  padding:32px;
  display:flex;
  gap:16px;
  align-items:flex-start;
}
.access-note .icon{color:#cddadf;flex-shrink:0;}
.access-note p{
  margin:0;
  font-size:14px;
  color:#dfe6e8;
}
.access-note p + p{margin-top:10px;}

/* access detail page */
.route-steps{
  max-width:640px;
  margin:0 auto;
}
.route-step{
  display:flex;
  gap:16px;
  padding:16px 0;
  border-top:1px solid var(--line);
}
.route-step:first-child{border-top:none;padding-top:0;}
.route-step .num{
  flex-shrink:0;
  width:32px;
  height:32px;
  border-radius:50%;
  background:var(--indigo);
  color:#fff;
  display:flex;
  align-items:center;
  justify-content:center;
  font-weight:700;
  font-size:14px;
  font-family:"Shippori Mincho",serif;
}
.route-step p{
  margin:0;
  font-size:14.5px;
  padding-top:4px;
  color:var(--ink-soft);
}
.route-step strong{color:var(--ink);}

.spot-list{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:16px;
}
.spot-card{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:20px 16px;
  text-align:center;
}
.spot-card .name{font-weight:700;font-size:14px;margin-bottom:4px;}
.spot-card .dist{font-size:12px;color:var(--ink-soft);}

footer.site-footer{
  background:var(--indigo-deep);
  color:#c7d3d6;
  text-align:center;
  padding:36px 0;
  font-size:12.5px;
}
footer.site-footer .brand-line{
  font-family:"Shippori Mincho",serif;
  font-size:16px;
  color:#f2f2ea;
  margin-bottom:8px;
}
footer.site-footer .footer-links{
  margin-top:14px;
  display:flex;
  justify-content:center;
  gap:20px;
  flex-wrap:wrap;
}
footer.site-footer .footer-links a{
  color:#dfe6e8;
  font-weight:600;
}
footer.site-footer .footer-links a:hover{color:#fff;}

@media (max-width:760px){
  section{padding:64px 0;}
  .hero{padding:64px 0 72px;}
  .hero-sub{padding:52px 0 56px;}
  .about-grid,
  .access-grid{
    grid-template-columns:1fr;
    gap:32px;
  }
  .menu-grid,
  .giftset-grid{
    grid-template-columns:1fr;
  }
  .spot-list{
    grid-template-columns:1fr;
  }
  .site-header .wrap{
    justify-content:center;
    text-align:center;
  }
  nav.main-nav ul{
    justify-content:center;
    gap:14px 18px;
  }
  .section-head{margin-bottom:36px;}
}
