.reservation-page { overflow: hidden; background: #fff; color: #50636e; }
.reservation-shell { width: min(1080px, calc(100% - 48px)); margin-inline: auto; }
.reservation-label,
.reservation-heading > p { margin: 0 0 10px; color: #13aebb; font-size: 12px; font-weight: 700; letter-spacing: .22em; }
.reservation-page h2,
.reservation-page h3 { color: #234f69; font-family: "Zen Maru Gothic", sans-serif; }
.reservation-page h2 { margin: 0; font-size: clamp(30px, 4vw, 48px); line-height: 1.5; letter-spacing: .06em; }

.reservation-intro { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) 330px; gap: 80px; align-items: center; width: min(1080px, calc(100% - 48px)); margin: 92px auto 110px; }
.reservation-intro::before { position: absolute; z-index: -1; top: -95px; left: -70px; color: rgba(19,174,187,.06); content: "RESERVATION"; font: 700 clamp(76px, 12vw, 155px)/1 Helvetica, Arial, sans-serif; white-space: nowrap; }
.reservation-intro > p:not(.reservation-label) { grid-column: 1; max-width: 650px; margin: 26px 0 0; font-size: 17px; line-height: 2; }
.reservation-intro__contact { grid-row: 1 / span 3; grid-column: 2; padding: 30px; border-radius: 6px 30px 30px 30px; background: #edfafa; }
.reservation-intro__contact span,
.reservation-intro__contact small { display: block; font-size: 12px; line-height: 1.7; }
.reservation-intro__contact a { display: block; margin: 12px 0 8px; color: #167d8c; font-family: Helvetica, Arial, sans-serif; font-size: 27px; font-weight: 700; text-decoration: none; }

.reservation-policy { padding: 112px 0; background: #f6f2eb; }
.reservation-heading { max-width: 820px; }
.reservation-heading > strong,
.reservation-heading > span { display: block; margin-top: 20px; color: #68747b; font-size: 16px; line-height: 1.85; }
.reservation-heading > strong { color: #9d5f50; }
.reservation-policy__body { max-width: 900px; margin: 50px 0 58px auto; padding-left: 55px; border-left: 1px solid #d7c9bc; }
.reservation-policy__body p { margin: 0 0 1.3em; font-size: 16px; line-height: 2; }
.reservation-policy__emphasis { color: #8f5146; font-weight: 700; }
.reservation-policy__rules { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; }
.reservation-policy__rules article { position: relative; min-height: 285px; padding: 38px; overflow: hidden; background: rgba(255,255,255,.86); }
.reservation-policy__rules article::after { position: absolute; right: -16px; bottom: -30px; color: rgba(176,110,91,.06); content: "POLICY"; font: 700 82px/1 Helvetica, Arial, sans-serif; }
.reservation-policy__rules span { position: relative; z-index: 1; color: #c27f6d; font-size: 11px; font-weight: 700; letter-spacing: .18em; }
.reservation-policy__rules h3 { position: relative; z-index: 1; margin: 15px 0 18px; font-size: 21px; line-height: 1.6; }
.reservation-policy__rules p { position: relative; z-index: 1; margin: 0; font-size: 15px; line-height: 1.9; }

.reservation-consent { padding: 118px 0 125px; background: #e9f8f8; }
.reservation-heading--center { margin-inline: auto; text-align: center; }
.reservation-consent__inner { width: min(940px, calc(100% - 48px)); }
.reservation-checks { display: grid; gap: 12px; margin-top: 52px; }
.reservation-visit-overview { margin-top: 52px; }
.reservation-visit-overview__notice { display: flex; gap: 22px; align-items: flex-start; margin-bottom: 26px; padding: 28px 30px; border: 1px solid #efb6ad; border-radius: 18px; background: #fff5f3; }
.reservation-visit-overview__notice > span { display: grid; flex: 0 0 46px; width: 46px; height: 46px; place-items: center; border: 2px solid #e66f64; border-radius: 50%; color: #e66f64; font-size: 28px; font-weight: 700; }
.reservation-visit-overview__notice h3 { margin: 0 0 8px; color: #c94e45; font-size: 20px; line-height: 1.55; }.reservation-visit-overview__notice p { margin: 0; font-size: 15px; line-height: 1.85; }
.reservation-visit-overview__steps { display: grid; grid-template-columns: repeat(3,1fr); gap: 16px; margin: 0; padding: 0; list-style: none; }
.reservation-visit-overview__steps li { position: relative; min-width: 0; padding: 25px 22px 27px; border: 1px solid #cfe9e7; border-radius: 22px; background: #fff; text-align: center; box-shadow: 0 12px 30px rgba(46,97,122,.07); }.reservation-visit-overview__steps li:nth-child(2){border-color:#f1dfbd;background:#fffaf0}.reservation-visit-overview__steps li:nth-child(3){border-color:#f0d2dc;background:#fff7fa}
.reservation-visit-overview__steps li:not(:last-child)::after { content:"";position:absolute;z-index:2;top:50%;right:-13px;width:10px;height:10px;border-top:3px solid #86c7c4;border-right:3px solid #86c7c4;background:transparent;transform:translateY(-50%) rotate(45deg) }
.reservation-visit-overview__count { display:inline-flex;align-items:baseline;gap:3px;color:#159ca8;font-size:30px;font-weight:700;line-height:1 }.reservation-visit-overview__count small{font-size:12px}.reservation-visit-overview__steps li:nth-child(2) .reservation-visit-overview__count{color:#c98725}.reservation-visit-overview__steps li:nth-child(3) .reservation-visit-overview__count{color:#d87591}
.reservation-visit-overview__icon { width:82px;height:82px;margin:12px auto 15px;overflow:hidden;border-radius:16px;background:#fff }.reservation-visit-overview__icon img{display:block;width:100%;height:100%;object-fit:cover}.reservation-visit-overview__steps li:nth-child(2) .reservation-visit-overview__icon{box-shadow:0 0 0 5px rgba(255,241,214,.7)}.reservation-visit-overview__steps li:nth-child(3) .reservation-visit-overview__icon{box-shadow:0 0 0 5px rgba(253,232,239,.75)}
.reservation-visit-overview__steps h3 { margin:0 0 11px;font-size:18px;line-height:1.55 }.reservation-visit-overview__steps p{margin:0;font-size:14px;line-height:1.8;text-align:left}.reservation-visit-overview__note{margin:17px 0 0;font-size:13px;text-align:center}
.reservation-visit-overview__urgent{display:flex;gap:17px;align-items:center;margin-top:22px;padding:19px 24px;border:1px solid #e8b94e;border-radius:14px;background:#fff9e9}.reservation-visit-overview__urgent>span{display:grid;flex:0 0 35px;width:35px;height:35px;place-items:center;border:2px solid #d99716;border-radius:8px;color:#c47c00;font-size:22px;font-weight:700}.reservation-visit-overview__urgent p{margin:0;color:#615342;font-size:15px;line-height:1.75}.reservation-visit-overview__urgent strong{color:#d45b46}
.reservation-check-guide{display:flex;gap:18px;align-items:center;margin:42px 0 20px;padding:22px 26px;border:2px solid #37b8bf;border-radius:16px;background:#f8ffff}.reservation-check-guide>span{display:grid;flex:0 0 44px;width:44px;height:44px;place-items:center;border-radius:50%;background:#20aeb7;color:#fff;font-size:24px;font-weight:700}.reservation-check-guide strong{display:block;color:#176f79;font-size:19px}.reservation-check-guide p{margin:5px 0 0;font-size:14px;line-height:1.7}
.reservation-checks label { position: relative; display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 17px; align-items: start; padding: 24px 27px; border: 1px solid #d5e5e6; border-radius: 5px 20px 20px 20px; background: #fff; cursor: pointer; transition: border-color .2s ease, background .2s ease, transform .2s ease; }
.reservation-checks label:hover { border-color: #8ccfd3; transform: translateY(-1px); }
.reservation-checks label:has(input:checked) { border-color: #35b8bf; background: #f9ffff; }
.reservation-checks input { width: 24px; height: 24px; margin: 2px 0 0; accent-color: #12aebb; cursor: pointer; }
.reservation-checks span { font-size: 15px; line-height: 1.85; }
.reservation-checks b { display: block; margin-bottom: 5px; color: #28546b; font-family: "Zen Maru Gothic", sans-serif; font-size: 17px; }
.reservation-checks__policy { margin-top: 9px; border-width: 2px !important; border-color: #a7dfe1 !important; }

.reservation-submit { margin-top: 44px; text-align: center; }
.reservation-submit p { margin: 0 0 17px; color: #72828a; font-size: 14px; font-weight: 700; }
.reservation-submit button { display: inline-flex; gap: 48px; align-items: center; justify-content: center; min-width: min(100%, 480px); padding: 21px 28px; border: 0; border-radius: 999px; background: linear-gradient(110deg, #11aeb9, #42c8ad); box-shadow: 0 16px 34px rgba(18,164,172,.25); color: #fff; font: 700 18px/1.4 "Zen Maru Gothic", sans-serif; cursor: pointer; transition: transform .25s ease, box-shadow .25s ease, filter .25s ease; }
.reservation-submit button span { font-size: 25px; }
.reservation-submit button:not(:disabled):hover { box-shadow: 0 20px 40px rgba(18,164,172,.34); transform: translateY(-3px); }
.reservation-submit button:disabled { background: #cbd3d5; box-shadow: none; color: #f4f6f6; cursor: not-allowed; filter: grayscale(1); }
.reservation-submit small { display: block; margin-top: 13px; color: #7f9096; }
.reservation-submit__locked{display:block;margin-top:13px;color:#8b6565;font-size:13px}.reservation-submit.is-ready .reservation-submit__locked{display:none}
.reservation-submit.is-ready p { color: #0c929b; }

.reservation-flow { padding: 112px 0 125px; background: #fff; }
.reservation-flow__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 30px; margin-top: 48px; }
.reservation-flow__grid article { min-height: 295px; padding: 36px; border-top: 3px solid #18b2bd; background: #f5fbfc; }
.reservation-flow__grid article:nth-child(2) { border-color: #ef91a8; background: #fff7f9; }
.reservation-flow__grid span { color: #15a9b4; font-size: 11px; font-weight: 700; letter-spacing: .17em; }
.reservation-flow__grid h3 { margin: 17px 0 15px; font-size: 22px; }
.reservation-flow__grid p { min-height: 88px; margin: 0 0 24px; font-size: 15px; line-height: 1.85; }
.reservation-flow__grid a { display: inline-flex; gap: 12px; align-items: center; padding-bottom: 4px; border-bottom: 1px solid currentColor; color: #167f8b; font-weight: 700; text-decoration: none; }
.reservation-flow__grid article:nth-child(2) a { color: #c85f7a; }

@media (max-width: 800px) {
  .reservation-shell,
  .reservation-intro,
  .reservation-consent__inner { width: min(100% - 32px, 660px); }
  .reservation-intro { grid-template-columns: 1fr; gap: 32px; margin: 68px auto 78px; }
  .reservation-intro > p:not(.reservation-label) { grid-column: auto; }
  .reservation-intro__contact { grid-row: auto; grid-column: auto; }
  .reservation-policy,
  .reservation-consent,
  .reservation-flow { padding: 76px 0 82px; }
  .reservation-policy__body { margin: 38px 0 42px; padding-left: 24px; }
  .reservation-policy__rules,
  .reservation-flow__grid { grid-template-columns: 1fr; }
  .reservation-policy__rules article { min-height: 0; padding: 28px 25px; }
  .reservation-checks { margin-top: 38px; }
  .reservation-visit-overview__notice{display:block;padding:24px 20px}.reservation-visit-overview__notice>span{margin-bottom:14px}.reservation-visit-overview__notice h3{font-size:18px}.reservation-visit-overview__steps{grid-template-columns:1fr}.reservation-visit-overview__steps li{display:grid;grid-template-columns:48px 64px 1fr;gap:7px 12px;align-items:center;padding:22px 16px;text-align:left}.reservation-visit-overview__steps li:not(:last-child)::after{top:auto;right:50%;bottom:-12px;transform:translateX(50%) rotate(135deg)}.reservation-visit-overview__count{grid-row:1/3;grid-column:1;display:block;font-size:25px;text-align:center}.reservation-visit-overview__count small{display:block;margin-top:4px}.reservation-visit-overview__icon{grid-row:1/3;grid-column:2;width:64px;height:64px;margin:0}.reservation-visit-overview__steps h3,.reservation-visit-overview__steps p{grid-column:3}.reservation-visit-overview__steps h3{align-self:end;margin:0;font-size:17px}.reservation-visit-overview__steps p{align-self:start}
  .reservation-visit-overview__urgent,.reservation-check-guide{align-items:flex-start;padding:18px 16px}.reservation-visit-overview__urgent p{font-size:14px}.reservation-check-guide{margin-top:32px}.reservation-check-guide strong{font-size:17px}
  .reservation-checks label { grid-template-columns: 25px minmax(0, 1fr); gap: 13px; padding: 20px 18px; }
  .reservation-checks input { width: 22px; height: 22px; }
  .reservation-submit button { min-width: 100%; gap: 25px; font-size: 16px; }
  .reservation-flow__grid article { min-height: 0; padding: 28px 24px; }
  .reservation-flow__grid p { min-height: 0; }
}
