:root {
  --bg: #ffffff;
  --bg-soft: #f6f5f2;
  --text: #4b453f;
  --muted: #7c7670;
  --line: #ddd6cb;
  --gold: #b29a79;
  --gold-deep: #9b8363;
  --btn: #a3a3a3;
  --shadow: 0 20px 50px rgba(0, 0, 0, 0.08);
  --serif: "Noto Serif JP", "Yu Mincho", "Hiragino Mincho ProN", serif;
  --sans: "Noto Sans JP", "Hiragino Kaku Gothic ProN", Meiryo, sans-serif;
}

html { scroll-behavior: smooth; }
body {
  margin: 0;
  padding-top: 0;
  color: var(--text);
  background: var(--bg);
  font-family: var(--sans);
  line-height: 1.76;
  letter-spacing: 0.03em;
}
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; }
a:hover { color: var(--gold-deep); text-decoration: none; }
.skip-link { position: absolute; left: -9999px; }
.skip-link:focus { left: 16px; top: 16px; z-index: 3000; background: #fff; padding: 8px 12px; }

.site-header {
  background: #fff;
  border-bottom: 1px solid #eee;
}
.header-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  max-width: 1320px;
  margin: 0 auto;
  padding: 26px 34px 24px;
}
.brand {
  display: flex;
  align-items: center;
  gap: 18px;
  color: #151515;
}
.brand-image { display: inline-flex; align-items: center; }
.brand-logo-image { display: block; width: 220px; max-width: 100%; height: auto; }
.brand-logo-footer { width: 228px; }
.brand-mark {
  width: 48px;
  height: 48px;
  border: 1px solid var(--gold);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--serif);
  font-size: 1.55rem;
  color: var(--gold);
}
.brand-text { display: flex; flex-direction: column; line-height: 1.1; }
.brand-main { font-family: var(--serif); font-size: 1.08rem; letter-spacing: .28em; }
.brand-sub { font-size: .78rem; letter-spacing: .42em; margin-left: .28em; }
.navbar-collapse {
  display: flex !important;
  align-items: center;
  justify-content: flex-end;
  gap: 34px;
}
.nav-list {
  display: flex;
  list-style: none;
  gap: 34px;
  margin: 0;
  padding: 0;
}
.nav-list a,
.footer-col a {
  position: relative;
  font-size: .85rem;
  font-weight: 300;
  letter-spacing: .12em;
  color: #4e4944;
  white-space: nowrap;
  text-decoration: none;
  border-bottom: 0;
}
.nav-list a.is-current::after,
.footer-col a.is-current::after {
  content: none;
  display: none;
}
.contact-cta {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: var(--btn);
  color: #fff;
  padding: 14px 26px;
  font-size: .82rem;
  letter-spacing: .12em;
}
.contact-cta-icon { font-size: 1rem; }
.contact-cta-image-wrap { background: transparent; padding: 0; }
.contact-cta-image { display: block; width: 250px; max-width: 100%; height: auto; }
.navbar-toggler {
  display: none;
  border: 0;
  background: transparent;
  padding: 0;
  flex-direction: column;
  gap: 6px;
}
.navbar-toggler span { display: block; width: 28px; height: 1px; background: #676767; }

.hero,
.subpage-hero {
  position: relative;
  min-height: 700px;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  overflow: hidden;
}
.subpage-hero { min-height: 460px; }
.hero::before,
.subpage-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(255,255,255,.12), rgba(255,255,255,.78) 48%, rgba(255,255,255,.95));
}
.hero-bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.hero-artwork { min-height: auto; display: block; }
.hero-artwork::before { display: none; }
.hero-artwork-image { width: 100%; height: auto; display: block;  margin: 40px 0 0;}
.hero-inner {
  position: relative;
  z-index: 1;
  padding: 120px 16px 90px;
}
.hero-title,
.subpage-title,
.section-title,
.flow-title,
.link-heading,
.tech-title,
.profile-name,
.faq-q,
.legal-card h2,
.phone-number {
  font-family: var(--serif);
  font-weight: 400;
}
.hero-title {
  margin: 0 0 18px;
  font-size: 3.56rem;
  line-height: 1.28;
  letter-spacing: .24em;
  color: #595047;
}
.hero-copy {
  margin: 0;
  font-family: var(--serif);
  font-size: .98rem;
  letter-spacing: .16em;
  color: #6a6057;
}
.subpage-title {
  margin: 0;
  font-size: 2.28rem;
  line-height: 1.46;
  letter-spacing: .16em;
  color: #544c44;
}
.subpage-subtitle {
  margin: 8px 0 0;
  font-size: .84rem;
  letter-spacing: .24em;
  color: #89827b;
  text-transform: uppercase;
}
.section { padding: 88px 0; }
@media (max-width: 767.98px) {
  .section { padding: 88px 0 0px; }
}
.section-soft { background: linear-gradient(180deg, #f7f7f5, #ffffff); }
.container-narrow { max-width: 1320px; margin-left: auto; margin-right: auto; }
.lead-block {
  text-align: center;
  max-width: 1040px;
  margin: 0 auto 44px;
}
.section-title {
  margin: 0 0 40px;
  font-size: 2.6rem;
  line-height: 1.64;
  letter-spacing: .18em;
  background: linear-gradient(90deg, #9c866b, #bda98e 45%, #7a7670);
  -webkit-background-clip: text;
  background-clip: text;
  color: #808080;
}
.section-lead {
  margin: 0;
  color: #5f5a55;
  font-size: 1.2rem;
  line-height: 2.5;
  letter-spacing: .04em;
}

.circle-row,
.bubble-row {
  display: flex;
  justify-content: center;
  gap: 42px;
  flex-wrap: wrap;
}
.circle-image-row,
.bubble-image-row {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 22px;
  align-items: start;
  justify-items: center;
  max-width: 1120px;
  margin: 0 auto;
}
.circle-image-card,
.bubble-image-card {
  margin: 0;
  width: 100%;
  display: flex;
  justify-content: center;
}
.circle-image-card img,
.bubble-image-card img {
  width: 100%;
  max-width: 300px;
  height: auto;
  display: block;
padding: 3px;
}



.bubble-image-card img { max-width: 380px; }
.circle-card,
.feature-bubble {
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  border-radius: 50%;
  background: rgba(255,255,255,.9);
  border: 1px solid rgba(188,172,146,.75);
}
.circle-card {
  width: 280px;
  height: 280px;
  padding: 34px;
}
.feature-bubble {
  width: 310px;
  min-height: 310px;
  padding: 42px 30px;
  flex-direction: column;
  backdrop-filter: blur(3px);
}
.circle-card h3,
.feature-bubble h3 {
  margin: 0 0 14px;
  font-family: var(--serif);
  font-size: 1.35rem;
  letter-spacing: .15em;
}
.circle-card p,
.feature-bubble p,
.feature-bubble small { margin: 0; }
.circle-note {
  margin: 34px 0 0;
  text-align: center;
  font-size: .8rem;
  letter-spacing: .1em;
  color: #655c53;
}



.tech-section {
  position: relative;
  overflow: hidden;
}
.tech-section::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(255,255,255,.00), rgba(255,255,255,.00)), url('../img/bg_img.png') center/cover no-repeat;
}
.tech-section > .container { position: relative; z-index: 1; }

.access-grid,
.profile-card,
.device-grid {
  display: grid;
  gap: 36px;
}
.access-grid { grid-template-columns: 1.04fr .96fr; }
.profile-card { grid-template-columns: 360px 1fr; margin-top: 42px; background: #fff; box-shadow: var(--shadow); }
.device-grid { grid-template-columns: 1fr 360px; margin-top: 26px; background: #fff; box-shadow: var(--shadow); }
.map-panel,
.photo-panel { background: #fff; box-shadow: var(--shadow); }
.map-panel img,
.photo-panel img,
.profile-card img,
.device-image-wrap img { width: 100%; height: 100%; object-fit: cover; }
.map-frame-wrap { aspect-ratio: 1 / 1; background: #f3f3f1; }
.map-frame { display: block; width: 100%; height: 100%; min-height: 236px; border: 0; filter: grayscale(.02) contrast(1.01); }
.access-map-block {
  max-width: 1320px;
  margin: 0 auto;
}
.access-map-fullbleed {
  width: 100vw;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
}
.access-map-block-under {
  margin-top: 42px;
}
.map-panel-wide {
  box-shadow: none;
  background: transparent;
}
.map-panel-fullbleed {
  width: 100%;
}
.map-frame-wide {
  position: relative;
  aspect-ratio: 2.22 / 1;
  background: #ecebe7;
}
.map-frame-fullbleed {
  aspect-ratio: 4.5 / 1;
}
.map-frame-full {
  min-height: 260px;
}
.map-embed-label {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  font-size: .82rem;
  color: #6e6860;
  letter-spacing: .04em;
  pointer-events: none;
}
.access-grid-pdf { grid-template-columns: .98fr 1.02fr; align-items: stretch; }
.access-grid-under-map {
  grid-template-columns: 1fr 1fr;
  gap: 28px;
  margin-top: 0;
}
.map-panel-pdf { display: flex; flex-direction: column; }
.map-fake-header { display: flex; align-items: center; gap: 8px; padding: 10px 12px; border-bottom: 1px solid #e4dfd8; background: #f6f5f2; font-size: .72rem; letter-spacing: .04em; color: #5d5953; }
.map-fake-dot { width: 7px; height: 7px; border-radius: 50%; background: #d04d43; }
.map-fake-title { line-height: 1; }
.access-photo-panel img { object-fit: cover; object-position: center; }
.map-caption { padding: 20px 0px 22px; }
.map-caption p { margin: 0 0 6px; font-size: 1rem; line-height: 1.95; letter-spacing: .04em; color: #58534d; }
.access-caption-left {
  padding: 0;
  align-self: start;
  text-align: left !important;
}
body[data-page="home"] .lead-block,
body[data-page="home"] .map-caption,
body[data-page="home"] .circle-note {
  text-align: center;
}
body[data-page="home"] .access-grid {
  justify-items: center;
}
body[data-page="home"] .section-access-full {
  padding-bottom: 40px;
}
.profile-content { padding: 38px 42px 28px; }
.profile-eyebrow { margin: 0 0 14px; font-family: var(--serif); font-size: .96rem; color: #5f564d; }
.profile-name { margin: 0; font-size: 1.68rem; letter-spacing: .12em; }
.profile-roman { display: block; margin: 4px 0 12px; color: #979088; letter-spacing: .16em; font-size: .76rem; }
.profile-affiliation { margin: 0 0 16px; color: #55504a; font-size: .86rem; line-height: 1.88; }
.profile-description { margin: 0; color: #514c46; font-size: .86rem; line-height: 1.94; }
.device-image-wrap {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 32px;
  background: linear-gradient(180deg, #fafafa, #f0f0f0);
}
.device-image-wrap img { width: auto; max-height: 520px; }
.device-grid-tight { grid-template-columns: 1.05fr .95fr; }
.profile-card-plain { grid-template-columns: 1fr; box-shadow: none; background: transparent; }

main .container,
main .container-narrow,
.value-list,
.flow-wrap,
.step-list,
.suite-banner,
.profile-card,
.device-grid,
.faq-list,
.legal-card,
.contact-form-wrap,
.link-frame,
.link-frame-logos,
.link-frame-reference {
  margin-left: auto;
  margin-right: auto;
}

body[data-page="home"] main,
body[data-page="program"] main,
body[data-page="experience"] main,
body[data-page="faq"] main,
body[data-page="privacy"] main,
body[data-page="contact"] main {
  text-align: center;
}

body[data-page="program"] .value-list,
body[data-page="program"] .step-list,
body[data-page="experience"] .profile-content,
body[data-page="experience"] .profile-card,
body[data-page="faq"] .faq-list,
body[data-page="privacy"] .legal-card,
body[data-page="contact"] .contact-form-wrap,
body[data-page="contact"] .contact-legal,
body[data-page="home"] .access-map-block,
body[data-page="home"] .link-frame-logos {
  text-align: center;
}

body[data-page="home"] .access-caption-left,
body[data-page="program"] .value-desc,
body[data-page="program"] .step-body,
body[data-page="experience"] .profile-description,
body[data-page="experience"] .profile-affiliation,
body[data-page="privacy"] .legal-card,
body[data-page="contact"] .form-label-wrap,
body[data-page="contact"] .form-note {
  text-align: center !important;
}

body[data-page="contact"] .form-row-custom {
  justify-items: center;
}

body[data-page="contact"] .form-row-custom > div,
body[data-page="contact"] .form-row-custom .form-check-group,
body[data-page="contact"] .form-row-custom .form-control,
body[data-page="contact"] .form-row-custom .custom-select,
body[data-page="contact"] .form-row-custom textarea {
  width: 100%;
}

body[data-page="contact"] .form-check-group {
  justify-content: center;
}

body[data-page="program"] .value-item,
body[data-page="program"] .step-item,
body[data-page="experience"] .device-grid,
body[data-page="home"] .access-grid-under-map {
  justify-items: center;
}

/* 共通（上方向の追加分を 88px → 24px に。下の余白もここで同時に指定） */
.link-section { padding: 10px 0 10px; }
/* スマホ時（882 行の @media ブロック内、対応する上書きも追加） */
@media (max-width: 767.98px) {
  .link-section { padding: 0px 0 0px; }
}

.link-frame {
  position: relative;
  padding: 78px 0 24px;
  border-top: 1px solid rgba(193,178,157,.88);
  border-bottom: 1px solid rgba(193,178,157,.88);
}
.link-frame-reference { border-top: 0; border-bottom: 0; padding-top: 52px; }
.link-frame-logos { border-top: 0; border-bottom: 0; padding-top: 52px; }
.link-heading {
  margin: 0 0 42px;
  text-align: center;
  font-size: 2.6rem;
  color: #808080;
  letter-spacing: .24em;
}
.link-logo-grid {
  position: relative;
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
}
.link-logo-grid::before,
.link-logo-grid::after {
  content: "";
  position: absolute;
  top: 6px;
  bottom: 6px;
  width: 1px;
  background: rgba(193,178,157,.88);
}
.link-logo-grid::before { left: 33.333%; }
.link-logo-grid::after { left: 66.666%; }
.link-logo-column { padding: 2px 46px; }
.link-logo-column-right { padding-top: 0; }
.link-logo-item {
  display: flex;
  align-items: center;
  min-height: 94px;
  padding: 10px 0;
}
.link-logo-item img {
  width: auto;
  max-width: 100%;
  max-height: 54px;
}
.link-reference-wrap { position: relative; max-width: 1676px; margin: 0 auto; }
.link-reference-image { width: 100%; height: auto; }
.link-hotspot { position: absolute; display: block; border-radius: 8px; }
.link-hotspot:focus,
.link-hotspot:hover { outline: 1px solid rgba(178,157,128,.45); background: rgba(178,157,128,.08); }
.hotspot-kyushu-medical { left: 2.2%; top: 18.2%; width: 29%; height: 15.5%; }
.hotspot-kyushu-cpc { left: 2.2%; top: 38.4%; width: 29%; height: 15.5%; }
.hotspot-kyushu-rehab { left: 2.2%; top: 58.3%; width: 29%; height: 15.5%; }
.hotspot-osaka-medical { left: 35.1%; top: 18.2%; width: 28.5%; height: 15.5%; }
.hotspot-osaka-cpc { left: 35.1%; top: 38.4%; width: 28.5%; height: 15.5%; }
.hotspot-osaka-rehab { left: 35.1%; top: 58.3%; width: 28.5%; height: 15.5%; }
.hotspot-reborn-main { left: 68%; top: 12.4%; width: 29.5%; height: 13%; }
.hotspot-reborn-azabu { left: 68%; top: 28.2%; width: 29.5%; height: 13%; }
.hotspot-reborn-osaka { left: 68%; top: 43.8%; width: 29.5%; height: 13%; }
.hotspot-reborn-dubai { left: 68%; top: 59.6%; width: 29.5%; height: 13%; }
.hotspot-as-support { left: 68%; top: 76%; width: 29.5%; height: 12%; }
.link-grid {
  position: relative;
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
}
.link-grid::before,
.link-grid::after {
  content: "";
  position: absolute;
  top: 8px;
  bottom: 8px;
  width: 1px;
  background: rgba(193,178,157,.88);
}
.link-grid::before { left: 33.333%; }
.link-grid::after { left: 66.666%; }
.link-column { padding: 8px 48px; }
.logo-link {
  display: flex;
  align-items: center;
  gap: 18px;
  padding: 18px 0;
}
.logo-mark {
  width: 62px;
  height: 62px;
  flex: 0 0 62px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  font-family: var(--serif);
}
.logo-mark.diamond {
  border-radius: 10px;
  background: linear-gradient(135deg, #c9b08a, #9b8055);
  transform: rotate(45deg);
}
.logo-mark.diamond span,
.logo-mark.circle span { transform: rotate(-45deg); }
.logo-mark.circle { border-radius: 50%; background: #8b8b8b; }
.logo-mark.green { background: #a6aea4; }
.logo-mark.navy { background: #4a5d7b; }
.logo-mark.gold { background: #bf9f69; }
.logo-mark.red { border-radius: 50%; background: linear-gradient(135deg, #cb2933, #78797d); font-family: var(--sans); font-size: 1rem; }
.logo-text-ja { display: block; font-size: 1.04rem; font-weight: 500; letter-spacing: .08em; color: #111; }
.logo-text-en { display: block; font-size: .76rem; letter-spacing: .24em; color: #4d4d4d; text-transform: uppercase; }

.value-list { margin-top: 36px; border-top: 1px solid var(--line); }
.value-item {
  display: grid;
  grid-template-columns: 250px 1fr;
  align-items: center;
  border-bottom: 1px solid var(--line);
}
.value-term {
  padding: 26px 22px;
  font-family: var(--serif);
  font-size: 1.48rem;
  letter-spacing: .16em;
  background: linear-gradient(90deg, #dddddd, #fbfbfb);
}
.value-desc { padding: 24px 28px; font-size: .88rem; line-height: 1.86; color: #56514b; }
.flow-wrap { margin-top: 56px; }
.flow-title {
  margin: 0 0 36px;
  text-align: center;
  font-size: 1.64rem;
  letter-spacing: .18em;
}
.step-list {
  position: relative;
  max-width: 900px;
  margin: 0 auto;
}
.step-list::before {
  content: "";
  position: absolute;
  left: 116px;
  top: 12px;
  bottom: 12px;
  width: 1px;
  background: #d4cec6;
}
.step-item {
  display: grid;
  grid-template-columns: 160px 1fr;
  gap: 28px;
  padding-bottom: 30px;
}
.step-label {
  position: relative;
  padding-top: 4px;
  text-align: center;
  font-family: var(--serif);
  color: #8d8379;
  letter-spacing: .12em;
}
.step-label strong { display: block; font-size: 1.56rem; line-height: 1.1; color: #796b5f; }
.step-label::after {
  content: "";
  position: absolute;
  right: -9px;
  top: 24px;
  width: 17px;
  height: 17px;
  border-radius: 50%;
  background: #fff;
  border: 1px solid #c9b89d;
}
.step-body h3 { margin: 0 0 10px; font-family: var(--serif); font-size: 1.24rem; letter-spacing: .1em; color: #4f4841; }
.step-body p { margin: 0; font-size: .86rem; line-height: 1.88; color: #5c5650; }
.inline-cta {
  display: inline-block;
  margin-top: 22px;
  padding: 12px 26px;
  background: #a5a5a5;
  color: #fff;
  letter-spacing: .1em;
  font-size: .8rem;
}
.suite-banner { position: relative; min-height: 300px; margin-top: 60px; overflow: hidden; }
.suite-banner img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.suite-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(70,70,70,.56), rgba(70,70,70,.22), transparent);
}
.suite-copy { position: relative; z-index: 1; max-width: 520px; padding: 58px 52px; color: #fff; }
.suite-copy h2 { margin: 0 0 10px; font-family: var(--serif); font-size: 1.66rem; letter-spacing: .14em; }
.suite-copy p { margin: 0; font-size: .88rem; line-height: 1.84; }

.tech-title {
  margin: 0 0 8px;
  text-align: center;
  font-size: 1.66rem;
  letter-spacing: .18em;
}
.tech-copy-center { margin: 0 0 24px; text-align: center; color: #5c5650; font-size: .88rem; line-height: 1.84; letter-spacing: .04em; }

.faq-list { max-width: 1040px; margin: 0 auto; }
.faq-item { margin-bottom: 18px; }
.faq-q { margin: 0 0 8px; font-size: .98rem; color: var(--gold-deep); letter-spacing: .05em; }
.faq-a { padding: 20px 24px; background: #fff; box-shadow: 0 10px 34px rgba(0,0,0,.05); font-size: .86rem; line-height: 1.88; color: #58534d; }

.legal-card {
  max-width: 920px;
  margin: 0 auto;
  padding: 38px 42px;
  background: #fff;
  box-shadow: var(--shadow);
}
.legal-card h2 { margin: 24px 0 10px; font-size: 1.22rem; letter-spacing: .06em; color: #544e47; }
.legal-card p,
.legal-card li { font-size: .84rem; line-height: 1.84; color: #58534d; }

.contact-intro { text-align: center; margin-bottom: 36px; }
.contact-icon {
  width: 82px;
  height: 82px;
  margin: 0 auto 18px;
  border: 1px solid #d0c4b3;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--gold);
  font-size: 2rem;
}
.phone-number {
  margin: 10px 0;
  font-size: 1.92rem;
  letter-spacing: .16em;
  color: var(--gold-deep);
}
.contact-form-wrap { max-width: 960px; margin: 0 auto; }
.form-row-custom {
  display: grid;
  grid-template-columns: 260px 1fr;
  gap: 28px;
  padding: 16px 0;
  border-bottom: 1px solid var(--line);
}
.form-label-wrap { padding-top: 10px; }
.form-label-title { display: block; font-family: var(--serif); font-size: .9rem; letter-spacing: .08em; color: #524c45; }
.req {
  display: inline-block;
  margin-top: 8px;
  padding: 3px 10px;
  font-size: .75rem;
  letter-spacing: .12em;
  color: #fff;
}
.req.required { background: #b6a487; }
.req.optional { background: #9e9e9e; }
.form-control,
.custom-select,
textarea {
  height: auto;
  padding: 12px 14px;
  border: 1px solid #d8d4cd;
  border-radius: 0;
  font-size: .88rem;
}
.form-check-group {
  display: flex;
  flex-wrap: wrap;
  gap: 24px;
  padding-top: 8px;
}
.form-note { margin: 8px 0 0; font-size: .78rem; color: #706963; }
.contact-legal {
  max-width: 860px;
  margin: 34px auto 0;
  text-align: center;
  color: #5e5953;
  font-size: .8rem;
  line-height: 1.86;
}
.submit-wrap { margin-top: 30px; text-align: center; }
.submit-btn {
  border: 0;
  display: inline-flex;
  align-items: center;
  gap: 14px;
  padding: 14px 42px;
  background: #a5a5a5;
  color: #fff;
  letter-spacing: .12em;
  font-size: .82rem;
}

.site-footer {
  margin-top: 92px;
  padding: 48px 0 16px;
  background: #ededed;
}
.footer-shell {
  max-width: 1320px;
  margin-left: auto;
  margin-right: auto;
  padding-left: 0px;   /* ←ヘッダーと同じ */
  padding-right: 34px;  /* ← 18px → 34px に揃える（左右対称）*/
}

.footer-top {
  display: grid;
  grid-template-columns: 336px 1fr;
  align-items: flex-start;
  column-gap: 65px;
}
.footer-brand {
  max-width: 360px;
  /* ★ ここから追加 */
  padding-left: 50px;          /* ロゴ・住所・ラインをまとめて右に寄せる量(微調整可) */
  margin-left: 0;
  /* ★ ここまで */
}
.footer-brand-link { margin-bottom: 12px; }
.footer-brand-line {
  display: block;
  width: 266px;
  max-width: 100%;
  height: 1px;
  margin: 0 0 16px;            /* 区切り線も padding-left の影響を受けて一緒に右へ動く */
  background: #cfc9c0;
}
.footer-address {
  margin: 0;
  font-size: .68rem;
  line-height: 2.05;
  letter-spacing: .04em;
  color: #5d5853;
}

/* デスクトップ(原本 814 行付近) */
.footer-nav {
  display: grid;
  grid-template-columns: max-content max-content;
  gap: 0 58px;
  padding-top: 2px;
  margin: 2px 0 0 100px;            /* auto → 0 */
  justify-self: start;
}
.footer-col {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.footer-col a {
  font-size: .9rem;
  letter-spacing: .08em;
  line-height: 1.8;
  color: #59544f;
}
.footer-bottom { display: flex; justify-content: flex-end; padding-top: 8px; padding-right: 2px; }
.footer-bottom p {
  margin: 0;
  font-size: .66rem;
  letter-spacing: .05em;
  color: #69645f;
}
.sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

@media (max-width: 1399.98px) {
  .header-inner { padding: 22px 24px 20px; }
  .nav-list { gap: 26px; }
  .link-column { padding: 8px 34px; }
}

@media (max-width: 1199.98px) {
  body { padding-top: 0; }
  .navbar-toggler { display: flex; }
  .navbar-collapse {
    display: none !important;
    position: absolute;
    left: 0;
    right: 0;
    top: 100%;
    background: rgba(255,255,255,.98);
    padding: 18px 24px 24px;
    border-bottom: 1px solid #ddd;
    box-shadow: 0 24px 30px rgba(0,0,0,.06);
  }
  .navbar-collapse.show { display: flex !important; flex-direction: column; align-items: flex-start; }
  .nav-list { flex-direction: column; gap: 14px; width: 100%; }
  .contact-cta { width: 100%; justify-content: center; }
  .contact-cta-image { width: 216px; }
  .access-grid,
  .profile-card,
  .device-grid,
  .link-grid,
  .link-logo-grid,
  .circle-image-row,
  .bubble-image-row,
  .value-item,
  .form-row-custom { grid-template-columns: 1fr; }
  .map-frame { min-height: 360px; }
  .map-frame-wide { aspect-ratio: 2 / 1; }
  .access-grid-under-map { gap: 22px; margin-top: 32px; }
  .link-frame-reference { padding-top: 36px; }
  .link-frame-logos { padding-top: 36px; }
  .link-grid::before,
  .link-grid::after,
  .link-logo-grid::before,
  .link-logo-grid::after { display: none; }
  .link-logo-column { padding: 0; }
  .link-logo-item { min-height: auto; padding: 8px 0; justify-content: center; }
  .step-list::before { left: 24px; }
  .step-item { grid-template-columns: 1fr; padding-left: 58px; }
  .step-label { text-align: left; }
  .step-label::after { left: -42px; right: auto; top: 18px; }
  .suite-copy { padding: 54px 34px; }
  .footer-shell { padding-left: 24px; padding-right: 20px; }
  .footer-top { grid-template-columns: 1fr; row-gap: 24px; }
  .footer-nav { gap: 8px 34px; padding-top: 0; }
  .footer-bottom { justify-content: flex-start; }
  body[data-page="program"] .suite-banner,
  body[data-page="experience"] .profile-card,
  body[data-page="experience"] .device-grid,
  body[data-page="contact"] .contact-form-wrap,
  body[data-page="privacy"] .legal-card,
  body[data-page="faq"] .faq-list,
  body[data-page="home"] .access-grid-pdf { max-width: none; }
}

@media (max-width: 767.98px) {
  body { padding-top: 0; }
  .header-inner { padding: 16px 16px 14px; }
  .brand-logo-image { width: 140px; }
  .hero,
  .subpage-hero { min-height: 370px; }     /* was 728 → now 50% shorter */            /* 560 × 1.30 ≈ 1.3 倍 taller */
  .hero {                                          /* mobile-only hero swap */
    background-image: url('../img/hero-sp.png') !important;
    background-position: center !important;
    background-size: 100% auto !important;  /* mobile SP → image at 50% (was cover=100%) */
    background-repeat: no-repeat !important;
  }
  .hero-artwork-image { display: none !important; } /* hide original wide image on mobile */
  .hero::before { background: none !important; }    /* let the bg image show */
  .hero-inner { padding: 100px 16px 68px; }
  .map-frame { min-height: 300px; }
  /* SP-only: the 3 element circles stay in one horizontal 3-col row, round */
  .circle-image-row { display: grid !important; grid-template-columns: repeat(3, 1fr) !important; gap: 8px !important; max-width: 100% !important; margin: 0 auto !important; }
  .circle-image-card { width: 100% !important; margin: 0 !important; }
  .circle-image-card img { width: 100% !important; max-width: 100% !important; height: auto !important; aspect-ratio: 1 / 1 !important; object-fit: cover !important; border-radius: 50% !important; overflow: hidden !important; }
  .bubble-image-row { display: grid !important; grid-template-columns: repeat(3, 1fr) !important; gap: 8px !important; max-width: 100% !important; margin: 0 auto !important; }
  .bubble-image-card img { width: 100% !important; max-width: 100% !important; aspect-ratio: 1 / 1 !important; object-fit: cover !important; }
  /* SP-only: .tech-section (日本品質) bubble row → 1 column instead of 3 */
  .tech-section .bubble-image-row { display: flex !important; flex-direction: column !important; gap: 18px !important; max-width: 100% !important; margin: 0 auto !important; }
  .tech-section .bubble-image-card { width: 100% !important; max-width: 100% !important; margin: 0 !important; }
  .tech-section .bubble-image-card img { width: 100% !important; max-width: 70% !important; height: auto !important; aspect-ratio: auto !important; object-fit: contain !important; }


  /* mobile-only: collapse hero-inner padding so image fills the hero edge-to-edge */
  .hero-inner { padding: 0 16px !important; }
  .hero { padding-top: 0 !important; padding-bottom: 0 !important; }

  /* mobile-only: center logo / address / menu / copyright stack */
  .footer-brand, .footer-brand-link, .footer-brand-line, .footer-address {
    text-align: center !important;
    margin-left: auto !important;
    margin-right: auto !important;
    padding-left: 0 !important;
  }
  .footer-nav {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 16px !important;
    padding-top: 0 !important;
    margin: 0 auto !important;
    justify-self: center !important;
  }
  .footer-col { align-items: center !important; gap: 8px !important; }
  .footer-col a { text-align: center !important; }
  .footer-bottom { justify-content: center !important; padding-right: 0 !important; padding-top: 14px; }
  .footer-bottom p { text-align: center !important; margin: 0 auto !important; }

  /* SP-only: keep Google map inside the content area, no horizontal overflow */
  .map-frame-full { width: 100% !important; max-width: 100% !important; height: auto !important; aspect-ratio: 1.6 / 1; min-height: 220px; }
  iframe.map-frame { width: 100% !important; max-width: 100% !important; height: auto !important; aspect-ratio: 1.6 / 1; min-height: 220px; }
  .map-frame-wrap, .map-panel, .map-frame-wide, .map-frame-fullbleed,
  .access-map-block, .access-map-block-under, .access-map-fullbleed,
  .access-grid-under-map { max-width: 100% !important; width: 100% !important; margin-left: 0 !important; margin-right: 0 !important; }
  .access-map-fullbleed { margin-left: 0 !important; margin-right: 0 !important; }  /* override 100vw bleed */
  .map-panel-wide, .map-panel-fullbleed, .map-pop { padding-left: 16px !important; padding-right: 16px !important; box-sizing: border-box !important; }

  .map-frame-wide { aspect-ratio: 1.7 / 1; }
  .map-embed-label { font-size: .76rem; }
  .access-grid-under-map { gap: 16px; margin-top: 24px; }
  .access-caption-left { text-align: center !important; }
  .hero-title { font-size: 2.2rem; letter-spacing: .14em; }
  .hero-copy,
  .section-lead,
  .faq-a,
  .legal-card p,
  .legal-card li { font-size: .94rem; }
  .subpage-title,
  .section-title { font-size: 1.8rem; line-height: 1.7; letter-spacing: .12em; }
  .circle-card,
  .feature-bubble {
    width: 100%;
    max-width: 360px;
    min-height: 240px;
    height: auto;
    border-radius: 180px;
  }
  .circle-image-row,
  .bubble-image-row {
    gap: 18px;
  }
  .circle-image-card img,
  .bubble-image-card img {
    max-width: 280px;
  }
  .value-term { font-size: 1.28rem; padding: 20px; }
  .value-desc { padding: 20px; font-size: .9rem; }
  .flow-title { font-size: 1.42rem; }
  .step-body h3,
  .tech-title,
  .suite-copy h2 { font-size: 1.36rem; }
  .subpage-title { font-size: 1.72rem !important; }
  .section-title { font-size: 1.4rem; }
  .profile-content,
  .legal-card { padding: 24px 18px; }
  body[data-page="contact"] .form-row-custom { gap: 16px; }
  body[data-page="home"] .section { padding: 45px 0; }
  .profile-content,
  .legal-card { padding: 28px 20px; }
  .device-image-wrap img { max-height: 340px; }
  .phone-number { font-size: 1.6rem; letter-spacing: .08em; }
  .form-check-group { gap: 14px 18px; }
  .site-footer { margin-top: 78px; padding: 34px 0 10px; }
  .footer-shell { padding-left: 16px; padding-right: 18px; }
  .footer-brand-link { margin-bottom: 8px; }
  .footer-brand-line { width: 198px; margin-bottom: 12px; }
  .footer-address { font-size: .66rem; }
  .footer-nav { grid-template-columns: 1fr; gap: 6px 0; }
  .footer-col { gap: 6px; }
  .footer-col a { font-size: .68rem; }
  .footer-bottom { padding-top: 6px; }
  .footer-bottom p { font-size: .64rem; }
  .link-logo-item img { max-height: 44px; }
  .contact-cta-image { width: 184px; }
  .link-hotspot { border-radius: 4px; }
}

/* FINAL PDF SECTION ALIGNMENT OVERRIDES START */
body[data-page="home"] main,
body[data-page="program"] main,
body[data-page="experience"] main,
body[data-page="faq"] main,
body[data-page="privacy"] main,
body[data-page="contact"] main {
  text-align: initial;
}

body[data-page="home"] .lead-block,
body[data-page="program"] .lead-block,
body[data-page="experience"] .lead-block,
body[data-page="contact"] .contact-intro,
body[data-page="contact"] .contact-legal,
body[data-page="contact"] .submit-wrap {
  text-align: center;
}

body[data-page="home"] .access-map-block,
body[data-page="home"] .link-frame-logos,
body[data-page="program"] .value-list,
body[data-page="program"] .flow-wrap,
body[data-page="program"] .suite-banner,
body[data-page="experience"] .profile-card,
body[data-page="experience"] .device-grid,
body[data-page="faq"] .faq-list,
body[data-page="privacy"] .legal-card,
body[data-page="contact"] .contact-form-wrap {
  width: 100%;
  margin-left: auto;
  margin-right: auto;
}

body[data-page="home"] .access-caption-left,
body[data-page="program"] .value-desc,
body[data-page="program"] .step-body,
body[data-page="experience"] .profile-content,
body[data-page="experience"] .profile-affiliation,
body[data-page="experience"] .profile-description,
body[data-page="faq"] .faq-item,
body[data-page="privacy"] .legal-card,
body[data-page="contact"] .contact-form-wrap,
body[data-page="contact"] .form-label-wrap,
body[data-page="contact"] .form-note {
  text-align: left !important;
}

body[data-page="program"] .value-list {
  max-width: 980px;
}

body[data-page="program"] .value-item {
  grid-template-columns: 214px 1fr;
  align-items: center;
}

body[data-page="program"] .value-term {
  text-align: center;
}

body[data-page="program"] .flow-wrap {
  max-width: 920px;
  margin-top: 58px;
}

body[data-page="program"] .step-list {
  max-width: 820px;
}

body[data-page="program"] .step-list::before {
  left: 98px;
}

body[data-page="program"] .step-item {
  grid-template-columns: 138px 1fr;
  gap: 24px;
}

body[data-page="program"] .step-label::after {
  right: -10px;
}

body[data-page="program"] .suite-copy {
  text-align: left;
}

body[data-page="experience"] .profile-card {
  grid-template-columns: 330px 1fr;
}

body[data-page="experience"] .device-grid-tight {
  grid-template-columns: 1fr 330px;
}

body[data-page="experience"] .profile-content {
  padding: 30px 34px 24px;
}

body[data-page="experience"] .tech-title,
body[data-page="experience"] .tech-copy-center {
  text-align: center;
}

body[data-page="faq"] .faq-list {
  max-width: 900px;
}

body[data-page="faq"] .faq-item {
  text-align: left;
}

body[data-page="faq"] .faq-q {
  padding-left: 6px;
}

body[data-page="privacy"] .legal-card {
  max-width: 900px;
  padding: 42px 48px;
}

body[data-page="privacy"] .legal-card h2,
body[data-page="privacy"] .legal-card p,
body[data-page="privacy"] .legal-card li {
  text-align: left;
}

body[data-page="contact"] .contact-form-wrap {
  max-width: 920px;
  text-align: left;
}

body[data-page="contact"] .form-row-custom {
  grid-template-columns: 220px 1fr;
  gap: 22px;
  justify-items: stretch;
}

body[data-page="contact"] .form-row-custom > div,
body[data-page="contact"] .form-row-custom .form-control,
body[data-page="contact"] .form-row-custom .custom-select,
body[data-page="contact"] .form-row-custom textarea {
  width: 100%;
}

body[data-page="contact"] .form-check-group {
  justify-content: flex-start;
}

@media (max-width: 1199.98px) {
  body[data-page="program"] .suite-banner,
  body[data-page="experience"] .profile-card,
  body[data-page="experience"] .device-grid,
  body[data-page="contact"] .contact-form-wrap,
  body[data-page="privacy"] .legal-card,
  body[data-page="faq"] .faq-list,
  body[data-page="home"] .access-map-block {
    max-width: none;
  }
}

@media (max-width: 767.98px) {
  body[data-page="program"] .value-item,
  body[data-page="program"] .step-item,
  body[data-page="experience"] .profile-card,
  body[data-page="experience"] .device-grid-tight,
  body[data-page="contact"] .form-row-custom {
    grid-template-columns: 1fr;
  }

  body[data-page="program"] .step-list::before {
    left: 24px;
  }

  body[data-page="program"] .step-label::after {
    left: -42px;
    right: auto;
  }

  body[data-page="contact"] .form-check-group {
    justify-content: center;
  }
}
/* FINAL PDF SECTION ALIGNMENT OVERRIDES END *//* ===== STACKING / POSITION REPAIR (appended) ===== */
/* Bootstrap CSS is 404 on this host; manually restore fixed-top + ensure nav anchor */
.site-header {
  position: fixed !important;
  top: 0; left: 0; right: 0;
  z-index: 1100 !important;
}
.header-inner { position: relative !important; }
body { padding-top: 96px; }  /* offset for fixed header (~80px + breathing) */
@media (max-width: 767.98px) { body { padding-top: 72px; } }

/* ===== DRAWER NAV (no Bootstrap .collapse dependency) ===== */
.navbar-toggler {
  position: relative;
  z-index: 1101;            /* sit above the dropdown when opened */
}
.navbar-collapse {
  margin-left: auto;        /* right-aligned when in flow */
}
@media (max-width: 1199.98px) {
  .navbar-collapse {
    position: absolute !important;
    top: 100% !important;
    left: 0 !important;
    right: 0 !important;
    z-index: 1100 !important;
    background: rgba(255,255,255,.98) !important;
    padding: 18px 24px 22px !important;
    border-bottom: 1px solid #ddd !important;
    box-shadow: 0 24px 30px rgba(0,0,0,.06) !important;
    display: none !important;
    flex-direction: column !important;
    align-items: center !important;
    gap: 14px !important;
  }
  .navbar-collapse.is-open,
  .navbar-collapse.show {
    display: flex !important;
  }
  .navbar-collapse .nav-list,
  .navbar-collapse.show .nav-list {
    flex-direction: column !important;
    gap: 14px !important;
    width: 100% !important;
    align-items: center !important;
  }
  .navbar-collapse .contact-cta { width: 100%; justify-content: center; }
  .navbar-collapse .contact-cta-image { width: 216px; }
  .navbar-toggler[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
  .navbar-toggler[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
  .navbar-toggler[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
}

/* ID-based kill switch to beat any other lingering rule */
#globalNav.navbar-collapse { visibility: visible !important; opacity: 1 !important; transform: none !important; }


/* ============================================================
   SP-only / PC-only visibility helpers (project breakpoints)
   project breaks:  SP = max-width: 767.98px  |  PC = min-width: 1200px
   Usage in HTML:
     <br class="sp-break">          ← line break visible only on mobile
     <span class="sp-only">…</span> ← visible only on mobile
     <span class="pc-only">…</span> ← visible only on PC / tablet
   ============================================================ */
.sp-only, .br-sp, .sp-break     { display: none !important; }
.pc-only, .pc-break             { display: inline !important; }

@media (max-width: 767.98px) {
  .sp-only, .br-sp, .sp-break    { display: inline !important; }
  .pc-only, .pc-break            { display: none !important; }
  .sp-only.block, .sp-break      { display: block !important; }  /* for block use */
}
/* ====================================================================
   SP-only: 完全ゼロ化 (reborn_lounge_ginza の LINK セクション)
   差し込み位置: @media (max-width: 767.98px) { ... } ブロック内の
                 .map-frame { min-height: 300px; } 直下あたり
   ==================================================================== */

/* 1. セクション自身の上下パディングを 0 にする (.section も .link-section も両方潰す) */
.section.link-section {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

/* 2. 内枠 (.link-frame = .link-frame-logos) の上下も 0 にする */
.link-frame,
.link-frame-logos {
  padding-top: 40px!important;
  padding-bottom: 0 !important;
  border-top: 0 !important;     /* 上境界線も気になるようなら一緒に消す */
  border-bottom: 0 !important;  /* 下境界線も気になるようなら一緒に消す */
}

/* 3. .container-narrow の左右余白は無関係だが、念のため干渉しないように */
.section.link-section .container.container-narrow,
.link-section .container-narrow {
  padding-left: 0 !important;
  padding-right: 0 !important;
}


