@charset "UTF-8";
:root {
  --blue: #0873ac;
  --blue-dark: #154a6c;
  --gold: #f1bf28;
  --text: #263747;
  --muted: #617180;
  --line: #dce6eb;
  --background: #f5f8fa;
  --surface: #fff;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; background: var(--background); color: var(--text); font-family: "Hiragino Kaku Gothic ProN", "Hiragino Sans", "Yu Gothic", Meiryo, sans-serif; font-size: 16px; line-height: 1.85; overflow-wrap: anywhere; }
a { color: #006fae; text-underline-offset: 3px; }
a:hover { color: #00517f; }
a:focus-visible { outline: 3px solid var(--gold); outline-offset: 3px; border-radius: 2px; }
.container { width: min(100% - 48px, 1000px); margin-inline: auto; }
.site-header { background: linear-gradient(110deg, #ffffff 55%, #eff8fc 100%); border-top: 6px solid var(--gold); }
.header-inner { display: flex; align-items: center; gap: clamp(26px, 5vw, 64px); padding-block: 26px 30px; }
.brand { display: block; flex: 0 1 340px; max-width: 100%; }
.brand img { display: block; width: 100%; height: auto; }
h1, h2, h3, p { margin-top: 0; }
.page-nav { background: var(--blue-dark); }
.page-nav ul { margin: 0; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(4, 1fr); }
.page-nav li + li { border-left: 1px solid rgba(255,255,255,.19); }
.page-nav a { display: block; text-align: center; padding: 13px 8px; font-size: 14px; font-weight: 700; color: #fff; text-decoration: none; transition: background .15s ease; }
.page-nav a:hover, .page-nav a:focus-visible { background: #0d608e; }
.main-content { padding-block: 36px 58px; }
.content-section { scroll-margin-top: 24px; margin-bottom: 34px; }
.section-heading { display: flex; align-items: center; gap: 13px; margin-bottom: 15px; }
.heading-mark { display: inline-block; flex: 0 0 7px; align-self: stretch; min-height: 27px; border-radius: 2px; background: var(--gold); }
h2 { margin: 0; color: var(--blue-dark); font-size: clamp(22px, 3vw, 26px); letter-spacing: .04em; line-height: 1.4; }
.content-panel { background: var(--surface); border: 1px solid var(--line); border-radius: 12px; box-shadow: 0 4px 18px rgba(21,74,108,.035); padding: clamp(19px, 3.5vw, 34px); }
.table-scroll { overflow-x: auto; }
.price-table { border-collapse: collapse; width: 100%; text-align: center; font-variant-numeric: tabular-nums; }
.price-table th, .price-table td { padding: 13px 14px; border: 1px solid #cddde6; }
.price-table thead th { background: #eaf5fb; color: var(--blue-dark); font-weight: 700; }
.price-table tbody th { background: #f9fcfd; text-align: left; font-weight: 600; }
.price-table tbody td { font-weight: 700; white-space: nowrap; }
.notes { margin-top: 22px; font-size: 14px; color: #4c5863; }
.notes p { margin: 0 0 10px; }
.notes p:last-child { margin-bottom: 0; }
.schedule-list { padding: 0; margin: 0; list-style: none; counter-reset: tour; display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 12px; }
.schedule-list li { background: #f4f9fc; border: 1px solid #deebf2; border-radius: 8px; min-height: 82px; padding: 12px 12px 12px 41px; position: relative; display: flex; flex-direction: column; justify-content: center; }
.schedule-list li::before { counter-increment: tour; content: counter(tour); color: var(--blue); font-size: 13px; font-weight: 700; position: absolute; top: 13px; left: 15px; }
.tour-time { color: #183f5d; font-size: 19px; font-weight: 700; line-height: 1.35; font-variant-numeric: tabular-nums; }
.tour-note { margin-top: 4px; color: var(--muted); font-size: 12px; line-height: 1.55; }
.info-list { margin: 0; padding: 0; list-style: none; }
.info-item { padding-left: 26px; position: relative; }
.info-item::before { content: ""; width: 9px; height: 9px; background: var(--blue); border-radius: 50%; position: absolute; top: 10px; left: 1px; }
.info-item + .info-item { border-top: 1px solid var(--line); padding-top: 27px; margin-top: 28px; }
.info-item + .info-item::before { top: 37px; }
h3 { margin-bottom: 15px; font-size: 18px; color: var(--blue-dark); line-height: 1.5; }
.info-item > p { margin-bottom: 10px; }
.info-item > p:last-child { margin-bottom: 0; }
.info-item strong { color: var(--blue-dark); }
.info-item .notes { margin-top: 16px; }
.action-line { padding: 11px 16px; background: #eff8fd; border-left: 3px solid #5aaed4; border-radius: 0 5px 5px 0; font-weight: 600; }
.action-line a { font-weight: 700; margin-left: 2px; }
.map-line a { overflow-wrap: anywhere; }
.site-footer { background: #e7f0f5; border-top: 1px solid var(--line); color: #526a7b; }
.site-footer .container { display: flex; justify-content: space-between; gap: 18px; align-items: center; padding-block: 20px; }
.site-footer small { font-size: 13px; }
.site-footer a { font-size: 13px; }
@media (max-width: 720px) {
  .header-inner { flex-wrap: wrap; gap: 16px; padding-block: 20px 23px; }
  .brand { flex-basis: 250px; }
  .main-content { padding-block: 27px 44px; }
  .content-section { margin-bottom: 28px; }
  .schedule-list { grid-template-columns: repeat(2, minmax(0,1fr)); }
}
@media (max-width: 460px) {
  .container { width: min(100% - 28px, 1000px); }
  .page-nav a { padding: 12px 4px; font-size: 12px; }
  .content-panel { padding: 18px 14px; }
  .price-table { font-size: 13px; }
  .price-table th, .price-table td { padding: 10px 5px; }
  .schedule-list { gap: 8px; }
  .schedule-list li { padding: 11px 7px 11px 31px; min-height: 74px; }
  .schedule-list li::before { left: 10px; top: 12px; }
  .tour-time { font-size: 17px; }
  .tour-note { font-size: 11px; }
  .info-item { padding-left: 19px; }
  h3 { font-size: 17px; }
  .notes { font-size: 13px; }
}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

/* ページ上部の緊急メンテナンス表示（既存配色に統一） */
.maintenance-banner {
  background: var(--blue-dark);
  color: #fff;
  border-bottom: 1px solid rgba(255, 255, 255, .15);
}
.maintenance-inner {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 11px;
  padding-block: 12px;
  text-align: center;
}
.maintenance-icon {
  flex: 0 0 27px;
  display: inline-flex;
  justify-content: center;
  align-items: center;
  width: 27px;
  height: 27px;
  border-radius: 50%;
  background: var(--gold);
  color: var(--blue-dark);
  font-weight: 800;
  font-size: 17px;
  line-height: 1;
}
.maintenance-message {
  font-size: clamp(16px, 2.5vw, 19px);
  font-weight: 800;
  line-height: 1.45;
  letter-spacing: .08em;
}
@media (max-width: 480px) {
  .maintenance-inner { gap: 9px; padding-block: 11px; }
  .maintenance-icon { flex-basis: 25px; width: 25px; height: 25px; }
}
