/* Shared tokens and components. Mobile defaults; wide-screen differences below. */
:root { --link-icon:url("../img/icon.webp"); --link-icon-gap:.5em; --paper:#fffdfa; --ivory:#f8f4ee; --blush:#f5e9e3; --grey:#f3f0eb; --sand:#ead8c6; --text-ink:#514337; --ink:var(--text-ink); --muted:#685950; --line:#d9c7b9; --border:#b29a83; --border-strong:#c9ac98; --hover:#e5d6c5; --width:1160px; --space:clamp(48px,5.5vw,76px); --font:"Noto Sans JP","Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif; --content-font:var(--font); --content-size:1.0625rem; --content-small:1rem; --content-leading:1.85; --content-heading-size:1.5rem; --content-subheading-size:1.25rem; --content-ink:var(--text-ink); --content-muted:#685950; --content-accent:#925f50; --radius-button:5px; --radius-box:7px; --radius-panel:9px; --rule-strong:#c5a58f; --panel-rule:#cfb6a6; --rule-soft:#cfb9ae; --label-rule:#c9a58f; --label-paper:#fffaf3; --leaf:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20160%20180%22%20fill=%22none%22%20stroke=%22%23a58170%22%20stroke-width=%221.3%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Cpath%20d=%22M32%20166C53%20135%2093%2091%20123%2017M54%20135C42%20115%2038%2096%2037%2081M72%20113C99%20112%20120%2097%20134%2082M91%2083C81%2068%2078%2049%2080%2031M109%2048C132%2044%20143%2032%20147%2018%22/%3E%3Cpath%20d=%22M46%20117C25%20116%2019%20103%2019%2094C33%2094%2043%20100%2046%20117ZM39%2098C24%2092%2023%2078%2027%2067C39%2075%2043%2084%2039%2098ZM37%2084C42%2074%2052%2070%2062%2073C56%2084%2049%2088%2037%2084ZM64%20121C53%20105%2057%2093%2063%2086C72%2098%2073%20110%2064%20121ZM95%20106C99%2091%20112%2086%20121%2089C116%20101%20105%20107%2095%20106ZM115%2096C120%20105%20131%20106%20140%20101C133%2094%20124%2091%20115%2096ZM91%2083C76%2083%2066%2074%2065%2064C78%2065%2087%2070%2091%2083ZM81%2060C84%2048%2095%2044%20104%2048C97%2060%2090%2064%2081%2060ZM81%2046C69%2037%2072%2023%2077%2015C86%2025%2088%2036%2081%2046ZM107%2054C97%2042%20100%2029%20109%2022C115%2034%20115%2045%20107%2054ZM127%2042C129%2028%20140%2017%20152%2015C149%2028%20139%2040%20127%2042ZM122%2022C111%209%20119%202%20130%202C132%2013%20129%2019%20122%2022Z%22/%3E%3C/svg%3E"); }
.page-content { --group-align:center; --group-flex:center; --line-margin:auto; color:var(--content-ink); font:var(--content-size)/var(--content-leading) var(--font); }
h2 { margin:0; line-height:1.6; overflow-wrap:break-word; font-size:var(--content-heading-size); }
h3 { margin:0; line-height:1.6; overflow-wrap:break-word; font-size:var(--content-subheading-size); }
* { box-sizing:border-box; }
html { scrollbar-gutter:stable; scroll-behavior:smooth; scroll-padding-top:24px; }
body { margin:0; background:var(--paper); color:var(--ink); font:17px/1.85 var(--font); -webkit-text-size-adjust:100%; }
h1 { margin:0; line-height:1.6; overflow-wrap:anywhere; font-size:clamp(24px,2.5vw,36px); }
p, figure, dl, dd { margin:0; }
a { color:inherit; text-decoration:none; }
a:hover { color:var(--content-accent); }
img { display:block; max-width:100%; height:auto; }
button { font:inherit; cursor:pointer; }
[hidden] { display:none; }
:focus-visible { outline:3px solid #a77e54; outline-offset:4px; }
.main-container { width:min(var(--width),calc(100% - 36px)); margin-inline:auto; }
.section { padding-block:44px; }
.section.section--compact { padding-block:clamp(28px,4vw,48px); }
.section--ivory { background:var(--ivory); }
.prose { overflow-wrap:anywhere; }
.prose--reading {
  max-width:920px;
  @media (min-width:768px) {
    /* Hotel section copy follows the main content width on desktop. */
    .sub-page:has(.hotel-overview-panel) .main-container > & { max-width:none; }
  }
}
.prose p+p { margin-top:16px; }
.prose--spaced p+p { margin-top:24px; }
.prose h3 { margin-block:26px 12px; }
.prose a { font-weight:600; }
.link-list { list-style:none; padding:0; margin:20px 0 0; display:flex; gap:8px 24px; flex-wrap:wrap; }
.link-list a { min-height:44px; display:inline-flex; align-items:center; }
.skip-link { position:fixed; left:12px; top:12px; padding:10px; background:var(--sand); z-index:100; transform:translateY(-180%); }
.skip-link:focus { transform:none; }
.site-header { background:var(--paper); }
.site-header__main { display:flex; align-items:center; gap:10px; min-height:78px; padding-block:10px; }
.site-header__brand { min-width:0; flex:1; }
.site-header__brand img { width:276px; }
.site-header__contact { display:none; text-align:right; width: max-content; flex-shrink: 0; }
.site-header__number { font-size:29px; font-weight:700; text-decoration:none; white-space:nowrap; }
.site-header__phone, .nav-toggle { display:flex; flex-direction:column; align-items:center; justify-content:center; min-width:54px; min-height:54px; gap:4px; background:#f3eade; border:1px solid #e5d7c7; border-radius:3px; padding:5px; color:var(--ink); font-size:12px; font-weight:700; text-decoration:none; flex-shrink:0; }
.site-header__phone svg { width:23px; height:23px; }
.nav-toggle[hidden] { display:none; }
.nav-toggle__icon { width:22px; height:16px; border-block:2px solid; position:relative; }
.nav-toggle__icon:after { content:""; position:absolute; left:0; right:0; top:5px; border-top:2px solid; }
.global-nav { background:var(--ivory); }
.global-nav ul { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); list-style:none; padding-block:8px; padding-left:0; margin-block:0; gap:4px; }
.global-nav a { display:flex; min-height:64px; align-items:center; justify-content:center; text-decoration:none; font-size:15px; font-weight:700; text-align:center; position:relative; }
.global-nav .sub { font-size:10px; color:var(--muted); font-weight:400; letter-spacing:.08em; }
.global-nav a:hover { background:#eee3d7; }
.global-nav a[aria-current="page"]::after { content:""; position:absolute; bottom:2px; left:calc(50% - 16px); width:32px; height:2px; background:#a48161; }
.button { display:inline-flex; align-items:center; justify-content:center; gap:12px; min-height:52px; padding:12px 22px; border:1px solid var(--border); border-radius:var(--radius-button); background:var(--paper); font-weight:700; font-size:16px; text-decoration:none; text-align:center; line-height:1.5; transition:background .15s; }
.button:hover { background:var(--hover); color:var(--ink); }
.button--phone { background:var(--sand); flex-direction:column; gap:2px; }
.button--phone:hover { background:#e0cfba; }
.button--phone strong { font-size:25px; letter-spacing:.02em; white-space:nowrap; }
.button--phone span { font-size:14px; }
.button--menu { background:var(--label-paper); }
.button--menu:after { content:"→"; margin-left:auto; }
.image-text { display:grid; gap:28px; align-items:start; }
.image-text__copy { min-width:0; }
.service-intro { margin-bottom:28px; }
.service-intro img { width:100%; height:auto; }
.feature-grid { display:grid; gap:0 32px; margin-top:32px; }
.feature { padding-block:24px; border-top:1px solid var(--line); }
.feature h3 { font-size:var(--content-subheading-size); margin:0; }
.feature p+p { margin-top:12px; }
.notice { margin-top:28px; padding:20px 24px; border-left:3px solid #c3a689; background:var(--ivory); font-size:var(--content-small); }
.notice p+p { margin-top:10px; }
.area-grid { display:grid; gap: 18px; margin-top: 28px; }
.area-block { border-top:1px solid var(--line); padding-top:24px; min-width:0; }
.area-block h3 { font-size:21px; margin-bottom:12px; }
.area-block p { font-size:var(--content-size); overflow-wrap:anywhere; }
.area-block p+p { margin-top:14px; }
.area-block .area-links { display:flex; flex-direction:column; gap:10px; margin-top:16px; }
.area-links a { min-height:44px; display:flex; align-items:center; font-size:var(--content-small); font-weight:700; }
.area-photo-row { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; margin:20px 0 24px; }
.area-photo-row img { width:100%; height:auto; }
.area-index { margin:20px 0 12px; display:flex; flex-wrap:wrap; gap:8px 20px; }
.area-index a { font-size:var(--content-small); min-height:44px; display:flex; align-items:center; }
.area-block:target { background:#f7f0e7; }
.story-grid { display:grid; gap:24px; margin-top:24px; }
.story-grid h3 { font-size:20px; margin-bottom:12px; }
.tourism-grid { display:grid; gap:32px; }
.tourism-grid article { min-width:0; }
.tourism-grid img { width:100%; height:auto; }
.tourism-grid p { font-size:var(--content-size); }
.site-footer { padding:40px 0 110px; border-top: 1px solid var(--line); background: var(--paper); }
.site-footer__brand img { width:250px; margin:0; }
.site-footer__links { display:flex; flex-wrap:wrap; gap:8px 24px; margin-bottom:24px; }
.site-footer__links a { min-height:44px; display:inline-flex; align-items:center; font-size:14px; text-decoration:none; }
.site-footer__credit { color:var(--muted); line-height:2; text-align: center; font-size: 12px; }
.site-footer__top { display:inline-flex; min-height:44px; align-items:center; gap: 24px; padding: 10px 20px; border: 1px solid var(--line); border-radius: 3px; text-decoration: none; font-size: 14px; }
.mobile-call { position:fixed; bottom:0; inset-inline:0; padding:8px 16px calc(8px + env(safe-area-inset-bottom)); background:#fffdf9f5; z-index:30; box-shadow:0 -2px 12px #5a463a0c; }
.mobile-call .button { width:100%; min-height:50px; flex-direction:row; gap:6px; font-size:14px; box-shadow:0 4px 12px rgba(81,67,55,.25),0 1px 3px rgba(81,67,55,.18); }
.mobile-call strong { font-size:18px; }
#shop_status { margin:6px 0 4px 0; font-size:14px; font-weight:bold; display:flex; align-items:center; gap:6px; }
.status_dot { width:10px; height:10px; border-radius:50%; display:inline-block; animation:blink 1.3s infinite; }
.status_open { color:#188038; }
.status_open .status_dot { background:#2db84d; box-shadow:
0 0 4px #2db84d,
0 0 8px #2db84d; }
.status_close { color:#c62828; }
.status_close .status_dot { background:#d32f2f; box-shadow:
0 0 4px #d32f2f,
0 0 8px #d32f2f; }
.status_prepare { color:#d28b00; }
.status_prepare .status_dot { background:#ffb300; box-shadow:
0 0 4px #ffb300,
0 0 8px #ffb300; }
#shop_status_sp { display:inline-flex; align-items:center; gap:6px; font-size:14px; font-weight:bold; margin:0; }
.site-header #shop_status { width: 100%; margin: 0; justify-content: center; font-size: 16px; line-height: 24.6875px; height: 24.6875px; white-space: nowrap; contain: inline-size; }
.site-header .status_dot { flex-shrink: 0; }
.site-header__brand-stack { flex: 1; min-width: 0; }
.site-header__brand-stack > .site-header__brand { display: block; }
.site-header #shop_status_sp { display: none; }
.site-header__number-row { width: max-content; }
.link-box-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 12px; list-style: none; padding: 0; }
.link-box-list > li { min-width: 0; }
.link-box-list .link-box { display: flex; align-items: center; justify-content: space-between; gap: 16px; width: 100%; height: 100%; min-height: 54px; padding: 13px 16px; border: 1px solid var(--line); border-radius:var(--radius-button); background: var(--paper); font-weight: 600; text-decoration: none; color:var(--content-ink); font-size:var(--content-small); line-height:1.5; }
.link-box-list .link-box:hover { background: var(--ivory); border-color: var(--border); }
.link-box__text { min-width:0; word-break:auto-phrase; overflow-wrap:anywhere; text-wrap:pretty; }
.link-box-arrow { flex-shrink: 0; margin-left: auto; color: var(--muted); }
.card-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; }
.link-card { border: 1px solid var(--line); border-radius:var(--radius-box); background: var(--paper); padding: 24px; min-width: 0; display: flex; flex-direction: column; gap: 10px; position: relative; padding-right: 48px; color:var(--content-ink); text-decoration: none; line-height: 1.8; }
.area-grid .area-card { border: 1px solid var(--line); border-radius:var(--radius-box); background: var(--paper); padding: 24px; min-width: 0; position: relative; display: flex; flex-direction: column; }
.guide-panel { border: 1px solid var(--line); border-radius:var(--radius-box); padding: 24px; min-width: 0; background: var(--ivory); }
.guide-panel--actions { display:grid; gap:20px; align-items:center; background:var(--paper); }
.link-card strong { font-size: 18px; line-height: 1.6; }
.link-card__description, .link-card .small { font-size:var(--content-small); color:var(--content-muted); }
.link-card em { font-size: 11px; font-style: normal; color: var(--muted); letter-spacing: .06em; }
.link-card:hover, .area-grid .area-card:hover { background: var(--ivory); border-color: var(--border); }
.area-card h3 { font-size: 20px; text-align:var(--group-align); padding-right: 24px; margin: 0 0 16px; }
.area-card h3::after { content: "→"; position: absolute; right: 24px; top: 24px; font-weight: 400; }
.area-card > div { display: flex; flex: 1; flex-direction: column; }
.area-card .area-card__links { margin-top: auto; padding-top: 20px; gap: 0; }
.area-card__links .link-box { background: transparent; border: 0; border-top: 1px solid var(--line); border-radius: 0; height: auto; padding: 12px 0; font-size:var(--content-small); }
.area-card__primary::before { content: ""; position: absolute; inset: 0; border-radius: 4px; }
.area-card__links .link-box:not(.area-card__primary) { position: relative; z-index: 1; }
.area-card__primary:focus-visible::before { outline: 3px solid #a77e54; outline-offset: 3px; }
.guide-layout, .hotel-guide__layout { display: grid; gap: 28px; align-items: start; }
.guide-features { display: grid; gap: 18px; align-content:start; }
.guide-links { grid-template-columns: minmax(0, 1fr); margin: 24px 0 0; }
.flow-cards { display: grid; grid-template-columns: minmax(0, 1fr); align-items: stretch; gap: 12px; padding: 0; margin: 0; list-style: none; }
.flow-card { display:grid; grid-template-columns:100px minmax(0,1fr); align-items:center; gap:16px; padding:16px; border:1px solid var(--line); border-radius:var(--radius-box); background:var(--paper); min-width:0; }
.flow-card__image { display: block; grid-column: 1; width: 100%; max-width: 234px; height: auto; aspect-ratio: 234 / 328; object-fit: contain; margin: 0 auto; border-radius:var(--radius-button); }
.site-footer > .main-container { display: flex; flex-direction: column; align-items: center; gap: 26px; }
.site-footer .footer-nav { display: grid; width: 100%; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 20px; margin: 0; }
.footer-nav a { min-width: 0; margin: 0; padding: 12px 8px; border-bottom: 1px solid var(--line); line-height: 1.7; text-align: left; overflow-wrap: anywhere; }
.site-footer__line { display: block; margin-inline: auto; min-width: 0; min-height: 48px; padding: 10px 8px; border: 0; border-radius: 8px; background: #06C755; color: #FFFFFF; font-size: 14px; font-weight: 600; line-height: 1.8; text-align: center; text-wrap: balance; text-decoration: none; }
@media (max-width:1024px) {
  .site-footer__line { width: 100%; }
}
@media (min-width:1025px) {
  .site-footer__line { width: 75%; max-width: 900px; }
}
.site-footer__line:hover { background: #05AD49; }
.site-footer__line-icon { display: inline-block; width: 28px; height: 28px; margin-right: 8px; vertical-align: middle; }
.site-footer__credit a { text-decoration: none; }
.site-footer__top:hover { background: var(--ivory); }
.image-frame { display: block; box-sizing: border-box; width: calc(100% + 12px); margin: 0 -6px; padding: 5px; border: 1px solid #d8c8b6; background: #fff; border-radius: 2px; min-width: 0; }
.image-frame > .framed-image { margin: 0; }
.prose .image-frame { margin-bottom: 12px; }
.area-photo-row > .image-frame { width: 100%; margin: 0; }
.section-title { text-align:var(--group-align); margin-bottom:24px; }
.heading-lines { margin-inline:-8px; text-align:var(--group-align); }
.heading-line { display:block; }
.heading-line--context { font-size:var(--content-subheading-size); }
.section-title--botanical { position:relative; padding-top:64px; }
.section-title--botanical::after { content:""; position:absolute; top:0; right:0; width:48px; height:52px; background:var(--leaf) center/contain no-repeat; opacity:.35; pointer-events:none; }
.reading-flow { display:grid; gap:24px; }
.reading-flow > .section-title { margin-bottom:0; }
.reading-flow > .first-guide { margin-top:0; }
.section-title::before { display:block; margin-bottom:8px; color:var(--content-accent); font-size:.75rem; font-weight:600; letter-spacing:.16em; }
.section-title h2 { font-size:var(--content-heading-size); letter-spacing:.025em; }
.section-title h2.text-flow { word-break:auto-phrase; text-wrap:balance; }
.section-title h2::after, .section-title h3::after { content:""; display:block; width:46px; height:1px; margin-top:16px; margin-inline:var(--line-margin); background:var(--content-accent); }
.section-title__lead { max-width:50em; margin-top:16px; color:var(--content-muted); font-size:var(--content-size); text-align:var(--group-align); text-wrap:balance; }
.guide-links-list { display:grid; gap:12px; list-style:none; margin:22px 0 0; padding:0; }
.guide-links-list > li { min-width:0; margin:0; }
.guide-links-list a { min-height:44px; }
.heading-kicker { display:flex; align-items:center; justify-content:var(--group-flex); gap:12px; margin-bottom:12px; color:var(--content-accent); font-size:.75rem; font-weight:600; letter-spacing:.14em; }
.heading-kicker::before { content:""; display:none; width:28px; height:1px; background:var(--line); }
.heading-kicker::after { content:""; width:28px; height:1px; background:var(--line); }
.guide-link-wrap { margin-top:20px; text-align:var(--group-align); }
/* Shared link icons: center the icon and label, with a half-width character gap. */
.icon-link { display:inline-flex; align-items:center; gap:var(--link-icon-gap); }
.icon-link > span { min-width:0; }
.link-icon { display: inline-block; width: 12px; height: 12px; flex: 0 0 12px; vertical-align: middle; }
.hotel-link { --link-icon: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23925f50%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M5%2021V3h14v18M3%2021h18M10%2021v-5h4v5M8%207h1m6%200h1M8%2011h1m6%200h1%22%2F%3E%3C%2Fsvg%3E"); }
.guide-link { display:inline-flex; align-items:center; gap:var(--link-icon-gap); max-width:100%; min-height:44px; margin-block:4px; padding:10px 12px; border:1px solid var(--line); border-radius:var(--radius-button); background:var(--paper); color:var(--content-ink); font-size:var(--content-small); font-weight:600; line-height:1.5; text-align:left; vertical-align:middle; text-decoration:none; }
.guide-link:hover { background:var(--ivory); color:var(--content-ink); }
.guide-link::after { content:"→" / ""; flex:none; margin-left:auto; color:var(--muted); font-weight:400; }
.guide-link > img { display:block; flex:0 0 12px; width:12px; height:12px; margin:0; border:0; border-radius:0; }
.guide-link > span { min-width:0; word-break:auto-phrase; overflow-wrap:anywhere; text-wrap:pretty; }
.price-panel { border:1px solid var(--line); border-top:3px solid var(--rule-strong); border-radius:var(--radius-box); background:var(--paper); margin-top:28px; padding:22px 16px; }
.price-rates { margin:22px 0 0; padding:0; list-style:none; }
.price-rate { display:block; padding:18px 0; border-bottom:1px solid var(--line); }
.price-rate:first-child { border-top:1px solid var(--line); }
.price-rate__name { align-self:end; font-size:var(--content-small); font-weight:600; }
.price-rate__numbers { display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:12px; margin-block:7px; }
.price-rate__time { font-size:1.375rem; font-weight:600; white-space:nowrap; }
.price-rate__amount { margin-left:auto; font-size:1.75rem; font-weight:700; line-height:1.3; white-space:nowrap; font-variant-numeric:tabular-nums; }
.price-rate__amount small { margin-left:3px; font-size:var(--content-small); font-weight:500; }
.price-rate__note { align-self:start; color:var(--content-muted); font-size:var(--content-small); line-height:1.8; }
.price-rate--extension .price-rate__time { max-width:58%; font-size:var(--content-small); white-space:normal; }
.price-notes { margin-top:20px; color:var(--content-muted); font-size:var(--content-small); }
.recommend-panel, .reservation-panel { position:relative; isolation:isolate; margin-inline:auto; padding:24px 16px; border:1px solid var(--border-strong); border-radius:var(--radius-panel); background:var(--blush); }
.recommend-panel { max-width:1120px; }
.recommend-panel::before, .reservation-panel::before { content:""; position:absolute; top:10px; right:12px; width:28px; height:30px; background:var(--leaf) center/contain no-repeat; opacity:.45; pointer-events:none; }
.recommend-panel .section-title, .reservation-panel .section-title { text-align:center; margin-bottom:20px; --line-margin:auto; }
.recommend-panel .section-title h2::after { margin-inline:auto; }
.recommend-label { display:inline-flex; flex-direction:column; align-items:center; gap:3px; margin-bottom:14px; padding:5px 20px; border:1px solid var(--label-rule); border-radius:24px; background:var(--label-paper); color:var(--content-accent); font-size:var(--content-small); font-weight:600; letter-spacing:.05em; }
.recommend-label > span { font-size:.6875rem; letter-spacing:.16em; }
.first-guide { display:grid; grid-template-columns:minmax(0,1fr); width:100%; max-width:920px; margin:28px auto 0; }
.first-guide__link { display:grid; grid-template-columns:minmax(0,1fr) min(45%,280px); align-items:center; width:100%; border:1px solid #c7ad9c; border-radius:var(--radius-box); background:var(--paper); text-decoration:none; position:relative; gap:12px; padding:12px; }
.first-guide__link > img { display:block; grid-column:2; grid-row:1; width:100%; max-width:280px; height:auto; margin:0; border-radius:4px; }
.first-guide__text { display:flex; grid-column:1; grid-row:1; flex-direction:column; gap:8px; min-width:0; font-size:.9375rem; line-height:1.8; text-align:left; }
.first-guide__label { font-size:1.1875rem; font-weight:700; }
.first-guide__cta { margin-top: 4px; color: var(--content-accent); font-weight: 600; text-decoration: underline; text-underline-offset: 4px; }
.first-guide__link:hover { background:var(--ivory); }
.recruit-panel { max-width:900px; margin:40px auto 0; border:1px solid var(--line); border-radius:var(--radius-box); background:var(--ivory); padding:22px 16px; }
.recruit-panel__banner { border-radius:var(--radius-button); overflow:hidden; display:block; }
.recruit-panel__banner img { display:block; width:100%; height:auto; margin:0; }
.recruit-panel p { margin-top:18px; font-size:var(--content-size); }
.recruit-panel .recruit-panel__link { margin-top:8px; }
#reservation { background:var(--paper); }
.reservation-panel { width:100%; max-width:940px; text-align:center; }
.reservation-intro > span { display:block; text-wrap:balance; }
.reservation-lead { margin-bottom:20px; font-size:clamp(1.5rem,2.3vw,1.9375rem); font-weight:700; line-height:1.6; }
.reservation-panel--connected .reservation-lead { margin-bottom:8px; }
.reservation-panel--connected .reservation-intro { max-width:38em; margin-inline:auto; text-align:left; }
.reservation-panel .section-title h2 { font-size:var(--content-heading-size); }
.reservation-panel .section-title h2::after { margin-inline:auto; }
.contact-actions { display:flex; flex-direction:column; gap:14px; max-width:480px; margin:26px auto; }
.contact-actions--compact { width:min(100%,1040px); margin-inline:auto; }
.contact-actions--compact > .story-grid, .story-grid.contact-actions--compact { gap:14px; grid-auto-rows:1fr; }
.content-button { display:flex; align-items:center; justify-content:center; gap:6px; min-height:50px; padding:13px 18px; border:1px solid #b7937c; border-radius:var(--radius-button); background:var(--paper); text-decoration:none; font-size:var(--content-small); font-weight:600; line-height:1.7; text-align:center; }
.content-button--phone { flex-direction:column; background:var(--sand); }
.content-button--phone strong { display:flex; flex-wrap:wrap; justify-content:center; max-width:100%; font-weight:700; line-height:1.4; white-space:normal; font-size:1.75rem; }
.content-button--phone > span { font-size:var(--content-small); }
.reservation-panel .reservation-panel__hours { font-size:var(--content-small); line-height:1.9; text-align:center; }
.hours-row { display:block; text-wrap:balance; }
.hours-row + .hours-row { margin-top:3px; }
.contact-button { max-width:480px; margin-inline:auto; background:transparent; }
.reservation-panel .reservation-panel__notice { margin-top:24px; padding-top:20px; border-top:1px solid #d7bcab; color:var(--content-muted); font-size:var(--content-small); }
.section-title--minor h3 { font-size:1.25rem; }
.section-title h3 { margin:0; }
.section-title--minor { margin-bottom:18px; }
.feature .section-title { margin-bottom:0; }
.feature .section-title__lead { margin-top:16px; }
.price-panel .content-button { display:flex; margin-top:20px; width:100%; }
.recommend-summary { margin-top:32px; }
.recommend-summary strong { color:var(--content-accent); }
.recommend-summary .section-title h3::after { margin-inline:auto; }
.recruit-panel .section-title { margin-bottom:20px; }
.recruit-panel .section-title h2, .recruit-panel .section-title h3 { font-size:var(--content-subheading-size); }
.reservation-panel > p + p { margin-top:10px; }
.content-button--next { justify-content:space-between; text-align:left; }
.content-button--next::after { content:"→"; margin-left:auto; flex:none; }
.content-button--line strong { color:var(--line-label-color,#008a3b); }
.sub-page:has(#apply-top) .content-button--line[href="https://line.me/R/ti/p/@415cbdqb"] {
  --control-bg:#06C755; --control-hover:#06C755; --control-ink:#fff; --line-label-color:#fff; --content-muted:#fff;
}
.phone-part { white-space:nowrap; }
.faq-group { max-width:920px; margin-inline:auto; }
.faq { border-bottom:1px solid var(--line); }
.faq:first-child { border-top:1px solid var(--line); }
.faq summary { display:flex; align-items:flex-start; gap:12px; cursor:pointer; list-style:none; position:relative; padding:21px 32px 21px 0; font-size:var(--content-size); font-weight:600; line-height:1.8; }
.faq summary::-webkit-details-marker { display:none; }
.faq__mark { flex:0 0 36px; color:var(--content-accent); }
.faq summary::after { content:"＋"; position:absolute; right:2px; top:21px; color:var(--content-accent); font-weight:400; }
.faq[open] summary::after { content:"−"; }
.faq__body { padding:0 10px 24px 48px; font-size:var(--content-size); line-height:1.85; overflow-wrap:break-word; }
.faq__body p + p { margin-top:14px; }
.faq__body a, .prose a:not([class]) { color:var(--content-accent); font-weight:600; }
.flow-card__copy { grid-column:2; min-width:0; margin:0; text-align:var(--group-align); }
.flow-card__number { display:flex; align-items:center; justify-content:center; width:34px; height:34px; margin:0 auto 12px; border-radius:50%; background:var(--content-accent); color:white; font-size:19px; }
.flow-card__copy .section-title__lead { font-size:var(--content-size); }
.flow-card__copy h3 { font-size:var(--content-subheading-size); }
.card-arrow { position:absolute; right:16px; top:22px; color:var(--content-accent); }
.first-guide__link .card-arrow { top:auto; bottom:12px; }
.footer-nav a[aria-current="page"] { color:var(--content-accent); font-weight:700; }
.price-stat { display:grid; grid-template-rows:auto auto; justify-items:center; gap:8px; text-align:center; }
.price-stat + .price-stat { border-left:1px solid #ceb1a1; }
.price-stat__label { font-size:var(--content-small); font-weight:500; line-height:1.5; }
.price-stat__value { display:block; font-size:2.125rem; font-weight:700; line-height:1.2; white-space:nowrap; font-variant-numeric:tabular-nums; }
.price-stat__value small { margin-left:4px; font-size:1.125rem; font-weight:500; }
.price-total__sum { display:flex; flex-wrap:wrap; align-items:baseline; justify-content:var(--group-flex); gap:8px 18px; }
.price-total__sum strong { font-size:1.75rem; white-space:nowrap; }
.price-total__sum strong small { margin-left:3px;font-size:var(--content-small);font-weight:500; }
.price-total__breakdown { margin-top:12px; }
.fee-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px; align-items:start; }
.fee-grid > div { min-width:0; padding:28px; border:1px solid var(--line); border-radius:7px; background:var(--paper); }
.fee-grid > div::before { display:block; margin-bottom:12px; color:var(--content-accent); font-size:.75rem; font-weight:600; letter-spacing:.2em; text-align:var(--group-align); }
.fee--home::before { content:"HOME"; }
.fee--hotel::before { content:"HOTEL"; }
.fee-grid h3 { margin:0 0 16px; font-size:1.25rem; text-align:var(--group-align); }
.fee-grid .fee--home { border-color:#bf9b87; border-top-width:3px; background:#faeee8; }
.fee-grid > .fee--airy { padding-block:36px; --group-align:center; --line-margin:auto; }
.fee__free { margin-bottom:12px; color:var(--content-accent); font-size:1.875rem; font-weight:700; text-align:var(--group-align); }
.fee__lead { margin-bottom:16px; font-size:var(--content-small); text-align:var(--group-align); }
.fee__conditions { margin:0 0 20px; padding:16px 8px 16px 24px; border-block:1px solid #dac1b3; font-size:var(--content-small); }
.fee__conditions li + li { margin-top:5px; }
.fee__value { display:block; margin-top:14px; font-size:1.625rem; font-weight:600; line-height:1.4; }
.fee__value small { font-size:var(--content-small); margin-left:3px; }
.fee-examples { margin:22px 0 0; }
.fee-examples--aligned { margin-top:0; }
.fee-examples > div { display:flex; flex-wrap:wrap; align-items:baseline; gap:6px 12px; padding:16px 0; border-top:1px solid var(--line); }
.fee-examples > div:last-child { padding-bottom:0; }
.fee-examples dt { flex:1 1 auto; min-width:0; font-size:var(--content-size); font-weight:600; }
.fee-examples__total { display:flex;flex-wrap:wrap;gap:0 .2em;margin:0; font-size:1.375rem; font-weight:700; line-height:1.6; white-space:normal; font-variant-numeric:tabular-nums; }
.fee-examples__total strong { white-space:nowrap; }
.fee-examples__total small { margin-left:3px;font-size:var(--content-small);font-weight:500; }
.fee-examples__detail { display:flex; flex-wrap:wrap; flex:0 0 100%; gap:0 .1em; margin:0; color:var(--content-muted); font-size:var(--content-small); line-height:1.85; }
.fee-examples__detail > span { display:inline-block; }
.payment-note { margin-top:18px; color:var(--content-muted); font-size:var(--content-small); }
.course-choices { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; margin:0; }
.course-choices > div { min-width:0; display:flex; flex-direction:column; gap:12px; padding:24px; border:1px solid var(--line); border-radius:7px; background:#fff; text-align:var(--group-align); }
.course-choices dt { display:flex; flex-direction:column; gap:10px; }
.course-choices dd { display:flex; flex-direction:column; gap:12px; margin:0; }
.course-choice__number { color:var(--content-accent); font-size:1.75rem; font-weight:500; line-height:1.2; }
.course-choice__title { min-width:0; font-size:1.125rem; font-weight:600; line-height:1.8; }
.course-choice__course { display:block; align-self:center; width:100%; min-width:0; min-height:44px; padding-block:2px; font-size:var(--content-size); font-weight:700; line-height:1.8; }
.course-choice__service { display:block; }
.course-choice__times { display:flex; flex-wrap:wrap; align-items:baseline; justify-content:var(--group-flex); gap:0 .1em; }
.course-choice__note { display:block; min-width:0; color:var(--content-muted); font-size:var(--content-small); line-height:1.85; }
.content-notice { margin-top:28px; padding:20px 0 0; border-top:1px solid var(--line); color:var(--content-muted); font-size:var(--content-small); }
.section-title[data-label]::before { content:attr(data-label); }
@media (min-width:768px) {
  .site-header__main { min-height:96px; padding-block:16px; }
  .site-header__contact { display:block; }
  .site-header__phone, .nav-toggle { display:none; }
  .global-nav ul { grid-template-columns:repeat(6,minmax(0,1fr)); padding-block:0; }
  .global-nav a { min-height:66px; }
  .feature-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px 48px; }
  .area-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .image-text { grid-template-columns:1fr 1fr; gap:40px; }
  .service-intro { grid-template-columns:.75fr 1.25fr; align-items:center; }
  .story-grid { grid-template-columns:1fr 1fr; gap:32px; }
  .tourism-grid { grid-template-columns:1fr 1fr; gap:40px; }
  .mobile-call { display:none; }
  .site-footer { padding-bottom:30px; }
  .site-header__contact p { font-size: 16px; line-height: 24.6875px; }
  .card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .guide-panel--actions, .link-box-list.link-box-list--paired { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .fee-examples--aligned > div { flex-wrap:nowrap; gap:24px; }
  .fee-examples--aligned dt { flex:0 0 160px; }
  .fee-examples--aligned .fee-examples__detail { flex:1; min-width:0; }
  .guide-layout { grid-template-columns: 1.2fr 1fr; gap: 36px; }
  .hotel-guide__layout { grid-template-columns: 1fr 1fr; gap: 36px; }
  .flow-cards { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .flow-card { display: flex; flex-direction: column; align-items: center; }
  .section { padding-block:var(--space); }
  .price-rate { display:grid; grid-template-columns:minmax(0,1fr) minmax(270px,.85fr); gap:4px 26px; align-items:center; }
  .price-rate__numbers { grid-column:2; grid-row:1/span 2; margin:0; }
  .price-rate__time { font-size:1.5rem; }
  .price-rate__amount { font-size:1.875rem; }
  .section-title { margin-bottom:28px; }
  .price-panel { margin-top:36px; padding:26px clamp(18px,3vw,34px) 24px; }
  .recruit-panel { padding:26px; }
  .recommend-panel, .reservation-panel { padding:32px clamp(20px,4vw,40px); }
  .content-button--phone strong { font-size:1.875rem; }
  .first-guide__link { gap:16px; padding:14px; }
}
@media (max-width:767px) {
  .global-nav[data-collapsed="true"] { display:none; }
  .site-header__brand img { width:min(100%,210px); }
  .site-header__phone, .nav-toggle { width: 57px; min-width: 57px; height: calc(39px + 1.9em); padding: 5px 3.5px; border: 1px solid #e5d7c7; border-radius: 3px; font-size: 12px; line-height: 1.9; gap: 4px; grid-row: 1; }
  .site-header__phone { grid-column:2; }
  .nav-toggle { grid-column:3; }
  .site-header__phone svg, .nav-toggle__icon { width: 23px; height: 23px; flex-shrink: 0; border: 0; }
  .nav-toggle__icon::after { content: none; }
  .site-header__main { display: grid; grid-template-columns: minmax(0, 1fr) 57px 57px; grid-template-rows: 61.796875px 22.796875px; row-gap: 4px; padding-bottom: 5px; }
  .site-header__brand-stack { grid-column: 1; grid-row: 1 / 3; display: grid; grid-template-rows: subgrid; width: min(210px, 100%); }
  .site-header__brand-stack > .site-header__brand { grid-row: 1; align-self: center; }
  .site-header #shop_status_sp { grid-row: 2; display: flex; justify-content: center; width: 100%; height: 22.796875px; line-height: 22.796875px; font-size: 14px; white-space: nowrap; }
  .link-card { padding: 20px; padding-right: 44px; color:var(--content-ink); }
  .area-grid .area-card, .guide-panel { padding: 20px; }
  .area-card h3::after { top: 20px; right: 20px; }
  body { word-break: normal; overflow-wrap: break-word; line-break: strict; }
  h1, .prose, .area-block p { overflow-wrap: break-word; }
  .no-break { display:inline-block; max-width:100%; white-space:normal; }
  .desktop-break { display: none; }
  .reading-link { display: block; margin-block: 8px; }
  .guide-link { width:100%; }
  .mobile-line { display: block; white-space:normal; }
  .recommend-summary .recommend-label { margin-bottom:0; }
  .guide-features .guide-panel { padding:16px 14px; }
  .text-flow { word-break:auto-phrase; text-wrap:pretty; }
  .section-title h2.text-flow { font-size:clamp(20px,5.2vw,24px); letter-spacing:0; }
  .price-stat__value { font-size:2rem; }
  .fee-grid { gap:16px; }
  .fee-grid > div { padding:24px 18px; }
  .course-choices { grid-template-columns:repeat(auto-fit,minmax(min(100%,max(9rem,calc((100% - 12px)/2))),1fr)); gap:12px; }
  .course-choices > div { padding:20px 12px; }
  .course-choice__title { font-size:var(--content-size); }
  .course-choice__course { font-size:var(--content-small); }
}
@media (max-width:359px) {
  .recommend-panel { padding-inline:14px; }
  .main-container { width:calc(100% - 28px); }
  .site-header__main { gap:7px; }
}
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  * { transition:none; }
}
@media (min-width:1024px) {
  .link-box-list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (min-width:1100px) {
  .card-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width:767px),(min-width:768px) and (max-width:1100px) and (orientation:portrait) {
  .section-title__lead { font-size:var(--content-size); text-align:var(--group-align); margin-inline:auto; }
  .heading-kicker::before { display:block; }
  .story-grid h3 { text-align:center; }
  .guide-layout, .hotel-guide__layout { grid-template-columns:minmax(0,1fr); }
  .fee__lead { text-wrap:balance; }
  .fee-grid { grid-template-columns:minmax(0,1fr); }
}
@media (min-width:768px) and (orientation:landscape),(min-width:1101px) {
  .page-content { --group-align:left; --group-flex:flex-start; --line-margin:0; --content-heading-size:clamp(1.5rem,2.25vw,1.9375rem); }
  .flow-cards { grid-template-columns:repeat(5,minmax(0,1fr)); }
  .flow-card__number { margin-inline:0; }
}
@supports (grid-template-rows:subgrid) {
  .course-choices > div { display:grid; grid-row:span 4; grid-template-rows:subgrid; row-gap:10px; }
  .course-choices dt, .course-choices dd { display:contents; }
}
@media (max-width:374px) {
  .course-choices { grid-template-columns:minmax(0,1fr); }
}
@keyframes blink { 0%,100% { opacity:1; } 50% { opacity:.4; } }

/* Shared visual system for the home and menu pages.
   Home-specific compositions remain scoped to .home-page. */
:is(.home-page,.menu-page),
.sub-page > :is(.site-header,.page-content,.mobile-call) {
  --width:1240px;
  --paper:#FFFFFF;
  --ivory:#FAF8F4;
  --blush:var(--ivory);
  --grey:var(--ivory);
  --ink:var(--text-ink);
  --heading:var(--text-ink);
  --muted:#685950;
  --content-ink:var(--ink);
  --content-muted:var(--muted);
  --content-accent:#74685C;
  --accent-hover:#62584E;
  --sand:var(--content-accent);
  --line:#DDD6CC;
  --border:var(--line);
  --border-strong:var(--line);
  --hover:#F1EDE7;
  --rule-strong:var(--line);
  --rule-soft:var(--line);
  --panel-rule:var(--line);
  --label-paper:var(--ivory);
  --label-rule:var(--line);
  --radius-button:6px;
  --radius-box:8px;
  --radius-panel:8px;
  --leaf:none;
  --heading-sprig:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2042%22%20fill%3D%22none%22%3E%3Cpath%20d%3D%22M8%2040C10%2031%2013%2022%2014%207%22%20stroke%3D%22%2370796B%22%20stroke-width%3D%221.25%22%20stroke-linecap%3D%22round%22%2F%3E%3Cg%20fill%3D%22%237E8877%22%3E%3Cpath%20d%3D%22M10%2033C4%2032%202%2028%203%2025C7%2026%2010%2029%2010%2033Z%22%2F%3E%3Cpath%20d%3D%22M10%2030C15%2026%2020%2026%2021%2028C17%2031%2014%2032%2010%2030Z%22%2F%3E%3Cpath%20d%3D%22M12%2025C7%2024%204%2021%205%2018C9%2019%2012%2022%2012%2025Z%22%2F%3E%3Cpath%20d%3D%22M12%2022C16%2019%2020%2019%2021%2021C18%2024%2015%2024%2012%2022Z%22%2F%3E%3Cpath%20d%3D%22M13%2017C9%2016%207%2013%208%2011C11%2012%2013%2014%2013%2017Z%22%2F%3E%3C%2Fg%3E%3Cg%20fill%3D%22%23909486%22%3E%3Cellipse%20cx%3D%2214.5%22%20cy%3D%224%22%20rx%3D%221.5%22%20ry%3D%223%22%20transform%3D%22rotate%2812%2014.5%204%29%22%2F%3E%3Cellipse%20cx%3D%2217%22%20cy%3D%228%22%20rx%3D%221.5%22%20ry%3D%222.8%22%20transform%3D%22rotate%2835%2017%208%29%22%2F%3E%3Cellipse%20cx%3D%2211.5%22%20cy%3D%228%22%20rx%3D%221.4%22%20ry%3D%222.6%22%20transform%3D%22rotate%28-28%2011.5%208%29%22%2F%3E%3Cellipse%20cx%3D%2216%22%20cy%3D%2213%22%20rx%3D%221.5%22%20ry%3D%222.7%22%20transform%3D%22rotate%2836%2016%2013%29%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
  --content-size:1rem;
  --content-small:.9375rem;
  --content-leading:1.9;
  --content-subheading-size:1.125rem;
  --section-space:72px;
  --layout-gap:24px;
  --card-padding:32px;
  --control-height:56px;
  font:var(--content-size)/var(--content-leading) var(--font);
  color:var(--ink);
  background:var(--ivory);
}
:is(.home-page,.menu-page,.sub-page) .main-container,
.home-page .hero-inner { width:min(var(--width),calc(100% - 40px)); margin-inline:auto; }
:is(.home-page,.menu-page,.sub-page) .page-content { --group-align:left; --group-flex:flex-start; --line-margin:0; --content-heading-size:clamp(24px,2.1vw,30px); }
:is(.home-page,.menu-page,.sub-page) :is(h1,h2,h3) { color:var(--heading); }
:is(.home-page,.menu-page,.sub-page) .section { padding-block:var(--section-space); background:var(--paper); }
:is(.home-page,.menu-page,.sub-page) .section--ivory { background:var(--ivory); }
.home-page .home-subsection + .home-subsection { margin-top:48px; padding-top:48px; border-top:1px solid var(--line); }
.home-page .home-grid { display:grid; grid-template-columns:minmax(0,1fr); gap:var(--layout-gap); margin-top:0; }
.home-page .home-grid > * { min-width:0; }
.home-page .home-full-width { width:100%; max-width:none; margin-inline:0; }
.home-page .home-grid__wide { grid-column:1 / -1; }
:is(.home-page,.menu-page,.sub-page) .section-title { margin:0 0 28px; text-align:left; }
:is(.home-page,.menu-page,.sub-page) .section-title:has(> h2) { padding-bottom:20px; border-bottom:1px solid var(--line); }
:is(.home-page,.menu-page,.sub-page) .section-title h2 { font-size:var(--content-heading-size); line-height:1.6; letter-spacing:.01em; text-wrap:pretty; word-break:normal; }
:is(.home-page,.menu-page,.sub-page) .section-title h2::after,
:is(.home-page,.menu-page,.sub-page) .section-title h3::after { content:none; }
:is(.home-page,.menu-page,.sub-page) .page-content :is(h2,.mobile-menu-label)::before { content:""; display:inline-block; width:24px; height:36px; margin-right:10px; vertical-align:middle; background:var(--heading-sprig) center / contain no-repeat; transform:rotate(-20deg); transform-origin:50% 90%; pointer-events:none; }
.home-page .page-content :is(.mobile-menu-label,.mobile-news-label)::before { width:18px; height:28px; margin-right:8px; }
:is(.home-page,.menu-page,.sub-page) .section-title h3 { font-size:var(--content-subheading-size); line-height:1.7; margin:0; text-align:left; }
:is(.home-page,.menu-page,.sub-page) .section-title__lead { max-width:none; margin:16px 0 0; font-size:var(--content-size); line-height:var(--content-leading); text-align:left; text-wrap:pretty; }
:is(.home-page,.menu-page,.sub-page) .section-title--minor { margin-bottom:16px; }
:is(.home-page,.menu-page,.sub-page) .prose p + p { margin-top:16px; }
:is(.home-page,.menu-page,.sub-page) :focus-visible { outline:3px solid var(--content-accent); outline-offset:4px; }

/* Header and a single, wide photograph with copy on its quiet left side. */
:is(.home-page,.menu-page,.sub-page) .site-header { background:var(--paper); }
:is(.home-page,.menu-page,.sub-page) .site-header__main { min-height:104px; }
:is(.home-page,.menu-page,.sub-page) .site-header__brand img { width:300px; }
:is(.home-page,.menu-page,.sub-page) .site-header__contact { padding:8px 24px; border-left:1px solid var(--line); }
:is(.home-page,.menu-page,.sub-page) .site-header__number { font-size:28px; color:var(--content-accent); }
:is(.home-page,.menu-page,.sub-page) .site-header .status_dot { width:7px; height:7px; box-shadow:none; }
:is(.home-page,.menu-page,.sub-page) :is(.site-header__phone,.nav-toggle) { background:var(--paper); border-color:var(--line); border-radius:var(--radius-button); }
:is(.home-page,.menu-page,.sub-page) .site-header__phone { color:var(--content-accent); }
:is(.home-page,.menu-page,.sub-page) .global-nav { background:var(--paper); border-block:1px solid var(--line); }
:is(.home-page,.menu-page,.sub-page) .global-nav a { min-height:60px; font-size:14px; }
:is(.home-page,.menu-page,.sub-page) .global-nav a:hover { background:var(--ivory); }
:is(.home-page,.menu-page,.sub-page) .global-nav a[aria-current="page"] { color:var(--content-accent); }
:is(.home-page,.menu-page,.sub-page) .global-nav a[aria-current="page"]::after { height:2px; width:40px; left:calc(50% - 20px); bottom:0; background:var(--content-accent); }
.home-page .hero { padding-block:28px; background:var(--ivory); }
.home-page .hero-inner { display:grid; grid-template-areas:"media" "copy"; overflow:hidden; border-radius:var(--radius-panel); }
.home-page .hero-copy { grid-area:copy; display:flex; flex-direction:column; position:relative; z-index:1; padding:var(--card-padding); margin-top:-24px; border:1px solid var(--line); border-radius:var(--radius-panel); background:rgba(255,255,255,.97); }
.home-page .hero-intro { grid-area:intro; min-width:0; }
.home-page .hero-intro h1 { display:flex; flex-direction:column; gap:10px; line-height:1.55; letter-spacing:.015em; }
.home-page .hero-title-region { font-size:15px; line-height:1.8; font-weight:600; }
.home-page .hero-title-service { font-size:30px; font-weight:700; word-break:auto-phrase; }
.home-page .hero-title-brand { font-size:32px; font-weight:700; word-break:keep-all; }
.home-page .hero-intro p { margin-top:24px; font-size:var(--content-size); line-height:1.95; }
.home-page .hero-media { grid-area:media; min-width:0; overflow:hidden; border-radius:var(--radius-panel); }
.home-page .hero-media img { display:block; width:100%; height:auto; aspect-ratio:auto; object-fit:contain; }
.home-page .hero-actions { display:grid; gap:12px; margin-top:24px; }
.home-page .hero-mobile-description { display:none; }
.home-page .news-band { background:var(--paper); border-block:1px solid var(--line); }
.home-page .news-band > .main-container { display:flex; flex-wrap:wrap; align-items:center; gap:8px 28px; padding-block:20px; font-size:var(--content-small); }
.home-page .news-band p:first-child { font-weight:600; color:var(--heading); }
:is(.home-page,.menu-page,.sub-page) #related { background:var(--ivory); }

/* Shared links: consistent padding, arrow position, type and touch targets. */
:is(.home-page,.menu-page,.sub-page) :is(.link-box-list .link-box,.guide-link,.content-button,.hero-actions .link-box,.hero-actions .button) {
  display:flex; align-items:center; justify-content:space-between; gap:var(--control-gap,16px);
  min-height:var(--control-height); padding:14px 20px; border:1px solid var(--control-border,var(--line));
  border-radius:var(--radius-button); background:var(--control-bg,var(--paper));
  color:var(--control-ink,var(--ink)); font-size:var(--content-small); font-weight:600;
  line-height:1.65; text-align:left; text-decoration:none;
}
:is(.home-page,.menu-page,.sub-page) :is(.link-box-list .link-box,.guide-link,.content-button,.hero-actions .link-box,.hero-actions .button):hover {
  background:var(--control-hover,var(--hover)); border-color:var(--content-accent); color:var(--control-ink,var(--ink));
}
:is(.home-page,.menu-page,.sub-page) :is(.button--menu,.content-button--next,.content-button--phone,.button--phone) {
  --control-bg:var(--content-accent); --control-ink:#fff;
  --control-border:var(--content-accent); --control-hover:var(--accent-hover);
}
:is(.home-page,.menu-page,.sub-page) .content-button:has(.link-card__description) {
  --control-bg:var(--paper); --control-ink:var(--ink);
  --control-border:var(--line); --control-hover:var(--ivory);
}
:is(.home-page,.menu-page,.sub-page) :is(.link-box-arrow,.card-arrow) { color:var(--content-accent); }
:is(.home-page,.menu-page,.sub-page) .link-box-list { gap:12px; }
:is(.home-page,.menu-page,.sub-page) .guide-links { display:grid; grid-template-columns:minmax(0,1fr); margin:24px 0 0; }
:is(.home-page,.menu-page,.sub-page) .guide-link { --control-gap:var(--link-icon-gap); width:100%; margin-block:12px 0; }
:is(.home-page,.menu-page,.sub-page) .guide-link > span { flex:1; }
:is(.home-page,.menu-page,.sub-page) .guide-link > img { width:12px; height:12px; flex:0 0 12px; }
:is(.home-page,.menu-page,.sub-page) .recruit-panel__link .guide-link { --control-bg:var(--paper); --control-hover:#F8F1E6; --control-ink:var(--ink); }
:is(.home-page,.menu-page,.sub-page) .recruit-panel__link .guide-link > svg { flex:0 0 16px; color:var(--ink); }
:is(.home-page,.menu-page,.sub-page) .card-grid { grid-auto-rows:1fr; }
:is(.home-page,.menu-page,.sub-page) .link-card { min-height:184px; padding:var(--card-padding); padding-right:64px; gap:10px; border:1px solid var(--line); border-radius:var(--radius-box); background:var(--paper); justify-content:center; }
:is(.home-page,.menu-page,.sub-page) .link-card strong { font-size:20px; line-height:1.65; word-break:auto-phrase; text-wrap:pretty; }
:is(.home-page,.menu-page,.sub-page) .link-card em { font-size:11px; letter-spacing:.06em; color:var(--muted); }
:is(.home-page,.menu-page,.sub-page) .link-card .small { font-size:var(--content-small); margin-top:4px; }
:is(.home-page,.menu-page,.sub-page) .link-card .card-arrow { position:absolute; right:24px; top:50%; transform:translateY(-50%); line-height:1; }
:is(.home-page,.menu-page,.sub-page) .link-card:hover { border-color:var(--content-accent); background:var(--ivory); }

/* Large course photos lead the pricing section; recommendations follow below. */
.home-page .price-block { display:grid; grid-template-columns:minmax(0,1fr); gap:var(--layout-gap); }
.home-page .price-panel { display:grid; grid-template-columns:minmax(0,1fr); gap:24px; margin:0; padding:var(--card-padding); border:1px solid var(--line); border-radius:var(--radius-panel); background:var(--paper); }
:is(.home-page,.menu-page,.sub-page) .price-panel .section-title { margin:0; }
:is(.home-page,.menu-page,.sub-page) .price-panel .section-title h3 { font-size:20px; }
.home-page .price-rates { display:grid; grid-template-columns:minmax(0,1fr); gap:24px; padding:0; margin:0; }
.home-page .price-rate { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); align-items:center; gap:32px; padding:0 0 24px; border-top:0; border-bottom:1px solid var(--line); }
.home-page .price-rate__photo { display:block; width:100%; height:auto; aspect-ratio:3 / 2; object-fit:cover; border-radius:var(--radius-box); margin:0; }
.home-page .price-rate__copy { display:grid; align-content:center; justify-items:center; gap:12px; min-width:0; text-align:center; }
.home-page .price-rate__name { font-size:24px; font-weight:700; }
.home-page .price-rate__numbers { grid-column:1; grid-row:2; display:flex; flex-wrap:nowrap; align-items:baseline; justify-content:center; gap:20px; margin:0; }
.home-page .price-rate__time { font-size:22px; font-weight:600; }
.home-page .price-rate__amount { margin-left:0; font-size:34px; color:var(--heading); }
.home-page .price-notes { margin:0; font-size:var(--content-small); }
.home-page .price-links { display:grid; gap:12px; margin-top:24px; }
.home-page .price-links .content-button { width:100%; margin:0; }
.home-page .price-panel .content-button { margin:0; align-self:end; }
.home-page .recommend-summary { display:flex; flex-direction:column; justify-content:center; margin:0; padding:var(--card-padding); max-width:none; border:1px solid var(--line); border-radius:var(--radius-panel); background:var(--ivory); color:var(--ink); }
:is(.home-page,.menu-page,.sub-page) .recommend-summary .section-title { margin-bottom:24px; text-align:center; }
.home-page .recommend-label { display:inline-block; margin:0; padding:6px 24px; border:1px solid var(--line); border-radius:999px; background:var(--paper); font-size:20px; color:var(--heading); letter-spacing:0; }
.home-page .recommend-summary strong { color:var(--heading); }
.home-page .recommend-offer { display:grid; gap:16px; padding-bottom:20px; margin-bottom:20px; border-bottom:1px solid var(--line); text-align:center; }
.home-page .recommend-offer p { margin:0; }
.home-page .recommend-course__title { display:block; font-size:28px; line-height:1.4; }
.home-page .recommend-course__detail { display:block; margin-top:8px; font-size:18px; line-height:1.7; }
.home-page .recommend-fee { display:flex; flex-wrap:wrap; align-items:baseline; justify-content:center; gap:8px; }
.home-page .recommend-fee > strong { font-size:42px; line-height:1.2; white-space:nowrap; color:var(--heading); }
.home-page .recommend-fee small, .home-page .recommend-hotel__total small { margin-left:4px; font-size:18px; }
.home-page .recommend-hotel { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:12px; margin-block:24px; padding:18px; border-radius:var(--radius-box); background:var(--paper); }
.home-page .recommend-hotel p { margin:0; }
.home-page .recommend-hotel__label { font-weight:700; color:var(--heading); }
.home-page .recommend-hotel__calculation { font-size:15px; }
.home-page .recommend-hotel__total { text-align:right; }
.home-page .recommend-hotel__total > span { display:block; font-size:14px; }
.home-page .recommend-hotel__total > strong { font-size:34px; line-height:1.3; white-space:nowrap; color:var(--heading); }

/* Existing photographs and text share the same column and card system. */
.home-page .image-frame { display:block; width:100%; padding:0; margin:0; border:0; border-radius:var(--radius-box); overflow:hidden; background:transparent; }
.home-page :is(.service-intro,.area-photo-row,.tourism-grid) .image-frame > img { width:100%; height:auto; aspect-ratio:3 / 2; object-fit:cover; }
.home-page .image-text { display:grid; grid-template-columns:minmax(0,1fr); gap:32px; margin-bottom:32px; align-items:center; }
.home-page .service-intro .prose > p:first-child { font-size:19px; font-weight:700; color:var(--heading); }
.home-page .feature-grid { gap:var(--layout-gap); margin-top:32px; }
.home-page .feature { padding:var(--card-padding); border:1px solid var(--line); border-radius:var(--radius-box); background:var(--paper); }
:is(.home-page,.menu-page,.sub-page) .feature .section-title { margin:0; }
:is(.home-page,.menu-page,.sub-page) .feature .section-title__lead { margin-top:16px; font-size:var(--content-small); }

/* Regional information stays complete, organized into paired cards. */
.home-page .area-index { display:grid; margin-block:28px; }
.home-page .area-photo-row { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--layout-gap); margin:0 0 32px; }
.home-page .area-summary { padding:var(--card-padding); border:1px solid var(--line); border-radius:var(--radius-panel); background:var(--paper); }
.home-page .area-summary h3 { margin:0 0 16px; }
.home-page .area-grid { display:grid; grid-template-columns:minmax(0,1fr); gap:var(--layout-gap); margin-top:var(--layout-gap); border:0; }
.home-page .area-grid .area-card { display:flex; flex-direction:column; gap:20px; margin:0; padding:var(--card-padding); border:1px solid var(--line); border-radius:var(--radius-panel); background:var(--paper); }
.home-page .area-card h3 { padding:0 0 16px; margin:0; border-bottom:1px solid var(--line); font-size:20px; text-align:left; }
.home-page .area-card h3::after { content:none; }
.home-page .area-card > div { display:flex; flex:1; flex-direction:column; min-width:0; }
.home-page .area-card p { font-size:var(--content-small); }
.home-page .area-card__links { display:grid; grid-template-columns:minmax(0,1fr); gap:12px; margin:24px 0 0; padding:0; }
.home-page .area-card .area-card__links { margin-top:auto; padding-top:24px; gap:12px; }
.home-page .area-card__links .link-box { height:100%; }
.home-page .area-card__primary::before { content:none; }
.home-page .area-card:target { background:var(--ivory); }

/* First-time guidance is a matched pair; all five illustrated steps stay intact. */
.home-page .guide-layout { display:grid; grid-template-columns:minmax(0,1fr); gap:var(--layout-gap); align-items:stretch; }
.home-page .guide-features { display:contents; }
.home-page .guide-panel { display:flex; flex-direction:column; justify-content:center; padding:var(--card-padding); border:1px solid var(--line); border-radius:var(--radius-panel); background:var(--paper); }
:is(.home-page,.sub-page) .flow-cards { display:grid; grid-template-columns:minmax(0,1fr); gap:var(--layout-gap); }
:is(.home-page,.sub-page) .flow-card { display:grid; grid-template-columns:80px minmax(0,1fr); gap:20px; align-items:center; padding:20px; border:1px solid var(--line); border-radius:var(--radius-box); background:var(--paper); }
:is(.home-page,.sub-page) .flow-card__image { width:100%; max-width:112px; height:auto; aspect-ratio:234 / 328; object-fit:contain; }
:is(.home-page,.sub-page) .flow-card__copy { text-align:left; margin:0; min-width:0; }
:is(.home-page,.sub-page) .flow-card__number { width:28px; height:28px; margin:0 0 12px; border-radius:4px; font-size:14px; font-weight:700; }
:is(.home-page,.sub-page) .flow-card__copy h3 { font-size:18px; }
:is(.home-page,.menu-page,.sub-page) .flow-card__copy .section-title__lead { margin-top:12px; font-size:var(--content-small); }

/* Longer local copy is grouped into cards, followed by the existing photo guides. */
.home-page .story-grid { gap:var(--layout-gap); }
.home-page .story-grid article,
.home-page .tourism-grid article { padding:var(--card-padding); border:1px solid var(--line); border-radius:var(--radius-box); background:var(--paper); }
:is(.home-page,.menu-page,.sub-page) .story-grid .section-title { margin:0; }
.home-page .story-grid article > p { margin-top:16px; }
.home-page .tourism-grid { align-items:stretch; }
.home-page .tourism-grid :is(article,p) { font-size:var(--content-small); line-height:1.95; }
.home-page .tourism-grid .image-frame { margin-bottom:24px; }
.home-page .tourism-grid .desktop-break { display:none; }
.home-page #hotel-guide { padding:var(--card-padding); border:1px solid var(--line); border-radius:var(--radius-panel); background:var(--paper); }

/* Recruitment, booking and footer use the same edges and equal columns. */
.sub-page { --width:1240px; --control-height:56px; }
:is(.home-page,.menu-page,.sub-page) .recruit-panel { max-width:none; margin:0; padding:0; border:0; border-radius:0; background:transparent; }
:is(.home-page,.menu-page,.sub-page) .recruit-panel__banner { width:100%; }
:is(.home-page,.menu-page,.sub-page) .recruit-panel__banner img { width:100%; height:auto; aspect-ratio:3 / 1; object-fit:contain; }
:is(.home-page,.menu-page,.sub-page) .recruit-panel p { margin-top:24px; font-size:var(--content-size); }
.home-page #reservation { background:var(--ivory); }
.home-page .reservation-panel { display:grid; grid-template-columns:minmax(0,1fr); gap:var(--layout-gap); width:100%; max-width:none; margin:0; padding:0; border:0; border-radius:0; background:transparent; text-align:left; }
.home-page :is(.reservation-copy,.reservation-booking) { display:flex; flex-direction:column; justify-content:center; min-width:0; padding:var(--card-padding); border:1px solid var(--line); border-radius:var(--radius-panel); background:var(--paper); font-size:var(--content-small); line-height:1.9; }
:is(.home-page,.menu-page,.sub-page) .reservation-copy .section-title { text-align:left; margin-bottom:24px; }
:is(.home-page,.menu-page,.sub-page) .reservation-copy .section-title h2 { font-size:clamp(24px,2vw,28px); }
.home-page .reservation-copy > p + p { margin-top:16px; }
.home-page .reservation-booking { text-align:center; }
:is(.home-page,.menu-page,.sub-page) .contact-actions { width:100%; max-width:none; margin:0 0 24px; }
.home-page #reservation .content-button--phone { width:100%; padding:16px 20px; gap:4px; align-items:center; justify-content:center; text-align:center; }
.home-page #reservation .content-button--phone strong { font-size:30px; }
:is(.home-page,.menu-page,.sub-page) .reservation-panel__notice { border-color:var(--line); margin-top:24px; padding-top:20px; }
:is(.home-page,.menu-page,.sub-page) .site-footer { border-top:1px solid var(--line); padding-top:48px; background:var(--paper); }
:is(.home-page,.menu-page,.sub-page) .site-footer > .main-container { display:grid; grid-template-columns:minmax(0,1fr); gap:32px; align-items:start; }
:is(.home-page,.menu-page,.sub-page) .site-footer__brand { grid-column:1 / -1; justify-self:center; }
:is(.home-page,.menu-page,.sub-page) .site-footer .footer-nav { gap:0 24px; }
:is(.home-page,.menu-page,.sub-page) .site-footer__line { display:flex; align-items:center; justify-content:center; gap:12px; width:100%; max-width:none; min-height:var(--control-height); padding:14px 20px; border-radius:var(--radius-button); margin:0; }
:is(.home-page,.menu-page,.sub-page) .site-footer__line-icon { flex:0 0 28px; margin:0; }
:is(.home-page,.menu-page,.sub-page) .site-footer__credit { text-align:center; }
:is(.home-page,.menu-page,.sub-page) .site-footer__top { justify-self:center; padding:14px 20px; min-height:var(--control-height); border-color:var(--line); border-radius:var(--radius-button); }
:is(.home-page,.menu-page,.sub-page) .mobile-call { background:#FFFFFFF5; border-top:1px solid var(--line); box-shadow:none; padding-inline:20px; }
:is(.home-page,.menu-page,.sub-page) .mobile-call .button { min-height:48px; background:var(--control-bg); color:var(--control-ink); border-color:var(--control-border); }
:is(.home-page,.menu-page,.sub-page) .mobile-call .button:hover { background:var(--control-hover); }

@media (min-width:768px) {
  .home-page { --link-icon-gap:16px; }
  .home-page .home-grid--two,
  .home-page .home-grid--three,
  .home-page .home-grid--four { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .home-page .hero-inner { grid-template-areas:"visual"; gap:0; position:relative; isolation:isolate; }
  .home-page .hero-media { grid-area:visual; align-self:center; position:relative; z-index:0; }
  .home-page .hero-media::after { content:""; position:absolute; inset:0; background:linear-gradient(90deg,rgba(250,248,244,.96) 0%,rgba(250,248,244,.87) 32%,rgba(250,248,244,.15) 50%,transparent 58%); }
  .home-page .hero-copy { grid-area:visual; justify-content:center; align-self:stretch; width:53%; max-width:630px; margin:0; padding:40px; border:0; background:transparent; }
  .home-page .hero-actions { margin-top:28px; }
  .home-page .news-band p + p { padding-left:28px; border-left:1px solid var(--line); }
  .home-page .price-links { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .home-page .recommend-offer { grid-template-columns:minmax(0,1fr) auto; align-items:center; text-align:left; }
  .home-page .image-text { grid-template-columns:minmax(0,2fr) minmax(0,3fr); }
  .home-page .area-photo-row { grid-template-columns:repeat(4,minmax(0,1fr)); }
  .home-page .area-grid, .home-page .guide-layout, :is(.home-page,.sub-page) .flow-cards { grid-template-columns:repeat(2,minmax(0,1fr)); }
  :is(.home-page,.menu-page,.sub-page) .recruit-panel { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 32px; align-items:center; }
  :is(.home-page,.menu-page,.sub-page) .recruit-panel .section-title { grid-column:1 / -1; }
  :is(.home-page,.menu-page,.sub-page) .recruit-panel__banner { grid-column:1; grid-row:2 / span 2; }
  :is(.home-page,.menu-page,.sub-page) .recruit-panel > p { grid-column:2; margin:0; }
  :is(.home-page,.menu-page,.sub-page) .recruit-panel .recruit-panel__link { margin-top:24px; }
  .home-page .reservation-panel { grid-template-columns:repeat(2,minmax(0,1fr)); align-items:stretch; }
  :is(.home-page,.menu-page,.sub-page) .site-footer > .main-container { grid-template-columns:repeat(2,minmax(0,1fr)); }
  :is(.home-page,.menu-page,.sub-page) .site-footer .footer-nav { grid-column:1 / -1; grid-row:2; grid-template-columns:repeat(3,minmax(0,1fr)); }
  :is(.home-page,.menu-page,.sub-page) .site-footer__line { grid-column:1 / -1; grid-row:3; }
  :is(.home-page,.menu-page,.sub-page) .site-footer__credit { grid-column:1 / -1; grid-row:4; align-self:center; }
  :is(.home-page,.menu-page,.sub-page) .site-footer__top { grid-column:1 / -1; grid-row:5; justify-self:center; align-self:center; }
}
@media (min-width:1024px) {
  .home-page .home-grid--three { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .home-page .home-grid--four { grid-template-columns:repeat(4,minmax(0,1fr)); }
  .home-page .card-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
  :is(.home-page,.menu-page,.sub-page) .site-footer .footer-nav { grid-template-columns:repeat(6,minmax(0,1fr)); }
  .home-page .hero-actions { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .home-page .feature-grid { grid-template-columns:repeat(4,minmax(0,1fr)); }
  :is(.home-page,.sub-page) .flow-cards { grid-template-columns:repeat(5,minmax(0,1fr)); }
  :is(.home-page,.sub-page) .flow-card { display:flex; flex-direction:column; align-items:flex-start; gap:24px; }
  :is(.home-page,.sub-page) .flow-card__image { margin:0 auto; }
  :is(.home-page,.sub-page) .flow-card__copy { width:100%; }
}
@media (min-width:768px) and (max-width:1023px) {
  .home-page .hero-copy { padding:24px; width:56%; }
  .home-page .hero-title-region { font-size:13px; }
  .home-page .hero-title-service { font-size:23px; }
  .home-page .hero-title-brand { font-size:24px; }
  .home-page .hero-intro p { font-size:14px; margin-top:16px; }
  .home-page .hero-actions { margin-top:20px; gap:10px; }
}
@media (max-width:767px) {
  /* One mobile composition. No rule in this block applies to the frozen desktop. */
  :is(.home-page,.menu-page,.sub-page > .page-content) { --section-space:32px; }
  .sub-page { --control-height:50px; }
  .home-page { --layout-gap:12px; --card-padding:18px; --content-heading-size:22px; --control-height:50px; }
  :is(.home-page,.menu-page,.sub-page) .page-content { --content-heading-size:22px; }
  :is(.home-page,.menu-page,.sub-page) .section-title { margin-bottom:18px; }
  :is(.home-page,.menu-page,.sub-page) .section-title:has(> h2) { padding-bottom:14px; }
  :is(.home-page,.menu-page,.sub-page) .section-title h2, :is(.home-page,.menu-page,.sub-page) .section-title h2.text-flow { font-size:22px; line-height:1.6; }
  :is(.home-page,.menu-page,.sub-page) .page-content h2 { position:relative; padding-left:34px; }
  :is(.home-page,.menu-page,.sub-page) .page-content h2::before { position:absolute; left:0; top:.08em; margin-right:0; }
  :is(.home-page,.menu-page,.sub-page) .heading-phrase { display:inline-block; max-width:100%; vertical-align:top; }
  .home-page #hotel-guide-title .heading-line { display:block; }
  :is(.home-page,.menu-page,.sub-page) .section-title__lead { margin-top:10px; font-size:16px; }
  :is(.home-page,.menu-page,.sub-page) .section-title h3 { font-size:17px; }
  .home-page .home-subsection + .home-subsection { margin-top:28px; padding-top:28px; }
  :is(.home-page,.menu-page,.sub-page) .site-header .site-header__main { width:calc(100% - 40px); grid-template-columns:minmax(0,1fr) 52px 52px; grid-template-rows:54px 22px; column-gap:8px; padding-block:8px; min-height:0; }
  :is(.home-page,.menu-page,.sub-page) :is(.site-header__phone,.nav-toggle) { width:52px; min-width:52px; height:54px; min-height:54px; padding:4px 3px; font-size:10px; line-height:1.4; gap:3px; white-space:nowrap; }
  :is(.home-page,.menu-page,.sub-page) .site-header__brand img { width:min(100%,210px); }
  :is(.home-page,.menu-page,.sub-page) .site-header #shop_status_sp { justify-content:center; font-size:14px; }
  /* Clear photo with a white outline around the mobile hero text only. */
  .home-page .hero { padding-block:16px; }
  .home-page .hero-inner { width:calc(100% - 12px); grid-template-areas:"visual"; position:relative; isolation:isolate; min-height:330px; background:var(--ivory); }
  .home-page .hero-copy { grid-area:visual; justify-content:space-between; padding:20px 12px 14px; margin:0; border:0; background:transparent; }
  .home-page .hero-media { grid-area:visual; position:absolute; inset:0; border-radius:0; }
  .home-page .hero-media::after { content:none; }
  .home-page .hero-media img { position:absolute; bottom:12px; width:100%; height:min(calc(100% - 12px),338px); aspect-ratio:auto; object-fit:cover; object-position:66% center; }
  .home-page .hero-intro { width:58%; padding-right:6px; background:transparent; text-shadow:-1px -1px 0 #fff,0 -1px 0 #fff,1px -1px 0 #fff,-1px 0 0 #fff,1px 0 0 #fff,-1px 1px 0 #fff,0 1px 0 #fff,1px 1px 0 #fff; }
  .home-page .hero-intro h1 { gap:8px; }
  .home-page .hero-title-region { font-size:14px; line-height:1.65; }
  .home-page .hero-title-service { font-size:20px; line-height:1.55; word-break:normal; }
  .home-page .hero-title-brand { font-size:16px; line-height:1.55; word-break:normal; text-wrap:balance; }
  .home-page .hero-intro .no-break { display:inline; white-space:normal; }
  .home-page .hero-intro > p { display:none; }
  .home-page .hero-intro:has(.hero-mobile-copy) h1 { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
  .home-page .hero-mobile-copy > p { margin:0; font-size:15px; line-height:1.75; }
  .home-page .hero-mobile-copy .hero-mobile-title { margin-top:6px; font-size:22px; font-weight:700; line-height:1.5; color:var(--heading); }
  .home-page .hero-mobile-copy .hero-mobile-subtitle { margin-top:0; font-weight:600; }
  .home-page .hero-mobile-copy .hero-mobile-lead { margin-top:12px; }
  .home-page .hero-actions { grid-template-columns:repeat(2,minmax(0,1fr)); margin-top:18px; gap:8px; }
  .home-page .hero-actions :is(.button,.link-box) { min-height:40px; padding:5px 6px; gap:4px; justify-content:center; font-size:15px; background:var(--control-bg,rgba(255,255,255,.9)); color:var(--control-ink,var(--heading)); border-color:var(--control-border,var(--line)); }
  .home-page .hero-actions .button::after, .home-page .hero-actions .link-box-arrow { display:none; }
  .home-page .news-band > .main-container { display:block; padding-block:12px; font-size:15px; line-height:1.65; }
  .home-page .mobile-news-label { font-size:16px; line-height:1.5; margin-bottom:4px; padding-left:0; border-left:0; }
  .home-page .news-band p + p { margin-top:2px; }
  /* The same course photos and prices remain visible on mobile. */
  .home-page #price { padding-block:24px; }
  :is(.home-page,.menu-page,.sub-page) #price > .main-container > .section-title { margin-bottom:14px; }
  .home-page .price-block { gap:24px; }
  .home-page .price-panel { padding:0; border:0; border-radius:0; gap:16px; }
  .home-page .price-rates { gap:24px; }
  .home-page .price-rate { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; padding:0 0 18px; }
  .home-page .price-rate__copy { gap:8px; }
  .home-page .price-rate__name { font-size:18px; }
  .home-page .price-rate__numbers { gap:8px; margin:0; }
  .home-page .price-rate__time { font-size:18px; }
  .home-page .price-rate__amount { font-size:clamp(22px,6.7vw,28px); }
  :is(.home-page,.menu-page,.sub-page) .recommend-summary .section-title { margin-bottom:20px; }
  .home-page .recommend-course__title { font-size:24px; }
  .home-page .recommend-course__detail { font-size:16px; }
  .home-page .recommend-hotel { grid-template-columns:minmax(0,1fr); gap:10px; padding:14px; }
  .home-page .recommend-hotel__total { display:flex; justify-content:space-between; align-items:baseline; gap:8px; padding-top:10px; border-top:1px solid var(--line); }
  .home-page .price-links { gap:10px; margin-top:16px; }
  /* Native disclosure rows use one shared scale throughout the mobile page. */
  .home-page .mobile-disclosure { min-width:0; border:1px solid var(--line); border-radius:6px; background:var(--paper); }
  .home-page .mobile-disclosure > summary { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:16px; min-height:58px; list-style:none; font-size:16px; font-weight:600; line-height:1.7; cursor:pointer; }
  .home-page .mobile-disclosure > summary::-webkit-details-marker { display:none; }
  .home-page .mobile-disclosure > summary::after { content:"＋"; flex:0 0 16px; color:var(--content-accent); font-weight:400; }
  .home-page .mobile-disclosure[open] > summary::after { content:"−"; }
  .home-page .mobile-disclosure > summary :is(h2,h3) { margin:0; padding:0; border:0; font-size:16px; line-height:1.7; }
  .home-page .mobile-disclosure > summary h2 { min-width:0; padding-left:28px; text-wrap:wrap; word-break:normal; }
  .home-page .mobile-disclosure > summary h2::before { width:18px; height:28px; }
  .home-page .mobile-disclosure > summary h3::after { content:none; }
  .home-page .mobile-disclosure__body { padding:0 16px 18px; }
  .home-page .mobile-disclosure[open] > summary { margin-bottom:16px; border-bottom:1px solid var(--line); }
  /* The service introduction is a short reading sequence, not stacked desktop cards. */
  .home-page .image-text { gap:18px; margin-bottom:20px; }
  .home-page .service-intro { align-items:start; }
  .home-page .service-intro .image-frame > img { aspect-ratio:2 / 1; object-fit:cover; }
  .home-page .service-intro .prose > p:first-child { font-size:18px; }
  .home-page .service-intro .mobile-disclosure { margin-top:18px; }
  .home-page #service > .main-container > .link-list { grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
  .home-page #service .link-list .link-box { height:100%; min-height:48px; padding:10px 12px; font-size:15px; }
  .home-page .feature-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-top:24px; }
  .home-page .feature { padding:16px; }
  .home-page .feature h3 { font-size:16px; }
  :is(.home-page,.menu-page,.sub-page) .feature .section-title__lead { font-size:15px; margin-top:8px; line-height:1.8; }
  .home-page .mobile-feature-detail { grid-column:1 / -1; }
  .home-page .mobile-feature-detail .feature { border:0; padding:0; }
  /* Region names and all travel conditions stay in their original groups. */
  .home-page #area { padding-block:24px; background:var(--ivory); }
  :is(.home-page,.menu-page,.sub-page) #area > .main-container > .section-title { margin-bottom:14px; }
  .home-page .area-photo-row { grid-template-columns:repeat(4,minmax(0,1fr)); gap:6px; margin:16px 0; }
  .home-page .area-photo-row .image-frame > img { aspect-ratio:1; }
  .home-page .area-summary { padding:20px 0 0; margin-top:20px; border:0; border-top:1px solid var(--line); border-radius:0; background:transparent; }
  .home-page .area-summary h3 { font-size:18px; margin-bottom:10px; }
  .home-page .area-index { grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 12px; margin:14px 0 0; }
  .home-page .area-index .link-box { min-height:44px; padding:8px 0; border:0; border-bottom:1px solid var(--line); border-radius:0; background:transparent; font-size:15px; gap:6px; }
  .home-page .area-grid { gap:0; margin-top:16px; border-top:1px solid var(--line); }
  .home-page .mobile-region { border:0; border-bottom:1px solid var(--line); border-radius:0; background:transparent; }
  .home-page .mobile-region > summary { display:grid; grid-template-columns:minmax(0,1fr) 16px; gap:3px 10px; padding:14px 0; }
  .home-page .mobile-region > summary::after { grid-column:2; grid-row:1 / span 2; }
  .home-page .mobile-region-preview { grid-column:1; font-size:15px; font-weight:400; color:var(--muted); }
  .home-page .mobile-region > .mobile-disclosure__body { padding-inline:0; }
  .home-page .area-grid .area-card { padding:0; border:0; background:transparent; }
  .home-page .area-card p { font-size:16px; }
  .home-page .area-card .area-card__links { padding-top:16px; gap:8px; }
  .home-page .area-card .link-box { padding:10px 12px; min-height:48px; }
  /* Guidance image aligns with the full mobile content width. */
  .home-page .mobile-guide-portrait { width:100%; max-width:100%; margin:0 0 20px; }
  .home-page .mobile-guide-portrait img { width:100%; height:auto; border-radius:6px; }
  .home-page .guide-layout { gap:18px; padding:18px; border:1px solid var(--line); border-radius:6px; background:var(--paper); }
  .home-page .guide-panel { padding:0; border:0; background:transparent; }
  .home-page .guide-features { display:contents; }
  :is(.home-page,.menu-page,.sub-page) .guide-panel .section-title { margin-bottom:8px; }
  .home-page .guide-links { gap:8px; margin-top:16px; }
  .home-page .guide-links .link-box { padding:12px; font-size:15px; }
  /* Six original navigation links share a compact two-column rhythm. */
  .home-page #related { margin:0; padding-block:22px; background:var(--ivory); }
  :is(.home-page,.menu-page,.sub-page) #related .section-title { border:0; padding:0; margin-bottom:12px; }
  .home-page #related h2, .home-page .link-card em { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
  .home-page .mobile-menu-label { font-size:18px; font-weight:700; color:var(--heading); }
  .home-page .card-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px 12px; grid-auto-rows:auto; }
  .home-page .link-card { position:relative; display:grid; grid-template-columns:24px minmax(0,1fr); align-content:start; align-items:center; min-height:0; padding:12px 0; gap:8px; border:0; border-bottom:1px solid var(--line); border-radius:0; background:transparent; }
  .home-page .link-card:nth-child(-n+2) { grid-template-columns:28px minmax(0,1fr); padding-top:4px; padding-bottom:16px; }
  .home-page .link-card__icon { grid-column:1; grid-row:1; color:var(--content-accent); width:24px; height:24px; margin:0; }
  .home-page .link-card:nth-child(-n+2) .link-card__icon { width:28px; height:28px; }
  .home-page .link-card strong { grid-column:2; grid-row:1; min-width:0; font-size:16px; line-height:1.6; word-break:normal; text-wrap:wrap; }
  .home-page .link-card:nth-child(-n+2) strong { grid-column:1 / -1; grid-row:2; }
  .home-page .link-card .small { grid-column:1 / -1; grid-row:2; margin:0; font-size:15px; line-height:1.6; padding-right:16px; }
  .home-page .link-card:nth-child(-n+2) .small { grid-row:3; }
  .home-page .link-card .card-arrow { right:0; top:auto; bottom:14px; transform:none; }
  /* All five steps read as a compact illustrated list. */
  :is(.home-page,.sub-page) .flow-cards { gap:0; padding:0; border-top:1px solid var(--line); }
  :is(.home-page,.sub-page) .flow-card { grid-template-columns:25% minmax(0,1fr); gap:12px; padding:16px 0; border:0; border-bottom:1px solid var(--line); border-radius:0; background:transparent; }
  :is(.home-page,.sub-page) .flow-card__image { width:100%; max-width:none; }
  :is(.home-page,.sub-page) .flow-card__copy { display:grid; grid-template-columns:28px minmax(0,1fr); gap:8px; align-items:center; }
  :is(.home-page,.sub-page) .flow-card__number { margin:0; }
  :is(.home-page,.sub-page) .flow-card__copy h3 { font-size:17px; }
  :is(.home-page,.menu-page,.sub-page) .flow-card__copy .section-title__lead { grid-column:1 / -1; margin:0; font-size:15px; line-height:1.8; }
  /* Local long-form information remains available without dominating the first read. */
  .home-page #local-guide > .main-container > * + * { margin-top:24px; padding-top:0; border-top:0; }
  .home-page .mobile-story #story { margin:0; padding:0; }
  :is(.home-page,.menu-page,.sub-page) .mobile-story #story > .section-title { border:0; padding:0; }
  .home-page .story-grid { gap:16px; }
  .home-page .story-grid article { border:0; border-top:1px solid var(--line); padding:16px 0 0; background:transparent; }
  .home-page #hotel-guide { padding:0; border:0; background:transparent; }
  .home-page .mobile-hotel-photo { margin-bottom:18px; }
  .home-page .mobile-hotel-photo img { width:100%; height:auto; aspect-ratio:2 / 1; object-fit:cover; border-radius:6px; }
  :is(.home-page,.menu-page,.sub-page) #hotel-guide .section-title { margin-bottom:16px; }
  .home-page .tourism-grid { gap:12px; }
  .home-page .mobile-place > summary { display:grid; grid-template-columns:80px minmax(0,1fr) 16px; gap:12px; padding:12px; min-height:96px; }
  .home-page .mobile-place > summary .image-frame { margin:0; }
  .home-page .mobile-place > summary .image-frame img { width:80px; height:64px; aspect-ratio:auto; object-fit:cover; }
  .home-page .mobile-place article { padding:0; border:0; background:transparent; }
  .home-page .mobile-place .guide-link { padding:12px; }
  .home-page .tourism-grid :is(article,p) { font-size:16px; }
  /* Booking is a single mobile panel; the approved equal desktop pair is unchanged. */
  :is(.home-page,.menu-page,.sub-page) .recruit-panel p { margin-top:18px; }
  .home-page .reservation-panel { gap:0; border:1px solid var(--line); border-radius:6px; background:var(--paper); }
  .home-page :is(.reservation-copy,.reservation-booking) { padding:20px; border:0; border-radius:0; background:transparent; }
  :is(.home-page,.menu-page,.sub-page) .reservation-copy .section-title { margin-bottom:14px; }
  :is(.home-page,.menu-page,.sub-page) .reservation-copy .section-title h2 { font-size:22px; }
  .home-page .reservation-copy > p + p { margin-top:8px; }
  .home-page .reservation-booking { border-top:1px solid var(--line); }
  :is(.home-page,.menu-page,.sub-page) .contact-actions { margin-bottom:16px; }
  :is(.home-page,.menu-page,.sub-page) .reservation-panel__notice { margin-top:16px; padding-top:12px; }
  :is(.home-page,.menu-page,.sub-page) .site-footer { padding-top:32px; }
  :is(.home-page,.menu-page,.sub-page) .site-footer > .main-container { gap:24px; }
  :is(.home-page,.menu-page,.sub-page) .site-footer .footer-nav { grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 16px; }
  :is(.home-page,.menu-page,.sub-page) .site-footer__line { flex-direction:column; min-height:120px; gap:12px; padding:20px; text-align:center; }
  :is(.home-page,.menu-page,.sub-page) .site-footer__line > span { font-size:15px; }
}
