@charset "UTF-8";

/* =========================================================
   aimme PLAN renewal v23
   カード高さ揃えをやめ、崩れにくい横並びリスト型へ変更
   ========================================================= */

.is-hidden-title {
  display: none;
}
.plan-vision-page--sapporo-v40 {
  max-width: 1280px;
  margin: 0 auto;
  padding: 28px 20px 90px;
}
.plan-vision--sapporo-v40,
.plan-vision--sapporo-v40 * {
  box-sizing: border-box;
}
.plan-vision--sapporo-v40 {
  font-family: "Noto Sans JP", sans-serif;
  color: #40373b;
}
.plan-vision--sapporo-v40 a {
  text-decoration: none;
}


/* HERO */
.plan-vision--sapporo-v40 .plan-vision__hero {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 320px;
  gap: 32px;
  align-items: center;
  padding: 42px 48px;
  border-radius: 26px;
  background:
    linear-gradient(90deg, rgba(255,255,255,.96) 0%, rgba(255,255,255,.9) 48%, rgba(255,255,255,.72) 100%),
    url("/resources/images/plan/bg-title.jpg") center right / cover no-repeat;
  box-shadow: 0 14px 40px rgba(62,39,51,.08);
}
.plan-vision--sapporo-v40 .plan-vision__hero-label {
  position: relative;
  margin: 0 0 18px;
  padding-left: 18px;
  font-family: "Montserrat", sans-serif;
  font-size: 3.6rem;
  line-height: 1;
  letter-spacing: .08em;
  font-weight: 800;
}
.plan-vision--sapporo-v40 .plan-vision__hero-label::before {
  content: "";
  position: absolute;
  left: 0;
  top: 5px;
  width: 6px;
  height: 46px;
  border-radius: 999px;
  background: linear-gradient(180deg, #f58aa2 0%, #f0bdcb 100%);
}
.plan-vision--sapporo-v40 .plan-vision__hero-copy h1 {
  margin: 0;
  font-size: 2.05rem;
  line-height: 1.75;
  font-weight: 800;
}
.plan-vision--sapporo-v40 .plan-vision__hero-store {
  padding: 22px 24px;
  border: 1px solid #f0e2e7;
  border-radius: 18px;
  background: rgba(255,255,255,.92);
  box-shadow: 0 10px 24px rgba(82,62,72,.07);
}
.plan-vision--sapporo-v40 .plan-vision__hero-store p {
  margin: 0 0 14px;
  text-align: center;
  font-weight: 800;
}
.plan-vision--sapporo-v40 .plan-vision__store-buttons {
  display: flex;
  justify-content: center;
  gap: 8px;
}
.plan-vision--sapporo-v40 .plan-vision__store-buttons button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 70px;
  height: 40px;
  padding: 0 16px;
  border: 1px solid #e0d9dd;
  border-radius: 999px;
  background: #fff;
  color: #5e5358;
  font-size: 1.35rem;
  font-weight: 800;
  line-height: 1;
  white-space: nowrap;
}
.plan-vision--sapporo-v40 .plan-vision__store-buttons .is-current {
  border: 2px solid #eb7a98;
  background: #fff8fb;
  color: #eb7a98;
}


/* CATEGORY */
.plan-vision--sapporo-v40 .plan-vision__tabs {
  display: grid;
  margin: 22px 0 18px;
}
.plan-vision--sapporo-v40 .plan-vision__tab {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  padding: 14px 12px;
  border: 1px solid #e6e7ea;
  border-radius: 16px;
  background: #f8f9fb;
  color: #5c5960;
  font-size: 1.34rem;
  font-weight: 800;
  line-height: 1.35;
  text-align: center;
}
.plan-vision--sapporo-v40 .plan-vision__tab.is-active {
  border-color: #ef8ea7;
  background: #fff3f6;
  color: #e76d90;
}
.plan-vision--sapporo-v40 .plan-vision__tab-icon {
  font-size: 1.55rem;
  line-height: 1;
}


/* JUMP */
.plan-vision--sapporo-v40 .plan-vision__jump {
  display: flex;
  flex-wrap: wrap;
  border-radius: 18px;
}
.plan-vision--sapporo-v40 .plan-vision__jump a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 36px;
  padding: 0 16px;
  border: 1px solid #f3d9e3;
  border-radius: 999px;
  background: #fff7fa;
  color: #e87898;
  font-size: 1.22rem;
  font-weight: 800;
}
.plan-vision--sapporo-v40 .plan-vision__anchor {
  scroll-margin-top: 110px;
}
.plan-vision--sapporo-v40 .plan-vision__cards-wrap,
.plan-vision--sapporo-v40 .plan-vision__option-block {
  display: grid;
  grid-template-columns: 230px minmax(0, 1fr);
  gap: 22px;
  align-items: start;
  padding: 26px;
  border: 1px solid #f0eff2;
  border-radius: 24px;
  background: #fff;
  box-shadow: 0 10px 24px rgba(74,56,63,.05);
}


/* INTRO */
.plan-vision--sapporo-v40 .plan-vision__intro {
  align-self: stretch;
  padding: 26px 22px;
  border-radius: 20px;
  background: linear-gradient(180deg, #fff7f9 0%, #fff 100%);
}
.plan-vision--sapporo-v40 .plan-vision__intro-icon {
  margin: 0 0 18px;
  font-size: 2.2rem;
}
.plan-vision--sapporo-v40 .plan-vision__intro h2 {
  margin: 0;
  color: #9e8f97;
  font-size: 1.24rem;
  font-weight: 800;
}
.plan-vision--sapporo-v40 .plan-vision__intro h3 {
  margin: 8px 0 14px;
  font-size: 2.9rem;
  line-height: 1.35;
  font-weight: 800;
}
.plan-vision--sapporo-v40 .plan-vision__intro p:last-child {
  margin: 0;
  color: #716a70;
}


/* NEW PLAN LIST CARDS */
.plan-vision--sapporo-v40 .plan-vision__cards {
  display: grid;
  gap: 14px;
}
.plan-vision--sapporo-v40 .vplan-card {
  position: relative;
  border: 1px solid #eddfe5;
  border-radius: 18px;
  background: #fff;
  box-shadow: 0 6px 18px rgba(104,77,88,.045);
}
.plan-vision--sapporo-v40 .vplan-card.is-highlight {
  border: 2px solid #ec829d;
  background: linear-gradient(90deg, #fff7fa 0%, #fff 58%);
}
.plan-vision--sapporo-v40 .vplan-card__ribbon {
  margin: 0;
  padding: 3px 12px;
  border-radius: 999px;
  background: #ef809b;
  color: #fff;
  font-size: 1.02rem;
  line-height: 1.4;
  font-weight: 800;
}
.plan-vision--sapporo-v40 .vplan-card__main {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) 240px 150px;
  gap: 18px;
  align-items: center;
  min-height: 118px;
  padding: 22px 22px;
}
.plan-vision--sapporo-v40 .vplan-card__name h3 {
  margin: 0;
  color: #3f373a;
  font-size: 2rem;
  line-height: 1.38;
  font-weight: 800;
}
.plan-vision--sapporo-v40 .vplan-card__name p {
  margin: 8px 0 0;
  color: #736a70;
  font-size: 1.22rem;
  line-height: 1.55;
  font-weight: 700;
}
.plan-vision--sapporo-v40 .vplan-card__spec {
  min-width: 0;
}
.plan-vision--sapporo-v40 .vplan-card__price {
  display: flex;
  align-items: baseline;
  gap: 6px;
  margin: 0 0 9px;
  white-space: nowrap;
}
.plan-vision--sapporo-v40 .vplan-card__price strong {
  color: #3f373a;
  font-size: 3.15rem;
  line-height: 1;
  font-weight: 800;
  letter-spacing: -.04em;
}
.plan-vision--sapporo-v40 .vplan-card__price span {
  color: #6f666c;
  font-size: 1.02rem;
  line-height: 1.35;
  font-weight: 800;
  white-space: nowrap;
}
.plan-vision--sapporo-v40 .vplan-card__spec ul {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px 14px;
  margin: 0;
  padding: 0;
  color: #7b7278;
  font-size: 1.08rem;
  line-height: 1.2;
  font-weight: 700;
  list-style: none;
}
.plan-vision--sapporo-v40 .vplan-card__spec li {
  display: flex;
  align-items: center;
  gap: 5px;
}
.plan-vision--sapporo-v40 .vplan-card__action a {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 46px;
  padding: 0 14px;
  border: 1px solid #ea7898;
  border-radius: 999px;
  color: #ea7898;
  text-align: center;
  font-size: 1.12rem;
  font-weight: 800;
  line-height: 1.35;
  white-space: nowrap;
}
.plan-vision--sapporo-v40 .vplan-card.is-highlight .vplan-card__action a {
  border-color: transparent;
  background: linear-gradient(90deg, #ee879f 0%, #f2a6b8 100%);
  color: #fff;
}
.plan-vision--sapporo-v40 .plan-compare-details {
  overflow: hidden;
  border: 1px solid #f0dfe6;
  border-radius: 22px;
  background: #fff;
  box-shadow: 0 10px 24px rgba(74,56,63,.04);
}
.plan-vision--sapporo-v40 .plan-compare-details summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 20px 26px;
  list-style: none;
  cursor: pointer;
  background: linear-gradient(90deg, #fff7fa 0%, #fff 100%);
}
.plan-vision--sapporo-v40 .plan-compare-details summary::-webkit-details-marker {
  display: none;
}
.plan-vision--sapporo-v40 .plan-compare-details__text strong {
  display: block;
  font-size: 2.1rem;
  line-height: 1.45;
  font-weight: 800;
}
.plan-vision--sapporo-v40 .plan-compare-details__text small {
  display: block;
  margin-top: 4px;
  color: #756b71;
  font-size: 1.35rem;
  line-height: 1.7;
}
.plan-vision--sapporo-v40 .plan-compare-details__icon {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: #f3dfe7;
  color: #e87898;
  font-size: 2.4rem;
  line-height: 1;
  font-weight: 800;
}
.plan-vision--sapporo-v40 .plan-compare-details[open] .plan-compare-details__icon {
  transform: rotate(45deg);
}
.plan-vision--sapporo-v40 .plan-compare-details__body {
  padding: 0 24px 24px;
}
.plan-vision--sapporo-v40 .plan-compare-table-scroll {
  padding-bottom: 6px;
}
.plan-vision--sapporo-v40 .plan-compare-table {
  width: 100%;
  min-width: 920px;
  border-collapse: separate;
  border-spacing: 0;
  table-layout: fixed;
  color: #463d40;
}
.plan-vision--sapporo-v40 .plan-compare-table th, .plan-vision--sapporo-v40 .plan-compare-table td {
  padding: 16px 14px;
  border-right: 1px solid #f0e5ea;
  border-bottom: 1px solid #f0e5ea;
  background: #fff;
  font-size: 1.35rem;
  line-height: 1.75;
  vertical-align: top;
}
.plan-vision--sapporo-v40 .plan-compare-table thead th, .plan-vision--sapporo-v40 .plan-compare-table tbody th {
  background: #fff7fa;
  font-weight: 800;
}
.plan-vision--sapporo-v40 .compare-plan-name {
  display: block;
  min-height: 3.4em;
  font-size: 1.55rem;
  line-height: 1.55;
  font-weight: 800;
}
.plan-vision--sapporo-v40 .compare-plan-price {
  display: block;
  margin-top: 8px;
  color: #e97796;
  font-size: 1.7rem;
  font-weight: 800;
}
.plan-vision--sapporo-v40 .compare-includes {
  margin: 0;
  padding: 0;
  list-style: none;
}
.plan-vision--sapporo-v40 .compare-includes li {
  position: relative;
  padding-left: 1.1em;
}
.plan-vision--sapporo-v40 .compare-includes li::before {
  content: "";
  position: absolute;
  top: .72em;
  left: 0;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #ef8aa4;
}
.plan-vision--sapporo-v40 .plan-compare-cta {
  margin-top: 18px;
  padding: 28px 24px;
  border: 1px solid #f2e2e8;
  border-radius: 18px;
  background: #fff7fa;
  text-align: center;
}
.plan-vision--sapporo-v40 .plan-compare-cta p {
  margin: 0 0 18px;
  color: #514a4f;
  font-size: 1.65rem;
  line-height: 1.8;
  font-weight: 800;
}
.plan-vision--sapporo-v40 .plan-compare-cta__buttons {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 16px;
}
.plan-vision--sapporo-v40 .plan-compare-cta__buttons a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 220px;
  min-height: 54px;
  padding: 0 32px;
  border: 1px solid #e97998;
  border-radius: 999px;
  background: #fff;
  color: #e97998;
  font-weight: 800;
  line-height: 1.45;
  letter-spacing: .04em;
}
.plan-vision--sapporo-v40 .plan-compare-cta__buttons a:first-child {
  background: #e97998;
  color: #fff;
}


/* UPGRADE */
.plan-vision--sapporo-v40 .plan-vision__upgrade {
  display: grid;
  grid-template-columns: 240px minmax(0,1fr);
  gap: 18px;
  padding: 20px 24px;
  border: 1px solid #e8edf1;
  border-radius: 22px;
  background: #f8fafc;
}
.plan-vision--sapporo-v40 .plan-vision__upgrade-head h3 {
  margin: 0 0 8px;
  font-size: 2.2rem;
  line-height: 1.45;
  font-weight: 800;
}
.plan-vision--sapporo-v40 .plan-vision__upgrade-head p {
  margin: 0;
  color: #726a71;
  line-height: 1.75;
  font-size: 1.35rem;
}
.plan-vision--sapporo-v40 .plan-vision__upgrade-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0,1fr));
  gap: 12px;
}
.plan-vision--sapporo-v40 .plan-vision__upgrade-item, .plan-vision--sapporo-v40 .plan-vision__upgrade-link {
  display: flex;
  min-height: 88px;
  flex-direction: column;
  justify-content: center;
  padding: 16px 14px;
  border: 1px solid #eceef1;
  border-radius: 16px;
  background: #fff;
  color: #514a4f;
}
.plan-vision--sapporo-v40 .plan-vision__upgrade-item span {
  color: #827882;
  font-size: 1.22rem;
}
.plan-vision--sapporo-v40 .plan-vision__upgrade-item strong {
  margin-top: 6px;
  font-size: 1.75rem;
  line-height: 1.35;
  font-weight: 800;
}
.plan-vision--sapporo-v40 .plan-vision__upgrade-link {
  align-items: center;
  text-align: center;
  font-weight: 800;
  line-height: 1.45;
}


/* ALBUM */
.plan-vision--sapporo-v40 .plan-vision__album {
  display: grid;
  margin-top: 26px;
  border: 1px solid #f0dfe6;
  border-radius: 24px;
  background: radial-gradient(circle at 8% 10%, rgba(238,128,160,.12), transparent 34%), linear-gradient(135deg, #fff7fa 0%, #fff 64%);
  box-shadow: 0 10px 24px rgba(74,56,63,.04);
}
.plan-vision--sapporo-v40 .plan-vision__album-eyebrow {
  margin: 0 0 8px;
  color: #e87898;
  font-family: "Montserrat", sans-serif;
  font-size: 1.2rem;
  font-weight: 800;
  letter-spacing: .12em;
}
.plan-vision--sapporo-v40 .plan-vision__album h2 {
  margin: 0 0 10px;
  font-size: 2.6rem;
  line-height: 1.45;
  font-weight: 800;
}
.plan-vision--sapporo-v40 .plan-vision__album-copy p:last-child {
  margin: 0;
  color: #675e64;
}
.plan-vision--sapporo-v40 .plan-vision__album-cards article {
  min-height: 132px;
  padding: 16px 14px;
  border: 1px solid #f1e2e8;
  border-radius: 16px;
  background: rgba(255,255,255,.92);
}
.plan-vision--sapporo-v40 .plan-vision__album-cards span {
  display: inline-block;
  margin-bottom: 8px;
  padding: 3px 8px;
  border-radius: 999px;
  background: #f5d9e2;
  color: #e87898;
  font-size: 1.05rem;
  font-weight: 800;
}
.plan-vision--sapporo-v40 .plan-vision__album-cards h3 {
  margin: 0 0 6px;
  font-size: 1.65rem;
  font-weight: 800;
}
.plan-vision--sapporo-v40 .plan-vision__album-cards p {
  margin: 0;
  color: #70666d;
  font-size: 1.2rem;
  line-height: 1.7;
}
.plan-vision--sapporo-v40 .plan-vision__album-link {
  position: relative;
  align-self: stretch;
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 0;
  width: 100%;
  padding: 28px 26px;
  background: radial-gradient(circle at 88% 18%, rgba(255,255,255,.35), transparent 32%), linear-gradient(135deg, #e76d90 0%, #f1a4b8 100%);
  color: #fff;
  text-align: center;
  font-weight: 800;
  letter-spacing: .04em;
  box-shadow: 0 14px 28px rgba(231,109,144,.22);
}
.plan-vision--sapporo-v40 .plan-vision__album-link::after {
  content: "›";
  position: absolute;
  width: 40px;
  height: 40px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: rgba(255,255,255,.22);
  color: #fff;
  font-size: 3rem;
  line-height: 1;
}


/* FLOW/CTA */
.plan-vision--sapporo-v40 .plan-vision__flow, .plan-vision--sapporo-v40 .plan-vision__cta {
  margin-top: 24px;
  padding: 28px;
  border: 1px solid #f3e7eb;
  border-radius: 24px;
  background: linear-gradient(180deg, #fff7fa 0%, #fff 100%);
}
.plan-vision--sapporo-v40 .plan-vision__flow h2 {
  margin: 0 0 18px;
  font-size: 2.6rem;
  font-weight: 800;
}
.plan-vision--sapporo-v40 .plan-vision__flow-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0,1fr));
  gap: 12px;
}
.plan-vision--sapporo-v40 .plan-vision__flow-item {
  padding: 16px 14px;
  border: 1px solid #f1e5ea;
  border-radius: 16px;
  background: #fff;
}
.plan-vision--sapporo-v40 .plan-vision__flow-item span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  margin-bottom: 12px;
  border-radius: 50%;
  background: #f3b1c2;
  color: #fff;
  font-weight: 800;
}
.plan-vision--sapporo-v40 .plan-vision__flow-item h3 {
  margin: 0 0 8px;
  font-size: 1.65rem;
  font-weight: 800;
}
.plan-vision--sapporo-v40 .plan-vision__flow-item p {
  margin: 0;
  color: #726a71;
  font-size: 1.35rem;
  line-height: 1.7;
}
.plan-vision--sapporo-v40 .plan-vision__cta {
  display: grid;
  grid-template-columns: repeat(3, minmax(0,1fr));
  gap: 16px;
  padding: 0;
  border: 0;
  background: transparent;
}
.plan-vision--sapporo-v40 .plan-vision__cta a {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: 112px;
  padding: 24px 32px;
  border: 1px solid #ede7ea;
  background: #fff;
  color: #40363a;
  box-shadow: 0 10px 18px rgba(90,67,77,.05);
}
.plan-vision--sapporo-v40 .plan-vision__cta .cta-reserve {
  background: #fff5f8;
}
.plan-vision--sapporo-v40 .plan-vision__cta .cta-line {
  background: #f2fbf2;
}
.plan-vision--sapporo-v40 .plan-vision__cta strong {
  display: block;
  margin-bottom: 8px;
  font-size: 2.2rem;
  font-weight: 800;
}
.plan-vision--sapporo-v40 .plan-vision__cta span {
  color: #736a70;
}
.plan-vision--sapporo-v40 .plan-vision__notice {
  margin: 18px 0 0;
  color: #8a8187;
  text-align: right;
  font-size: 1.3rem;
}


/* RESPONSIVE */
@media (max-width: 1100px) {
  .plan-vision--sapporo-v40 .plan-vision__hero {
    grid-template-columns: 1fr;
    padding: 36px 28px;
  }
  .plan-vision--sapporo-v40 .plan-vision__tabs {
    grid-template-columns: repeat(3, minmax(0,1fr));
  }
  .plan-vision--sapporo-v40 .plan-vision__cards-wrap, .plan-vision--sapporo-v40 .plan-vision__option-block {
    grid-template-columns: 1fr;
  }
  .plan-vision--sapporo-v40 .vplan-card__main {
    grid-template-columns: minmax(0, 1fr) 220px 140px;
  }
  .plan-vision--sapporo-v40 .plan-vision__upgrade {
    grid-template-columns: 1fr;
  }
  .plan-vision--sapporo-v40 .plan-vision__upgrade-grid {
    grid-template-columns: repeat(3, minmax(0,1fr));
  }
  .plan-vision--sapporo-v40 .plan-vision__flow-grid {
    grid-template-columns: repeat(3, minmax(0,1fr));
  }

}
@media (max-width: 767px) {
  .plan-vision-page--sapporo-v40 {
    padding: 0 16px 120px;
  }
  .plan-vision--sapporo-v40 .plan-vision__hero {
    margin-top: 10px;
    padding: 24px 18px 20px;
    border-radius: 22px;
  }
  .plan-vision--sapporo-v40 .plan-vision__hero-label {
    padding-left: 14px;
    font-size: 2.8rem;
  }
  .plan-vision--sapporo-v40 .plan-vision__hero-label::before {
    top: 4px;
    width: 4px;
    height: 36px;
  }
  .plan-vision--sapporo-v40 .plan-vision__hero-copy h1 {
    font-size: 1.45rem;
  }
  .plan-vision--sapporo-v40 .plan-vision__store-buttons {
    gap: 8px;
  }
  .plan-vision--sapporo-v40 .plan-vision__store-buttons button {
    flex: 1;
    min-width: 0;
    height: 46px;
    padding: 0 10px;
    font-size: 1.25rem;
  }
  .plan-vision--sapporo-v40 .plan-vision__tabs {
    gap: 8px;
    overflow-x: auto;
    margin: 20px 0;
  }
  .plan-vision--sapporo-v40 .plan-vision__tab {
    flex-direction: column;
    gap: 6px;
    min-width: 88px;
    min-height: 88px;
    padding: 12px 8px;
    font-size: 1.08rem;
  }
  .plan-vision--sapporo-v40 .plan-vision__jump {
    flex-wrap: nowrap;
    overflow-x: auto;
  }
  .plan-vision--sapporo-v40 .plan-vision__jump a {
    flex: 0 0 auto;
    min-height: 36px;
    padding: 0 14px;
    font-size: 1.16rem;
  }
  .plan-vision--sapporo-v40 .plan-vision__cards-wrap, .plan-vision--sapporo-v40 .plan-vision__option-block {
    padding: 20px 16px;
  }
  .plan-vision--sapporo-v40 .plan-vision__intro {
    padding: 22px 18px;
  }
  .plan-vision--sapporo-v40 .plan-vision__intro h3 {
    font-size: 2.35rem;
  }
  .plan-vision--sapporo-v40 .vplan-card__main {
    grid-template-columns: 1fr;
    gap: 14px;
    min-height: auto;
    padding: 20px;
  }
  .plan-vision--sapporo-v40 .vplan-card__name h3 {
    font-size: 1.9rem;
  }
  .plan-vision--sapporo-v40 .vplan-card__action a {
    min-height: 48px;
  }
  .plan-vision--sapporo-v40 .plan-compare-details__body {
    padding: 0 14px 18px;
  }
  .plan-vision--sapporo-v40 .plan-compare-table {
    min-width: 760px;
  }
  .plan-vision--sapporo-v40 .plan-compare-table th, .plan-vision--sapporo-v40 .plan-compare-table td {
    padding: 12px 10px;
    font-size: 1.2rem;
  }
  .plan-vision--sapporo-v40 .plan-compare-cta__buttons {
    display: grid;
    grid-template-columns: 1fr;
  }
  .plan-vision--sapporo-v40 .plan-compare-cta__buttons a {
    width: 100%;
    min-width: 0;
  }
  .plan-vision--sapporo-v40 .plan-vision__upgrade-grid, .plan-vision--sapporo-v40 .plan-vision__album-cards, .plan-vision--sapporo-v40 .plan-vision__flow-grid, .plan-vision--sapporo-v40 .plan-vision__cta {
    grid-template-columns: 1fr;
  }
  .plan-vision--sapporo-v40 .plan-vision__album h2 {
    font-size: 2rem;
  }
  .plan-vision--sapporo-v40 .plan-vision__flow, .plan-vision--sapporo-v40 .plan-vision__cta a {
    padding: 18px 16px;
  }
  .plan-vision--sapporo-v40 .plan-vision__notice {
    padding-bottom: 40px;
    text-align: center;
  }
  body {
    padding-bottom: 96px;
  }

}


/* =========================================================
   v24: 若年層向けに文章量を削減。カードはビジュアル＋価格中心。
   ========================================================= */
.plan-vision--sapporo-v40 .plan-vision__intro p:last-child {
  font-size: 1.22rem;
  line-height: 1.7;
}
@media (min-width: 768px) {
  .plan-vision--sapporo-v40 .plan-vision__cards {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
    align-items: stretch;
  }
  .plan-vision--sapporo-v40 .vplan-card {
    display: grid;
    grid-template-rows: 112px 1fr 50px;
    min-height: 318px;
    overflow: hidden;
    border-radius: 24px;
  }
  .plan-vision--sapporo-v40 .vplan-card__visual {
    display: flex;
    align-items: center;
    justify-content: center;
    background: radial-gradient(circle at 78% 18%, rgba(255,255,255,.75), transparent 30%), linear-gradient(135deg, #fff0f5 0%, #f8d6e1 100%);
  }
  .plan-vision--sapporo-v40 .vplan-card.is-highlight .vplan-card__visual {
    background: radial-gradient(circle at 78% 18%, rgba(255,255,255,.75), transparent 30%), linear-gradient(135deg, #ee7898 0%, #f4b3c4 100%);
  }
  .plan-vision--sapporo-v40 .vplan-card__visual span {
    font-size: 4.6rem;
    filter: drop-shadow(0 8px 12px rgba(90,67,77,.12));
  }
  .plan-vision--sapporo-v40 .vplan-card__body {
    padding: 16px 17px 12px;
  }
  .plan-vision--sapporo-v40 .vplan-card__tag {
    display: inline-block;
    max-width: 100%;
    margin: 0 0 9px;
    padding: 3px 9px;
    border-radius: 999px;
    background: #fff3f6;
    color: #e87898;
    font-size: .96rem;
    font-weight: 900;
    line-height: 1.45;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .plan-vision--sapporo-v40 .vplan-card__body h3 {
    display: -webkit-box;
    min-height: 48px;
    margin: 0;
    overflow: hidden;
    color: #3f373a;
    font-size: 1.66rem;
    line-height: 1.42;
    font-weight: 900;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
  }
  .plan-vision--sapporo-v40 .vplan-card__price {
    display: flex;
    align-items: baseline;
    gap: 5px;
    margin: 10px 0 7px;
    white-space: nowrap;
  }
  .plan-vision--sapporo-v40 .vplan-card__price strong {
    font-size: 3.05rem;
    line-height: 1;
    font-weight: 900;
    letter-spacing: -.04em;
  }
  .plan-vision--sapporo-v40 .vplan-card__price span {
    color: #6f666c;
    font-size: 1rem;
    font-weight: 900;
  }
  .plan-vision--sapporo-v40 .vplan-card__meta {
    display: flex;
    gap: 10px;
    margin: 0;
    padding: 0;
    list-style: none;
    color: #7b7278;
    font-size: .98rem;
    font-weight: 800;
    white-space: nowrap;
  }
  .plan-vision--sapporo-v40 .vplan-card__button {
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 17px 17px;
    border: 1px solid #ea7898;
    border-radius: 999px;
    background: #fff;
    color: #ea7898;
    font-size: 1.14rem;
    font-weight: 900;
  }
  .plan-vision--sapporo-v40 .vplan-card.is-highlight .vplan-card__button {
    border-color: transparent;
    background: linear-gradient(90deg, #ee879f 0%, #f2a6b8 100%);
    color: #fff;
  }
  .plan-vision--sapporo-v40 .vplan-card__ribbon {
    top: 12px;
    left: 14px;
    transform: none;
  }

}
@media (max-width: 767px) {
  .plan-vision--sapporo-v40 .plan-vision__cards {
    grid-template-columns: 1fr;
  }
  .plan-vision--sapporo-v40 .vplan-card {
    display: grid;
    overflow: hidden;
  }
  .plan-vision--sapporo-v40 .vplan-card__visual {
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, #fff0f5 0%, #f8d6e1 100%);
  }
  .plan-vision--sapporo-v40 .vplan-card__visual span {
    font-size: 4rem;
  }
  .plan-vision--sapporo-v40 .vplan-card__tag {
    display: inline-block;
    margin: 0 0 8px;
    padding: 3px 9px;
    border-radius: 999px;
    background: #fff3f6;
    color: #e87898;
    font-size: .96rem;
    font-weight: 900;
  }
  .plan-vision--sapporo-v40 .vplan-card__body h3 {
    margin: 0;
    font-size: 1.82rem;
    line-height: 1.38;
    font-weight: 900;
  }
  .plan-vision--sapporo-v40 .vplan-card__price {
    margin: 10px 0 7px;
  }
  .plan-vision--sapporo-v40 .vplan-card__price strong {
    font-size: 3rem;
  }

}
.plan-vision--sapporo-v40 .album-card {
  position: relative;
  overflow: hidden;
  border: 1px solid #f1e2e8;
}
.plan-vision--sapporo-v40 .album-card--image div {
  left: 12px;
  right: 12px;
  bottom: 12px;
  border-radius: 14px;
}
.plan-vision--sapporo-v40 .album-card span {
  display: inline-flex;
  margin: 0 0 6px;
  padding: 3px 8px;
  border-radius: 999px;
  background: #f5d9e2;
  color: #e87898;
  font-weight: 900;
  line-height: 1.4;
}
.plan-vision--sapporo-v40 .album-card h3 {
  margin: 0;
  color: #40373b;
  line-height: 1.35;
  font-weight: 900;
}
.plan-vision--sapporo-v40 .album-card--text p {
  margin: 10px 0 0;
  color: #70666d;
  font-size: 1.15rem;
  line-height: 1.7;
}
@media (max-width: 767px) {
  .plan-vision--sapporo-v40 .album-card--image,
  .plan-vision--sapporo-v40 .album-card--text {
    min-height: auto;
  }

}


/* =========================================================
   v26 Mono icon refinement
   背景/カード/タブのアイコンを絵文字ではなく1色SVGに統一
   ========================================================= */

.plan-vision--sapporo-v40 .plan-mono-icon {
  display: inline-block;
  fill: none;
  stroke: currentColor;
  stroke-width: 2.2;
  stroke-linecap: round;
  stroke-linejoin: round;
  vertical-align: middle;
}
.plan-vision--sapporo-v40 .plan-mono-icon--tab {
  width: 20px;
  height: 20px;
  flex: 0 0 auto;
}
.plan-vision--sapporo-v40 .plan-mono-icon--intro {
  width: 28px;
  height: 28px;
  color: #e87898;
}
.plan-vision--sapporo-v40 .plan-mono-icon--large {
  width: 72px;
  height: 72px;
  color: #e87898;
  stroke-width: 1.75;
  filter: drop-shadow(0 8px 12px rgba(80,50,60,.08));
}
.plan-vision--sapporo-v40 .vplan-card.is-highlight .plan-mono-icon--large {
  color: #fff;
}
.plan-vision--sapporo-v40 .plan-mono-icon--small {
  width: 15px;
  height: 15px;
  color: #9b9097;
  stroke-width: 2.1;
  margin-right: 5px;
}


/* 絵文字想定の古い指定を上書き */
.plan-vision--sapporo-v40 .plan-vision__tab-icon,
.plan-vision--sapporo-v40 .vplan-card__visual-icon {
  display: none !important;
}
.plan-vision--sapporo-v40 .vplan-card__meta li {
  display: inline-flex;
  align-items: center;
  gap: 0;
}


/* アルバム内のレタッチカードにも1色アイコンを使える余白を確保 */
.plan-vision--sapporo-v40 .album-card--text {
  background:
    radial-gradient(circle at 84% 18%, rgba(232,120,152,.10), transparent 36%),
    #fff;
}


/* スマホ時も1色アイコンのバランスを維持 */
@media (max-width: 767px) {
  .plan-vision--sapporo-v40 .plan-mono-icon--large {
    width: 62px;
    height: 62px;
  }
  .plan-vision--sapporo-v40 .plan-mono-icon--tab {
    width: 19px;
    height: 19px;
  }

}


/* =========================================================
   v27 Plan image cards / Retouch image
   プランカードは images/ 配下の写真を使用。未設定時のみ1色アイコン表示。
   ========================================================= */

.plan-vision--sapporo-v40 .vplan-card__visual {
  overflow: hidden;
}
.plan-vision--sapporo-v40 .vplan-card__visual::after {
  content: none;
}
.plan-vision--sapporo-v40 .vplan-card__visual img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  transform: scale(1.01);
}
.plan-vision--sapporo-v40 .vplan-card.is-highlight .vplan-card__visual img {
  filter: saturate(1.04) contrast(1.02);
}
.plan-vision--sapporo-v40 .album-card--retouch img {
  object-fit: cover;
  object-position: center;
}
.plan-vision--sapporo-v40 .album-card--retouch div {
  background: rgba(255, 255, 255, .90);
}
@media (max-width: 767px) {
  .plan-vision--sapporo-v40 .vplan-card__visual img {
    object-position: center;
  }

}
.plan-vision--sapporo-v40 .plan-vision__album-cards {
  align-items: stretch;
}
.plan-vision--sapporo-v40 .album-card {
  display: flex;
  flex-direction: column;
}
.plan-vision--sapporo-v40 .album-card--image img {
  display: block;
}
.plan-vision--sapporo-v40 .album-card--image div {
  position: static;
  padding: 0;
  background: transparent;
  backdrop-filter: none;
}
.plan-vision--sapporo-v40 .album-card--text::before {
  content: "";
  display: block;
  margin-bottom: 18px;
}
@media (max-width: 767px) {
  .plan-vision--sapporo-v40 .album-card--image img {
    height: 220px;
    padding: 18px 14px 8px;
  }
  .plan-vision--sapporo-v40 .album-card--text::before {
    height: 150px;
  }

}
.plan-vision--sapporo-v40 .vplan-card__visual {
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background:
    radial-gradient(circle at 50% 50%, rgba(255,255,255,.72) 0 34%, transparent 35%),
    linear-gradient(135deg, #fff1f5 0%, #f8d8e2 100%);
}
.plan-vision--sapporo-v40 .vplan-card__visual img,
.plan-vision--sapporo-v40 .vplan-card__photo {
  display: block;
  width: 100%;
  height: 100%;
  padding: 0;
  object-fit: contain;
  object-position: center;
  background: #fff;
}


/* おすすめカードだけ画像エリアの上に余白が出て見えるのを防ぐ */
.plan-vision--sapporo-v40 .vplan-card.is-highlight {
  padding-top: 0;
}
.plan-vision--sapporo-v40 .vplan-card.is-highlight .vplan-card__visual {
  margin-top: 0;
  padding-top: 0;
  border-radius: 20px 20px 0 0;
  background:
    radial-gradient(circle at 50% 50%, rgba(255,255,255,.30) 0 34%, transparent 35%),
    linear-gradient(135deg, #ec7d9b 0%, #f4b6c7 100%);
}
.plan-vision--sapporo-v40 .vplan-card.is-highlight .vplan-card__visual img,
.plan-vision--sapporo-v40 .vplan-card.is-highlight .vplan-card__photo {
  object-fit: contain;
  object-position: center;
  background: #fff;
}


/* オプションパネル：カード型に整える */
.plan-vision--sapporo-v40 .plan-vision__option-block {
  grid-template-columns: 230px minmax(0, 1fr);
}
.plan-vision--sapporo-v40 .plan-vision__option-list,
.plan-vision--sapporo-v40 .renew-option-list,
.plan-vision--sapporo-v40 .option-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
  width: 100%;
}
.plan-vision--sapporo-v40 .renew-option-card,
.plan-vision--sapporo-v40 .option-card,
.plan-vision--sapporo-v40 .plan-option-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 14px;
  align-items: center;
  min-height: 112px;
  padding: 20px 22px;
  border: 1px solid #f0dfe6;
  border-radius: 18px;
  background: #fff;
  box-shadow: 0 6px 18px rgba(104,77,88,.045);
}
.plan-vision--sapporo-v40 .renew-option-card h3,
.plan-vision--sapporo-v40 .option-card h3,
.plan-vision--sapporo-v40 .plan-option-card h3 {
  margin: 0;
  color: #40373b;
  font-size: 1.75rem;
  line-height: 1.55;
  font-weight: 900;
  letter-spacing: .03em;
}
.plan-vision--sapporo-v40 .renew-option-card p,
.plan-vision--sapporo-v40 .option-card p,
.plan-vision--sapporo-v40 .plan-option-card p {
  margin: 0;
  color: #40373b;
  font-size: 2.2rem;
  line-height: 1.25;
  font-weight: 900;
  white-space: nowrap;
}
.plan-vision--sapporo-v40 .renew-option-card small,
.plan-vision--sapporo-v40 .option-card small,
.plan-vision--sapporo-v40 .plan-option-card small {
  display: inline-block;
  margin-left: 4px;
  color: #756c72;
  font-size: 1.25rem;
  font-weight: 800;
}
.plan-vision--sapporo-v40 .plan-vision__option-block > div:last-child {
  min-width: 0;
}
.plan-vision--sapporo-v40 .plan-vision__option-block > div:last-child > * {
  max-width: 100%;
}
@media (max-width: 1100px) {
  .plan-vision--sapporo-v40 .plan-vision__option-block {
    grid-template-columns: 1fr;
  }
  .plan-vision--sapporo-v40 .plan-vision__option-list,
  .plan-vision--sapporo-v40 .renew-option-list,
  .plan-vision--sapporo-v40 .option-list {
    grid-template-columns: 1fr;
  }

}
@media (max-width: 767px) {
  .plan-vision--sapporo-v40 .vplan-card {
    grid-template-rows: 190px 1fr 50px;
  }
  .plan-vision--sapporo-v40 .renew-option-card,
  .plan-vision--sapporo-v40 .option-card,
  .plan-vision--sapporo-v40 .plan-option-card {
    grid-template-columns: 1fr;
    gap: 10px;
    min-height: auto;
    padding: 18px 16px;
  }
  .plan-vision--sapporo-v40 .renew-option-card h3,
  .plan-vision--sapporo-v40 .option-card h3,
  .plan-vision--sapporo-v40 .plan-option-card h3 {
    font-size: 1.55rem;
  }
  .plan-vision--sapporo-v40 .renew-option-card p,
  .plan-vision--sapporo-v40 .option-card p,
  .plan-option-card p {
    font-size: 2rem;
  }

}


/* =========================================================
   v30 Requested fixes
   - クラスアップ表記を改行表示に対応
   - おすすめ判定を「振袖1着 / 卒業袴1着」に変更
   - オプションパネルの実際のclassへCSSを追加
   ========================================================= */

.plan-vision--sapporo-v40 .renew-plan-card__note--upgrade p,
.plan-vision--sapporo-v40 .plan-compare-table td {
  white-space: normal;
}


/* オプション：実HTMLの .plan-vision__mini-grid / .plan-vision__mini-card に適用 */
.plan-vision--sapporo-v40 .plan-vision__option-groups {
  display: grid;
  gap: 18px;
  min-width: 0;
}
.plan-vision--sapporo-v40 .plan-vision__mini-grid {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
  align-items: stretch;
  width: 100%;
}
.plan-vision--sapporo-v40 .plan-vision__mini-card {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-areas:
    "title price"
    "note note";
  gap: 10px 18px;
  align-items: center;
  min-height: 118px;
  padding: 20px 22px !important;
  border: 1px solid #f0dfe6 !important;
  border-radius: 18px !important;
  background: #fff !important;
  box-shadow: 0 6px 18px rgba(104,77,88,.045);
}
.plan-vision--sapporo-v40 .plan-vision__mini-card h3 {
  grid-area: title;
  margin: 0 !important;
  color: #40373b;
  font-size: 1.62rem !important;
  line-height: 1.55 !important;
  font-weight: 900 !important;
  letter-spacing: .03em;
}
.plan-vision--sapporo-v40 .plan-vision__mini-card .price {
  grid-area: price;
  margin: 0 !important;
  color: #40373b;
  font-size: 2.15rem !important;
  line-height: 1.25 !important;
  font-weight: 900 !important;
  white-space: nowrap;
  text-align: right;
}
.plan-vision--sapporo-v40 .plan-vision__mini-card .price span {
  display: inline-block;
  margin-left: 5px;
  color: #756c72;
  font-size: 1.1rem !important;
  font-weight: 800;
}
.plan-vision--sapporo-v40 .plan-vision__mini-card > p:not(.price) {
  grid-area: note;
  margin: 0 !important;
  color: #756c72;
  font-size: 1.16rem !important;
  line-height: 1.65 !important;
  font-weight: 700;
}
.plan-vision--sapporo-v40 .plan-vision__product-list {
  padding: 20px 22px;
  border: 1px solid #f0dfe6;
  border-radius: 18px;
  background: #fff7fa;
}
.plan-vision--sapporo-v40 .plan-vision__product-list h3 {
  margin: 0 0 14px;
  color: #40373b;
  font-size: 1.7rem;
  line-height: 1.4;
  font-weight: 900;
}
.plan-vision--sapporo-v40 .plan-vision__product-row {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  padding: 12px 0;
  border-top: 1px solid #f0dfe6;
  color: #40373b;
  font-size: 1.25rem;
  line-height: 1.5;
  font-weight: 800;
}
.plan-vision--sapporo-v40 .plan-vision__product-row:first-of-type {
  border-top: 0;
  padding-top: 0;
}
.plan-vision--sapporo-v40 .plan-vision__product-row span {
  white-space: nowrap;
  color: #e87898;
  font-weight: 900;
}
@media (max-width: 767px) {
  .plan-vision--sapporo-v40 .plan-vision__mini-grid {
    grid-template-columns: 1fr;
  }
  .plan-vision--sapporo-v40 .plan-vision__mini-card {
    grid-template-columns: 1fr;
    grid-template-areas:
      "title"
      "price"
      "note";
  }
  .plan-vision--sapporo-v40 .plan-vision__mini-card .price {
    text-align: left;
  }
  .plan-vision--sapporo-v40 .plan-vision__product-row {
    flex-direction: column;
    gap: 4px;
  }

}


/* =========================================================
   v33 Store selector + CTA emphasis
   - 店舗選択を「現在表示中 / 他店舗を見る」に変更
   - 予約ボタンを目立たせる
   ========================================================= */

.plan-vision--sapporo-v40 .plan-vision__hero-store {
  text-align: left;
}
.plan-vision--sapporo-v40 .plan-vision__store-current {
  margin: 0 0 10px;
  color: #746b71;
  font-size: 1.18rem;
  line-height: 1.55;
  font-weight: 800;
  text-align: center;
}
.plan-vision--sapporo-v40 .plan-vision__store-current strong {
  display: inline;
  color: #40373b;
  font-size: 1.32rem;
  font-weight: 900;
}
.plan-vision--sapporo-v40 .plan-vision__store-other {
  margin: 0 0 12px;
  color: #e87898;
  font-size: 1.12rem;
  line-height: 1.45;
  font-weight: 900;
  text-align: center;
  letter-spacing: .04em;
}
.plan-vision--sapporo-v40 .plan-vision__store-buttons button.is-current {
  pointer-events: none;
}
.plan-vision--sapporo-v40 .plan-vision__store-buttons button:not(.is-current) {
  background: #fff;
  color: #746b71;
}


/* 予約ボタン：輪郭ボタンから、目に入りやすい面ボタンへ */
.plan-vision--sapporo-v40 .vplan-card__button {
  border: none;
  background: linear-gradient(90deg, #e76d90 0%, #f3a7b9 100%);
  color: #fff;
  font-size: 1.24rem;
  line-height: 1.35;
  font-weight: 900;
  letter-spacing: .05em;
  box-shadow: 0 10px 18px rgba(231, 109, 144, .22);
  transition: transform .18s ease, box-shadow .18s ease, opacity .18s ease;
}
.plan-vision--sapporo-v40 .vplan-card.is-highlight .vplan-card__button {
  background: linear-gradient(90deg, #df5e84 0%, #ee91a8 100%);
  box-shadow: 0 12px 22px rgba(223, 94, 132, .28);
}
@media (hover: hover) and (pointer: fine) {
  .plan-vision--sapporo-v40 .vplan-card__button:hover {
    transform: translateY(-2px);
    box-shadow: 0 14px 24px rgba(231, 109, 144, .28);
    opacity: .96;
  }

}
.plan-vision--sapporo-v40 .compare-reserve {
  border-color: transparent;
}
.plan-vision--sapporo-v40 .plan-compare-cta__buttons a:first-child,
.plan-vision--sapporo-v40 .plan-vision__cta .cta-reserve {
  border-color: transparent;
  background: linear-gradient(90deg, #e76d90 0%, #f3a7b9 100%);
  color: #fff;
  box-shadow: 0 10px 18px rgba(231, 109, 144, .20);
}
.plan-vision--sapporo-v40 .plan-vision__cta .cta-reserve span,
.plan-vision--sapporo-v40 .plan-vision__cta .cta-reserve strong {
  color: #fff;
}
@media (max-width: 767px) {
  .plan-vision--sapporo-v40 .plan-vision__store-current {
    font-size: 1.08rem;
  }
  .plan-vision--sapporo-v40 .plan-vision__store-current strong {
    font-size: 1.2rem;
  }

}
.plan-vision--sapporo-v40 .vplan-card__button {
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
  width: auto;
  max-width: none;
  min-width: 0;
  min-height: 54px;
  margin: 0 18px 18px;
  padding: 0 18px;
  border-radius: 999px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.plan-vision--sapporo-v40 .vplan-card__button span {
  display: block;
  min-width: 0;
  max-width: 100%;
  line-height: 1.25;
  white-space: nowrap;
}


/* aタグ内にspanがない場合にも中央配置を強制 */
.plan-vision--sapporo-v40 .vplan-card__button {
  text-align: center;
}


/* アルバム：左の説明を横長にして、商品画像を大きく見せる */
.plan-vision--sapporo-v40 .plan-vision__album {
  grid-template-columns: minmax(0, 1fr) 320px;
  grid-template-areas:
    "copy cta"
    "cards cta";
  gap: 22px;
  align-items: stretch;
  padding: 34px;
}
.plan-vision--sapporo-v40 .plan-vision__album-copy {
  grid-area: copy;
  max-width: none;
}
.plan-vision--sapporo-v40 .plan-vision__album-copy h2 {
  max-width: 760px;
  margin-bottom: 12px;
  font-size: 3rem;
  line-height: 1.35;
}
.plan-vision--sapporo-v40 .plan-vision__album-copy p:last-child {
  max-width: 780px;
  font-size: 1.42rem;
  line-height: 1.9;
}
.plan-vision--sapporo-v40 .plan-vision__album-cards {
  grid-area: cards;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}
.plan-vision--sapporo-v40 .album-card {
  min-height: 310px;
  border-radius: 22px;
  background: #fff;
  box-shadow: 0 10px 24px rgba(74, 56, 63, .055);
}
.plan-vision--sapporo-v40 .album-card--image {
  min-height: 310px;
}
.plan-vision--sapporo-v40 .album-card--image img {
  width: 100%;
  height: 220px;
  padding: 16px 14px 6px;
  object-fit: contain;
  object-position: center;
  background: linear-gradient(180deg, #fff 0%, #fff8fb 100%);
}
.plan-vision--sapporo-v40 .album-card--image div {
  margin: 0 18px 20px;
}
.plan-vision--sapporo-v40 .album-card--text {
  min-height: 310px;
  padding: 0;
  overflow: hidden;
}
.plan-vision--sapporo-v40 .album-card--text::before {
  width: 100%;
  height: 220px;
  margin: 0 0 16px;
  border-radius: 0;
  background:
    url("images/retouch_03.webp") center / contain no-repeat,
    linear-gradient(180deg, #fff 0%, #fff8fb 100%);
}
.plan-vision--sapporo-v40 .album-card--text span,
.plan-vision--sapporo-v40 .album-card--text h3,
.plan-vision--sapporo-v40 .album-card--text p {
  margin-left: 18px;
  margin-right: 18px;
}
.plan-vision--sapporo-v40 .album-card--text p {
  display: none;
}
.plan-vision--sapporo-v40 .album-card span {
  font-size: 1.06rem;
  letter-spacing: .08em;
}
.plan-vision--sapporo-v40 .album-card h3 {
  font-size: 2rem;
  letter-spacing: .08em;
}
.plan-vision--sapporo-v40 .plan-vision__album-link {
  grid-area: cta;
  min-height: 100%;
  border-radius: 30px;
  font-size: 2.35rem;
  line-height: 1.55;
}


/* アルバムCTAの矢印位置を安定させる */
.plan-vision--sapporo-v40 .plan-vision__album-link::after {
  right: 28px;
  bottom: 28px;
}


/* 下部CTAもボタン感を少し強める */
.plan-vision--sapporo-v40 .plan-vision__cta a {
  border-radius: 22px;
}
@media (max-width: 1100px) {
  .plan-vision--sapporo-v40 .plan-vision__album {
    grid-template-columns: 1fr;
    grid-template-areas:
      "copy"
      "cards"
      "cta";
  }
  .plan-vision--sapporo-v40 .plan-vision__album-link {
    min-height: 120px;
  }

}
@media (max-width: 767px) {
  .plan-vision--sapporo-v40 .vplan-card__button {
    min-height: 50px;
    margin: 0 16px 16px;
    padding: 0 14px;
    font-size: 1.08rem;
    letter-spacing: .02em;
  }
  .plan-vision--sapporo-v40 .plan-vision__album {
    padding: 22px 16px;
    gap: 16px;
  }
  .plan-vision--sapporo-v40 .plan-vision__album-copy h2 {
    font-size: 2.2rem;
  }
  .plan-vision--sapporo-v40 .plan-vision__album-copy p:last-child {
    font-size: 1.28rem;
  }
  .plan-vision--sapporo-v40 .plan-vision__album-cards {
    grid-template-columns: 1fr;
  }
  .plan-vision--sapporo-v40 .album-card,
  .plan-vision--sapporo-v40 .album-card--image,
  .plan-vision--sapporo-v40 .album-card--text {
    min-height: auto;
  }
  .plan-vision--sapporo-v40 .album-card--image img,
  .plan-vision--sapporo-v40 .album-card--text::before {
    height: 230px;
  }
  .plan-vision--sapporo-v40 .plan-vision__album-link {
    min-height: 92px;
    font-size: 1.75rem;
  }

}
.plan-vision--sapporo-v40 .vplan-card.is-highlight .vplan-card__button,
.plan-vision--sapporo-v40 .vplan-card.is-highlight a.vplan-card__button {
  color: #fff !important;
}
.plan-vision--sapporo-v40 .compare-reserve {
  box-sizing: border-box !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  max-width: 100% !important;
  min-width: 0 !important;
  min-height: 44px !important;
  padding: 0 18px !important;
  border: 0 !important;
  border-radius: 999px !important;
  background: #e97998 !important;
  color: #fff !important;
  font-size: 1.05rem !important;
  line-height: 1.25 !important;
  font-weight: 900 !important;
  white-space: nowrap !important;
  box-shadow: 0 8px 16px rgba(231, 109, 144, .16) !important;
}
@media (max-width: 767px) {
  .plan-vision--sapporo-v40 .vplan-card__button,
  .plan-vision--sapporo-v40 .vplan-card a.vplan-card__button {
    width: calc(100% - 32px) !important;
    max-width: calc(100% - 32px) !important;
  }
  .plan-vision--sapporo-v40 .compare-reserve {
    min-height: 40px !important;
    padding: 0 12px !important;
    font-size: .98rem !important;
  }

}


/* =========================================================
   sapporo-v40 CTA position final alignment
   - card grid row指定をやめ、flexでボタンを必ず最下部に固定
   - PC/SPともに全カードの予約ボタン位置を揃える
   ========================================================= */

.plan-vision--sapporo-v40 .plan-vision__cards {
  align-items: stretch !important;
}
.plan-vision--sapporo-v40 .vplan-card {
  display: flex !important;
  flex-direction: column !important;
  min-height: 430px !important;
  height: 100% !important;
  grid-template-rows: none !important;
  overflow: hidden !important;
}
.plan-vision--sapporo-v40 .vplan-card__visual {
  flex: 0 0 172px !important;
  height: 172px !important;
  min-height: 172px !important;
}
.plan-vision--sapporo-v40 .vplan-card__body {
  flex: 1 1 auto !important;
  display: flex !important;
  flex-direction: column !important;
  min-height: 0 !important;
  padding: 18px 18px 14px !important;
}
.plan-vision--sapporo-v40 .vplan-card__body h3 {
  flex: 0 0 auto !important;
  min-height: 60px !important;
  margin-bottom: 18px !important;
}
.plan-vision--sapporo-v40 .vplan-card__price {
  flex: 0 0 auto !important;
  margin-top: auto !important;
  margin-bottom: 8px !important;
}
.plan-vision--sapporo-v40 .vplan-card__meta {
  flex: 0 0 auto !important;
  min-height: 22px !important;
  margin-bottom: 0 !important;
}
.plan-vision--sapporo-v40 .vplan-card__button,
.plan-vision--sapporo-v40 .vplan-card a.vplan-card__button {
  flex: 0 0 54px !important;
  position: static !important;
  left: auto !important;
  right: auto !important;
  bottom: auto !important;
  top: auto !important;
  transform: none !important;
  box-sizing: border-box !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: auto !important;
  max-width: none !important;
  min-width: 0 !important;
  height: 54px !important;
  min-height: 54px !important;
  margin: 0 18px 18px !important;
  padding: 0 16px !important;
  border: 0 !important;
  border-radius: 999px !important;
  background: linear-gradient(90deg, #e76d90 0%, #f3a7b9 100%) !important;
  color: #fff !important;
  text-align: center !important;
  font-size: 1.12rem !important;
  line-height: 1.2 !important;
  font-weight: 900 !important;
  letter-spacing: .03em !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  box-shadow: 0 10px 18px rgba(231, 109, 144, .22) !important;
}
.plan-vision--sapporo-v40 .vplan-card__button::before,
.plan-vision--sapporo-v40 .vplan-card__button::after {
  content: none !important;
  display: none !important;
}
.plan-vision--sapporo-v40 .vplan-card.is-highlight .vplan-card__button,
.plan-vision--sapporo-v40 .vplan-card.is-highlight a.vplan-card__button {
  background: linear-gradient(90deg, #df5e84 0%, #ee91a8 100%) !important;
  box-shadow: 0 12px 22px rgba(223, 94, 132, .28) !important;
}
.plan-vision--sapporo-v40 .vplan-card__ribbon {
  position: absolute !important;
  top: 12px !important;
  left: 16px !important;
  z-index: 6 !important;
}
.plan-vision--sapporo-v40 .plan-compare-table td .compare-reserve {
  margin-left: auto !important;
  margin-right: auto !important;
}
@media (max-width: 767px) {
  .plan-vision--sapporo-v40 .vplan-card {
    min-height: 400px !important;
  }
  .plan-vision--sapporo-v40 .vplan-card__visual {
    flex-basis: 190px !important;
    height: 190px !important;
    min-height: 190px !important;
  }
  .plan-vision--sapporo-v40 .vplan-card__body {
    padding: 16px 16px 12px !important;
  }
  .plan-vision--sapporo-v40 .vplan-card__body h3 {
    min-height: auto !important;
    margin-bottom: 14px !important;
  }
  .plan-vision--sapporo-v40 .vplan-card__button,
  .plan-vision--sapporo-v40 .vplan-card a.vplan-card__button {
    flex-basis: 50px !important;
    height: 50px !important;
    min-height: 50px !important;
    margin: 0 16px 16px !important;
    padding: 0 12px !important;
    font-size: 1rem !important;
    letter-spacing: .01em !important;
  }

}
.plan-vision--sapporo-v40 .renew-plan-card__title,
.plan-vision--sapporo-v40 .compare-plan-name {
  word-break: keep-all;
  overflow-wrap: anywhere;
  line-height: 1.45;
}
.plan-vision--sapporo-v40 .plan-vision__product-note {
  margin: 4px 0 10px;
  color: #70666d;
  font-size: 1.08rem;
  line-height: 1.65;
}


/* =========================================================
   sapporo v11 category label/order update
   ========================================================= */
.plan-vision--sapporo-v40 .plan-vision__tab {
  white-space: nowrap;
}
@media (max-width: 767px) {
  .plan-vision--sapporo-v40 .plan-vision__tab {
    white-space: normal;
    line-height: 1.35;
  }

}


/* =========================================================
   sapporo v12 rental category update
   ========================================================= */
.plan-vision--sapporo-v40 .plan-vision__panel {
  display: none;
}
.plan-vision--sapporo-v40 .plan-vision__panel.is-active {
  display: block;
}
.plan-vision--sapporo-v40 .vplan-card__title,
.plan-vision--sapporo-v40 .compare-plan-name {
  line-height: 1.42;
  word-break: keep-all;
  overflow-wrap: anywhere;
}
.plan-vision--sapporo-v40 .plan-vision__tabs {
  gap: 10px;
}


/* =========================================================
   sapporo_plan_implementation_v13 nested category layout
   ========================================================= */

.plan-vision-page--sapporo-v40 .plan-vision__hero {
  margin-bottom: 34px;
}
.plan-vision--sapporo-v40 .plan-vision__jump {
  justify-content: center;
  margin: 0 0 24px;
}
.plan-vision--sapporo-v40 .plan-vision__tabs {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.plan-vision--sapporo-v40 .plan-vision__tab {
  min-height: 64px;
}
.plan-vision--sapporo-v40 .plan-vision__cards-wrap {
  display: block !important;
  padding: clamp(26px, 4vw, 56px) clamp(18px, 4vw, 48px);
  border: 1px solid #f2dce4;
  border-radius: 30px;
  background:
    radial-gradient(circle at 50% 0%, rgba(255, 241, 246, .92) 0%, rgba(255, 248, 251, .78) 34%, rgba(255,255,255,.72) 72%),
    linear-gradient(180deg, #fff8fb 0%, #fff 100%);
  box-shadow: 0 12px 30px rgba(74,56,63,.045);
}
.plan-vision--sapporo-v40 .plan-vision__cards-wrap > .plan-vision__intro {
  max-width: 880px;
  margin: 0 auto 30px;
  padding: 0;
  border-radius: 0;
  background: transparent !important;
  box-shadow: none !important;
  text-align: center;
}
.plan-vision--sapporo-v40 .plan-subtabs {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px;
  margin: 26px 0 24px;
}
.plan-vision--sapporo-v40 .plan-subtab {
  appearance: none;
  border: 2px solid rgba(120, 95, 82, .22);
  background: #fff;
  border-radius: 999px;
  padding: 13px 22px;
  cursor: pointer;
  color: #403532;
  font-size: 1.45rem;
  font-weight: 900;
  letter-spacing: .06em;
  line-height: 1.35;
  transition: .2s ease;
}
.plan-vision--sapporo-v40 .plan-subtab > span {
  font-size: 1.55rem;
  font-weight: 900;
}
.plan-vision--sapporo-v40 .plan-subtab em {
  display: inline-flex;
  align-items: center;
  min-height: 22px;
  padding: 3px 7px;
  border-radius: 999px;
  background: #fff1f5;
  color: #c55375;
  font-size: 1rem;
  font-style: normal;
  font-weight: 800;
}
.plan-vision--sapporo-v40 .plan-subtab.is-active {
  background: #e87898 !important;
  border-color: #e87898 !important;
  color: #fff !important;
  box-shadow: 0 10px 24px rgba(232, 120, 152, .22);
}
.plan-vision--sapporo-v40 .plan-subtab.is-active > span,
.plan-vision--sapporo-v40 .plan-subtab.is-active em {
  color: #fff !important;
}
.plan-vision--sapporo-v40 .plan-subtab.is-active em {
  background: rgba(255,255,255,.25) !important;
}
.plan-vision--sapporo-v40 .plan-subpanel {
  display: none;
}
.plan-vision--sapporo-v40 .plan-subpanel.is-active {
  display: block;
}
.plan-vision--sapporo-v40 .plan-subpanel__lead {
  max-width: 820px;
  margin: 0 auto 24px;
  padding: 18px 20px;
  border-radius: 20px;
  background: rgba(255,255,255,.72);
  border: 1px solid rgba(255,255,255,.86);
  text-align: center;
  box-shadow: 0 10px 24px rgba(74,56,63,.035);
}
.plan-vision--sapporo-v40 .plan-subpanel__lead h4 {
  margin: 0 0 8px;
  font-size: clamp(2rem, 2.4vw, 3rem);
  letter-spacing: .08em;
}
.plan-vision--sapporo-v40 .plan-subpanel__lead p {
  margin: 0;
  color: #645955;
  line-height: 1.8;
  font-size: 1.35rem;
}
.plan-vision--sapporo-v40 .plan-subpanel__badges {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  justify-content: center;
  margin-top: 12px;
}
.plan-vision--sapporo-v40 .plan-subpanel__badges span {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 4px 10px;
  border-radius: 999px;
  background: #fff1f5;
  color: #c55375;
  font-size: 1.1rem;
  font-weight: 800;
  letter-spacing: .04em;
}
.plan-vision--sapporo-v40 .plan-featured-note {
  flex-wrap: wrap;
  gap: 8px 12px;
  margin: 0 auto 18px;
}
.plan-vision--sapporo-v40 .plan-featured-note span {
  padding: 8px 16px;
  border-radius: 999px;
  background: #e87898;
  color: #fff;
  font-weight: 900;
  letter-spacing: .06em;
  box-shadow: 0 10px 22px rgba(232,120,152,.18);
}
.plan-vision--sapporo-v40 .plan-featured-note small {
  color: #7b7075;
  font-size: 1.22rem;
  font-weight: 800;
  line-height: 1.55;
}
.plan-vision--sapporo-v40 .plan-subpanel .plan-vision__cards {
  display: flex !important;
  flex-wrap: wrap;
  justify-content: center;
  gap: 18px;
}
.plan-vision--sapporo-v40 .plan-subpanel .vplan-card {
  flex: 1 1 280px;
  max-width: 360px;
}
.plan-vision--sapporo-v40 .plan-compare-area {
  margin-top: 24px;
}
.plan-vision--sapporo-v40 .plan-vision__upgrade {
  margin-top: 22px;
}
@media (max-width: 767px) {
  .plan-vision--sapporo-v40 .plan-vision__tabs {
    grid-template-columns: 1fr;
  }
  .plan-vision--sapporo-v40 .plan-subtabs {
    display: grid;
    grid-template-columns: 1fr;
  }
  .plan-vision--sapporo-v40 .plan-subtab {
    justify-content: center;
    border-radius: 16px;
  }
  .plan-vision--sapporo-v40 .plan-subpanel .vplan-card {
    flex-basis: 100%;
  }
  .plan-vision--sapporo-v40 .plan-featured-note {
    display: grid;
    gap: 7px;
  }

}


/* ページ内リンクはoharikoなしの既存順で安全運用 */
.plan-vision--sapporo-v40 .plan-vision__jump {
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  padding: 0 !important;
  gap: 10px !important;
  overflow-x: auto !important;
  -webkit-overflow-scrolling: touch;
}
.plan-vision--sapporo-v40 .plan-vision__jump a {
  flex: 0 0 auto !important;
  white-space: nowrap !important;
}


/* パーフェクトボタン補足 */
.plan-vision--sapporo-v40 .plan-subtab small em {
  background: #fff1f5 !important;
  color: #c55375 !important;
  font-size: 1.08rem !important;
  font-weight: 900 !important;
}
.plan-vision--sapporo-v40 .plan-subtab.is-active small em {
  background: rgba(255,255,255,.25) !important;
  color: #fff !important;
}


/* LINE CTAは緑 */
.plan-vision--sapporo-v40 a.cta-line,
.plan-vision--sapporo-v40 .plan-compare-cta__buttons a[href*="line.me"] {
  background: #06c755 !important;
  border-color: #06c755 !important;
  color: #fff !important;
  box-shadow: 0 10px 22px rgba(6,199,85,.22) !important;
}
.plan-vision--sapporo-v40 a.cta-line strong,
.plan-vision--sapporo-v40 a.cta-line span {
  color: #fff !important;
}


/* フロー内リンク */
.plan-vision--sapporo-v40 .plan-vision__flow-item a {
  color: #e87898 !important;
  font-weight: 900 !important;
  text-decoration: underline !important;
  text-underline-offset: 3px;
}
@media (max-width: 767px) {
  .plan-vision--sapporo-v40 .plan-vision__jump {
    justify-content: flex-start !important;
    margin-inline: -6px !important;
    padding: 2px 6px 6px !important;
  }
  .plan-vision--sapporo-v40 .plan-subtab small {
    display: flex !important;
    flex-wrap: wrap !important;
    justify-content: center !important;
    gap: 5px !important;
  }

}
.plan-vision--sapporo-v40 .plan-compare-details summary,
.plan-vision--sapporo-v40 .compare-reserve,
.plan-vision--sapporo-v40 .plan-compare-table a {
  pointer-events: auto !important;
}
@media (max-width: 767px) {
  .plan-vision--sapporo-v40 .plan-compare-table th:first-child,
  .plan-vision--sapporo-v40 .plan-compare-table td:first-child {
    width: 96px !important;
    min-width: 96px !important;
    max-width: 96px !important;
  }

}


/* =========================================================
   sapporo step1 fix: perfect tab balance / featured note center
   ========================================================= */

/* パーフェクトボタン：タイトルとバッジを中央にまとめる */
.plan-vision--sapporo-v40 .plan-subtab {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  text-align: center !important;
  gap: 10px 12px !important;
  min-height: 86px !important;
}
.plan-vision--sapporo-v40 .plan-subtab > span {
  display: block !important;
  flex: 0 0 auto !important;
  min-width: 0 !important;
  max-width: 100% !important;
  text-align: center !important;
  white-space: normal !important;
  line-height: 1.35 !important;
}
.plan-vision--sapporo-v40 .plan-subtab small {
  display: inline-flex !important;
  flex: 0 1 auto !important;
  flex-wrap: wrap !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 6px !important;
  min-width: 0 !important;
  max-width: 100% !important;
}
.plan-vision--sapporo-v40 .plan-subtab small em {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  min-height: 28px !important;
  padding: 5px 12px !important;
  border-radius: 999px !important;
  line-height: 1.25 !important;
  white-space: nowrap !important;
  text-align: center !important;
}


/* おすすめプランを表示中：ピル内の文字を完全中央へ */
.plan-vision--sapporo-v40 .plan-featured-note {
  display: flex !important;
  justify-content: center !important;
  align-items: center !important;
  text-align: center !important;
  width: 100% !important;
}
.plan-vision--sapporo-v40 .plan-featured-note span {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  text-align: center !important;
  min-height: 46px !important;
  line-height: 1.25 !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  margin-left: auto !important;
  margin-right: auto !important;
}
@media (max-width: 767px) {
  .plan-vision--sapporo-v40 .plan-subtab {
    flex-direction: column !important;
    gap: 10px !important;
    min-height: auto !important;
    padding: 18px 16px !important;
  }
  .plan-vision--sapporo-v40 .plan-subtab > span {
    width: 100% !important;
    font-size: 1.9rem !important;
    line-height: 1.28 !important;
    letter-spacing: .05em !important;
  }
  .plan-vision--sapporo-v40 .plan-subtab small {
    width: 100% !important;
  }
  .plan-vision--sapporo-v40 .plan-subtab small em {
    font-size: 1.12rem !important;
    padding: 5px 10px !important;
  }
  .plan-vision--sapporo-v40 .plan-featured-note span {
    width: min(100%, 390px) !important;
    min-height: 48px !important;
    font-size: 1.45rem !important;
  }

}


/* =========================================================
   sapporo v37 restore: no ohariko / stable master reflect
   ========================================================= */

.plan-vision--sapporo-v40 #ohariko-area,
.plan-vision--sapporo-v40 .plan-ohariko-card,
.plan-vision--sapporo-v40 .plan-ohariko-banner,
.plan-vision--sapporo-v40 .plan-vision__ohariko,
.plan-vision--sapporo-v40 .plan-vision__store-banner {
  display: none !important;
}
.plan-vision--sapporo-v40 .plan-vision__jump a[href="#ohariko-area"] {
  display: none !important;
}
.plan-vision--sapporo-v40 .plan-vision__tab,
.plan-vision--sapporo-v40 .plan-subtab,
.plan-vision--sapporo-v40 .plan-compare-details summary,
.plan-vision--sapporo-v40 a,
.plan-vision--sapporo-v40 button {
  pointer-events: auto !important;
}
.plan-vision--sapporo-v40 .plan-vision__panel,
.plan-vision--sapporo-v40 .plan-subpanel,
.plan-vision--sapporo-v40 .plan-vision__upgrade,
.plan-vision--sapporo-v40 .plan-compare-area,
.plan-vision--sapporo-v40 .plan-compare-details,
.plan-vision--sapporo-v40 .plan-vision__album,
.plan-vision--sapporo-v40 .plan-vision__flow,
.plan-vision--sapporo-v40 .plan-vision__cta {
  position: relative !important;
  z-index: auto !important;
  clear: both !important;
}
.plan-vision--sapporo-v40 .plan-costume-banner {
  position: relative !important;
  overflow: hidden !important;
  border-radius: 28px !important;
  padding: 34px !important;
  background:
    radial-gradient(circle at 16% 20%, rgba(255,255,255,.78) 0 0, rgba(255,255,255,.78) 80px, transparent 81px),
    linear-gradient(135deg, #fff7fb 0%, #f4e4eb 46%, #efe2da 100%) !important;
  border: 1px solid rgba(205, 173, 185, .42) !important;
  box-shadow: 0 18px 42px rgba(79, 54, 67, .10) !important;
}
.plan-vision--sapporo-v40 .plan-costume-banner::after {
  content: "COSTUME" !important;
  position: absolute !important;
  right: 26px !important;
  bottom: -6px !important;
  font-family: Futura, "Futura PT", Arial, sans-serif !important;
  font-size: clamp(42px, 8vw, 96px) !important;
  line-height: 1 !important;
  letter-spacing: .08em !important;
  color: rgba(255, 255, 255, .58) !important;
  pointer-events: none !important;
}
.plan-vision--sapporo-v40 .plan-costume-banner__body {
  max-width: 720px !important;
}
@media screen and (max-width: 767px) {
  .plan-vision--sapporo-v40 .plan-costume-banner {
    border-radius: 22px !important;
    padding: 26px 20px 28px !important;
  }
  .plan-vision--sapporo-v40 .plan-costume-banner::after {
    right: 12px !important;
    bottom: 2px !important;
    font-size: 44px !important;
    opacity: .72 !important;
  }

}


/* =========================================================
   costume / gallery banner with image
   ========================================================= */

.plan-vision--sapporo-v40 .plan-vision__costume-choice {
  margin: 46px 0 42px !important;
  clear: both !important;
}
.plan-vision--sapporo-v40 .plan-costume-banner--with-image {
  display: grid !important;
  grid-template-columns: minmax(0, 1.04fr) minmax(260px, .86fr) !important;
  align-items: stretch !important;
  gap: 26px !important;
  position: relative !important;
  overflow: hidden !important;
  border-radius: 30px !important;
  padding: 28px !important;
  background: linear-gradient(135deg, #fff7fb 0%, #f4e4eb 52%, #efe2da 100%) !important;
  border: 1px solid rgba(205, 173, 185, .42) !important;
  box-shadow: 0 18px 42px rgba(79, 54, 67, .10) !important;
}
.plan-vision--sapporo-v40 .plan-costume-banner--with-image::after {
  content: "COSTUME / GALLERY" !important;
  position: absolute !important;
  left: 28px !important;
  bottom: -4px !important;
  font-family: Futura, "Futura PT", Arial, sans-serif !important;
  font-size: clamp(34px, 5.4vw, 70px) !important;
  line-height: 1 !important;
  letter-spacing: .06em !important;
  color: rgba(255, 255, 255, .56) !important;
  pointer-events: none !important;
}
.plan-vision--sapporo-v40 .plan-costume-banner__body {
  position: relative !important;
  z-index: 2 !important;
  align-self: center !important;
  padding: 8px 0 8px 8px !important;
}
.plan-vision--sapporo-v40 .plan-costume-banner__eyebrow {
  margin: 0 0 8px !important;
  font-family: Futura, "Futura PT", Arial, sans-serif !important;
  font-size: 12px !important;
  letter-spacing: .18em !important;
  color: #9b6d7f !important;
}
.plan-vision--sapporo-v40 .plan-costume-banner__title {
  margin: 0 0 12px !important;
  font-size: clamp(24px, 3vw, 34px) !important;
  line-height: 1.35 !important;
  letter-spacing: .08em !important;
  color: #4a353b !important;
}
.plan-vision--sapporo-v40 .plan-costume-banner__lead {
  margin: 0 !important;
  font-size: 14px !important;
  line-height: 1.9 !important;
  color: #5f5053 !important;
}
.plan-vision--sapporo-v40 .plan-costume-banner__buttons {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 10px !important;
  margin-top: 22px !important;
}
.plan-vision--sapporo-v40 .plan-costume-banner__button {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  min-height: 44px !important;
  padding: 0 18px !important;
  border-radius: 999px !important;
  background: #4f3e42 !important;
  color: #fff !important;
  text-decoration: none !important;
  font-size: 13px !important;
  letter-spacing: .04em !important;
  border: 1px solid #4f3e42 !important;
}
.plan-vision--sapporo-v40 .plan-costume-banner__button:nth-child(n+2) {
  background: rgba(255,255,255,.78) !important;
  color: #4f3e42 !important;
}
.plan-vision--sapporo-v40 .plan-costume-banner__image {
  position: relative !important;
  z-index: 2 !important;
  margin: 0 !important;
  min-height: 250px !important;
  border-radius: 24px !important;
  overflow: hidden !important;
  background: rgba(255,255,255,.42) !important;
}
.plan-vision--sapporo-v40 .plan-costume-banner__image img {
  width: 100% !important;
  height: 100% !important;
  min-height: 250px !important;
  object-fit: cover !important;
  display: block !important;
}
.plan-vision--sapporo-v40 .plan-costume-banner.is-no-image {
  grid-template-columns: 1fr !important;
}
.plan-vision--sapporo-v40 .plan-costume-banner.is-no-image .plan-costume-banner__image {
  display: none !important;
}
@media screen and (max-width: 767px) {
  .plan-vision--sapporo-v40 .plan-vision__costume-choice {
    margin: 34px 0 32px !important;
  }
  .plan-vision--sapporo-v40 .plan-costume-banner--with-image {
    grid-template-columns: 1fr !important;
    gap: 18px !important;
    border-radius: 22px !important;
    padding: 22px !important;
  }
  .plan-vision--sapporo-v40 .plan-costume-banner--with-image::after {
    left: 18px !important;
    bottom: 6px !important;
    font-size: 32px !important;
  }
  .plan-vision--sapporo-v40 .plan-costume-banner__body {
    padding: 0 !important;
  }
  .plan-vision--sapporo-v40 .plan-costume-banner__image {
    order: -1 !important;
    min-height: 180px !important;
    border-radius: 18px !important;
  }
  .plan-vision--sapporo-v40 .plan-costume-banner__image img {
    min-height: 180px !important;
  }
  .plan-vision--sapporo-v40 .plan-costume-banner__buttons {
    display: grid !important;
    grid-template-columns: 1fr !important;
  }
  .plan-vision--sapporo-v40 .plan-costume-banner__button {
    width: 100% !important;
  }

}


/* パーフェクトプラン導線 */
.plan-vision--sapporo-v40 .plan-cross-recommend {
  display: grid !important;
  grid-template-columns: 220px minmax(0, 1fr) !important;
  gap: 24px !important;
  align-items: center !important;
  max-width: 920px !important;
  margin: 24px auto 10px !important;
  padding: 18px 22px !important;
  border: 1px solid rgba(232, 120, 152, .28) !important;
  border-radius: 26px !important;
  background: radial-gradient(circle at 94% 12%, rgba(232,120,152,.14), transparent 32%), linear-gradient(135deg, #fff7fa 0%, #fff 78%) !important;
  box-shadow: 0 14px 32px rgba(74, 56, 63, .06) !important;
  overflow: hidden !important;
}
.plan-vision--sapporo-v40 .plan-cross-recommend__image {
  overflow: hidden !important;
  border-radius: 20px !important;
  background: #fff !important;
  aspect-ratio: 16 / 10 !important;
}
.plan-vision--sapporo-v40 .plan-cross-recommend__image img {
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  object-position: center !important;
}
.plan-vision--sapporo-v40 .plan-cross-recommend__label {
  display: inline-flex !important;
  align-items: center !important;
  min-height: 28px !important;
  margin: 0 0 10px !important;
  padding: 5px 12px !important;
  border-radius: 999px !important;
  background: #fff1f5 !important;
  color: #cf5f88 !important;
  font-size: 1.08rem !important;
  font-weight: 900 !important;
  line-height: 1.35 !important;
  letter-spacing: .06em !important;
}
.plan-vision--sapporo-v40 .plan-cross-recommend h4 {
  margin: 0 0 8px !important;
  color: #3f373a !important;
  font-size: 2rem !important;
  line-height: 1.45 !important;
  font-weight: 900 !important;
  letter-spacing: .04em !important;
}
.plan-vision--sapporo-v40 .plan-cross-recommend__body > p:not(.plan-cross-recommend__label) {
  margin: 0 0 14px !important;
  color: #665b60 !important;
  font-size: 1.28rem !important;
  line-height: 1.75 !important;
  font-weight: 800 !important;
}
.plan-vision--sapporo-v40 .plan-cross-recommend__button {
  appearance: none !important;
  border: 1px solid #e87898 !important;
  border-radius: 999px !important;
  background: #fff !important;
  color: #e76d90 !important;
  min-height: 42px !important;
  padding: 0 22px !important;
  font-size: 1.15rem !important;
  line-height: 1.35 !important;
  font-weight: 900 !important;
  letter-spacing: .05em !important;
  cursor: pointer !important;
}
@media (hover: hover) and (pointer: fine) {
  .plan-vision--sapporo-v40 .plan-cross-recommend__button:hover {
    transform: translateY(-1px) !important;
    background: #e87898 !important;
    color: #fff !important;
  }

}


/* 比較表：左側項目列固定 */
.plan-vision--sapporo-v40 .plan-compare-table-scroll {
  position: relative !important;
  overflow-x: auto !important;
  -webkit-overflow-scrolling: touch !important;
}
.plan-vision--sapporo-v40 .plan-compare-table th:first-child,
.plan-vision--sapporo-v40 .plan-compare-table td:first-child {
  position: sticky !important;
  left: 0 !important;
  z-index: 4 !important;
  background: #fff7fa !important;
  box-shadow: 8px 0 14px rgba(74, 56, 63, .06) !important;
}
.plan-vision--sapporo-v40 .plan-compare-table thead th:first-child {
  z-index: 6 !important;
}
.plan-vision--sapporo-v40 .plan-compare-table tbody th:first-child,
.plan-vision--sapporo-v40 .plan-compare-table .compare-head {
  min-width: 126px !important;
  width: 126px !important;
  white-space: normal !important;
  line-height: 1.65 !important;
}
.plan-vision--sapporo-v40 .plan-compare-table th:first-child::after,
.plan-vision--sapporo-v40 .plan-compare-table td:first-child::after {
  content: "" !important;
  position: absolute !important;
  top: 0 !important;
  right: -1px !important;
  width: 1px !important;
  height: 100% !important;
  background: #f0e5ea !important;
}


/* RELATED CONTENTS */
.plan-vision--sapporo-v40 .plan-related-contents {
  margin-top: 28px !important;
  padding: 34px 32px !important;
  border: 1px solid #f0dfe6 !important;
  border-radius: 28px !important;
  background: radial-gradient(circle at 6% 8%, rgba(232,120,152,.10), transparent 28%), linear-gradient(180deg, #fff7fa 0%, #fff 100%) !important;
  box-shadow: 0 12px 28px rgba(74, 56, 63, .05) !important;
}
.plan-vision--sapporo-v40 .plan-related-contents__head {
  margin-bottom: 22px !important;
  text-align: center !important;
}
.plan-vision--sapporo-v40 .plan-related-contents__eyebrow {
  margin: 0 0 8px !important;
  color: #e87898 !important;
  font-family: "Montserrat", "Noto Sans JP", sans-serif !important;
  font-size: 1.15rem !important;
  font-weight: 900 !important;
  letter-spacing: .16em !important;
}
.plan-vision--sapporo-v40 .plan-related-contents__head h2 {
  margin: 0 0 8px !important;
  font-weight: 900 !important;
}
.plan-vision--sapporo-v40 .plan-related-contents__head p:last-child {
  margin: 0 !important;
  color: #71676d !important;
  font-size: 1.28rem !important;
  line-height: 1.75 !important;
  font-weight: 800 !important;
}
.plan-vision--sapporo-v40 .plan-related-contents__grid {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 18px !important;
}
.plan-vision--sapporo-v40 .plan-related-card {
  overflow: hidden !important;
  border: 1px solid rgba(240, 223, 230, .96) !important;
  border-radius: 24px !important;
  background: #fff !important;
  box-shadow: 0 10px 24px rgba(74, 56, 63, .055) !important;
}
.plan-vision--sapporo-v40 .plan-related-card__link {
  display: grid !important;
  grid-template-rows: auto 1fr !important;
  height: 100% !important;
  color: inherit !important;
  text-decoration: none !important;
}
.plan-vision--sapporo-v40 .plan-related-card__image {
  margin: 0 !important;
  overflow: hidden !important;
  background: #fff !important;
  aspect-ratio: 20 / 9 !important;
}
.plan-vision--sapporo-v40 .plan-related-card__image img {
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  object-position: center !important;
  transition: transform .28s ease !important;
}
.plan-vision--sapporo-v40 .plan-related-card__body {
  display: grid !important;
  gap: 8px !important;
  padding: 18px 20px 20px !important;
}
.plan-vision--sapporo-v40 .plan-related-card__label {
  display: inline-flex !important;
  width: fit-content !important;
  min-height: 24px !important;
  margin: 0 !important;
  padding: 4px 10px !important;
  border-radius: 999px !important;
  background: #fff1f5 !important;
  color: #c55375 !important;
  font-size: 1rem !important;
  font-weight: 900 !important;
  line-height: 1.35 !important;
  letter-spacing: .08em !important;
}
.plan-vision--sapporo-v40 .plan-related-card__body h3 {
  margin: 0 !important;
  color: #3f373a !important;
  font-size: 1.82rem !important;
  line-height: 1.45 !important;
  font-weight: 900 !important;
  letter-spacing: .05em !important;
}
.plan-vision--sapporo-v40 .plan-related-card__body p:not(.plan-related-card__label) {
  margin: 0 !important;
  color: #6d6368 !important;
  font-size: 1.18rem !important;
  line-height: 1.7 !important;
  font-weight: 800 !important;
}
.plan-vision--sapporo-v40 .plan-related-card__button {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: fit-content !important;
  min-height: 38px !important;
  margin-top: 6px !important;
  padding: 0 18px !important;
  border: 1px solid #e87898 !important;
  border-radius: 999px !important;
  background: #fff !important;
  color: #e76d90 !important;
  font-size: 1.08rem !important;
  line-height: 1.35 !important;
  font-weight: 900 !important;
  letter-spacing: .04em !important;
}
@media (hover: hover) and (pointer: fine) {
  .plan-vision--sapporo-v40 .plan-related-card__link:hover .plan-related-card__image img {
    transform: scale(1.025) !important;
  }
  .plan-vision--sapporo-v40 .plan-related-card__link:hover .plan-related-card__button {
    background: #e87898 !important;
    color: #fff !important;
  }

}
@media (max-width: 767px) {
  .plan-vision--sapporo-v40 .plan-featured-note,
  .plan-vision--sapporo-v40 .plan-featured-note--clean {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    justify-content: flex-start !important;
    width: 100% !important;
    padding: 0 !important;
    text-align: left !important;
  }
  .plan-vision--sapporo-v40 .plan-featured-note::before,
  .plan-vision--sapporo-v40 .plan-featured-note--clean::before {
    flex: 0 0 auto !important;
    margin: 0 !important;
    transform: none !important;
    font-size: 1.12rem !important;
    line-height: 1 !important;
  }
  .plan-vision--sapporo-v40 .plan-featured-note span,
  .plan-vision--sapporo-v40 .plan-featured-note--clean span {
    flex: 0 0 auto !important;
    max-width: calc(100% - 28px) !important;
  }
  .plan-vision--sapporo-v40 .plan-featured-note small,
  .plan-vision--sapporo-v40 .plan-featured-note--clean small {
    display: block !important;
    padding: 0 !important;
    margin: 2px 0 0 !important;
    font-weight: 900 !important;
  }
  .plan-vision--sapporo-v40 .plan-cross-recommend {
    grid-template-columns: 1fr !important;
    gap: 14px !important;
    margin: 18px auto 6px !important;
    padding: 16px !important;
    border-radius: 22px !important;
  }
  .plan-vision--sapporo-v40 .plan-cross-recommend__image {
    aspect-ratio: auto !important;
    border-radius: 18px !important;
    background: #fff !important;
  }
  .plan-vision--sapporo-v40 .plan-cross-recommend__image img {
    width: 100% !important;
    height: auto !important;
    object-fit: contain !important;
    object-position: center !important;
  }
  .plan-vision--sapporo-v40 .plan-cross-recommend h4 {
    font-size: 1.55rem !important;
  }
  .plan-vision--sapporo-v40 .plan-cross-recommend__body > p:not(.plan-cross-recommend__label) {
    font-size: 1.08rem !important;
    line-height: 1.7 !important;
  }
  .plan-vision--sapporo-v40 .plan-cross-recommend__button {
    width: 100% !important;
    min-height: 44px !important;
  }
  .plan-vision--sapporo-v40 .plan-compare-table tbody th:first-child,
  .plan-vision--sapporo-v40 .plan-compare-table .compare-head {
    min-width: 104px !important;
    width: 104px !important;
  }
  .plan-vision--sapporo-v40 .plan-related-contents {
    margin-top: 22px !important;
    padding: 24px 14px !important;
    border-radius: 24px !important;
  }
  .plan-vision--sapporo-v40 .plan-related-contents__head {
    margin-bottom: 16px !important;
    text-align: left !important;
  }
  .plan-vision--sapporo-v40 .plan-related-contents__eyebrow {
    font-size: 1rem !important;
  }
  .plan-vision--sapporo-v40 .plan-related-contents__head p:last-child {
    font-size: 1.08rem !important;
  }
  .plan-vision--sapporo-v40 .plan-related-contents__grid {
    grid-template-columns: 1fr !important;
    gap: 14px !important;
  }
  .plan-vision--sapporo-v40 .plan-related-card {
    border-radius: 20px !important;
  }
  .plan-vision--sapporo-v40 .plan-related-card__image {
    aspect-ratio: 20 / 9 !important;
  }
  .plan-vision--sapporo-v40 .plan-related-card__body {
    padding: 15px 16px 16px !important;
  }
  .plan-vision--sapporo-v40 .plan-related-card__body h3 {
    font-size: 1.48rem !important;
  }
  .plan-vision--sapporo-v40 .plan-related-card__body p:not(.plan-related-card__label) {
    font-size: 1.02rem !important;
  }
  .plan-vision--sapporo-v40 .plan-related-card__button {
    width: 100% !important;
    min-height: 40px !important;
  }

}


/* =========================================================
   sapporo related / recommended / popular badge fix
   - oharikoリンク・見出し・説明文更新
   - おすすめ表示崩れ修正
   - おすすめカード左寄せ
   - 人気バッジを池袋基準へ調整
   ========================================================= */

/* RELATED CONTENTS heading: highlightをやや抑えて自然に */
.plan-vision--sapporo-v40 .plan-related-contents__head h2 {
  display: inline-block !important;
  padding: 3px 8px !important;
  color: #3f373a !important;
  font-size: 2.4rem !important;
  line-height: 1.35 !important;
  letter-spacing: .06em !important;
}


/* おすすめ表示：星・見出し・補足が崩れないよう再固定 */
.plan-vision--sapporo-v40 .plan-featured-note,
.plan-vision--sapporo-v40 .plan-featured-note--clean {
  display: flex !important;
  flex-wrap: wrap !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 6px 12px !important;
  width: 100% !important;
  max-width: 100% !important;
  margin: 22px 0 18px !important;
  padding: 0 !important;
  text-align: left !important;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  overflow: visible !important;
}
.plan-vision--sapporo-v40 .plan-featured-note::before,
.plan-vision--sapporo-v40 .plan-featured-note--clean::before {
  content: "✦" !important;
  flex: 0 0 auto !important;
  margin: 0 !important;
  color: #e87898 !important;
  font-size: 1.35rem !important;
  line-height: 1 !important;
  transform: none !important;
}
.plan-vision--sapporo-v40 .plan-featured-note span,
.plan-vision--sapporo-v40 .plan-featured-note--clean span {
  flex: 0 0 auto !important;
  display: inline-flex !important;
  align-items: center !important;
  width: auto !important;
  min-height: auto !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  color: #e87898 !important;
  box-shadow: none !important;
  font-family: "Poppins", "Noto Sans JP", sans-serif !important;
  font-size: 1.22rem !important;
  font-weight: 900 !important;
  letter-spacing: .12em !important;
  line-height: 1.35 !important;
  white-space: nowrap !important;
}
.plan-vision--sapporo-v40 .plan-featured-note span::after,
.plan-vision--sapporo-v40 .plan-featured-note--clean span::after {
  content: "" !important;
  display: inline-block !important;
  width: 42px !important;
  height: 1px !important;
  margin-left: 12px !important;
  background: rgba(232, 120, 152, .48) !important;
}
.plan-vision--sapporo-v40 .plan-featured-note small,
.plan-vision--sapporo-v40 .plan-featured-note--clean small {
  flex: 1 1 220px !important;
  display: block !important;
  min-width: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  color: #40373b !important;
  font-size: 1.24rem !important;
  font-weight: 900 !important;
  line-height: 1.6 !important;
  letter-spacing: .04em !important;
  text-align: left !important;
}


/* おすすめカード：中央寄せではなく左寄せ・3枚横並びに戻す */
@media (min-width: 981px) {
  .plan-vision--sapporo-v40 .plan-subpanel .plan-vision__cards {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    justify-content: stretch !important;
    justify-items: stretch !important;
    gap: 18px !important;
    align-items: stretch !important;
  }
  .plan-vision--sapporo-v40 .plan-subpanel .vplan-card {
    width: auto !important;
    max-width: none !important;
    margin: 0 !important;
    flex: initial !important;
    flex-basis: auto !important;
  }

}
@media (min-width: 768px) and (max-width: 980px) {
  .plan-vision--sapporo-v40 .plan-subpanel .plan-vision__cards {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    justify-content: stretch !important;
    justify-items: stretch !important;
    gap: 16px !important;
  }
  .plan-vision--sapporo-v40 .plan-subpanel .vplan-card {
    width: auto !important;
    max-width: none !important;
    margin: 0 !important;
  }

}
@media (max-width: 767px) {
  .plan-vision--sapporo-v40 .plan-related-contents__head h2 {
    padding: 2px 5px !important;
    font-size: 1.82rem !important;
  }
  .plan-vision--sapporo-v40 .plan-featured-note,
  .plan-vision--sapporo-v40 .plan-featured-note--clean {
    gap: 5px 9px !important;
    margin: 18px 0 14px !important;
  }
  .plan-vision--sapporo-v40 .plan-featured-note span,
  .plan-vision--sapporo-v40 .plan-featured-note--clean span {
    font-size: 1.1rem !important;
    letter-spacing: .08em !important;
  }
  .plan-vision--sapporo-v40 .plan-featured-note span::after,
  .plan-vision--sapporo-v40 .plan-featured-note--clean span::after {
    width: 26px !important;
    margin-left: 9px !important;
  }
  .plan-vision--sapporo-v40 .plan-featured-note small,
  .plan-vision--sapporo-v40 .plan-featured-note--clean small {
    flex: 0 0 100% !important;
    font-size: 1.05rem !important;
    line-height: 1.55 !important;
  }
  .plan-vision--sapporo-v40 .plan-subpanel .plan-vision__cards {
    display: grid !important;
    grid-template-columns: 1fr !important;
    justify-content: stretch !important;
    gap: 14px !important;
  }
  .plan-vision--sapporo-v40 .plan-subpanel .vplan-card {
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
  }

}

/* =========================================================
   final album / retouch typography fix
   - アルバム・レタッチカードの文字サイズ/太さ/余白を最終調整
   ========================================================= */

.plan-vision--sapporo-v40 .plan-vision__album-cards {
  align-items: stretch !important;
}

.plan-vision--sapporo-v40 .album-card {
  display: flex !important;
  flex-direction: column !important;
  min-height: auto !important;
  overflow: hidden !important;
  border-radius: 24px !important;
  background: #fff !important;
}

.plan-vision--sapporo-v40 .album-card--image {
  min-height: auto !important;
}

.plan-vision--sapporo-v40 .album-card--image img {
  display: block !important;
  width: 100% !important;
  height: 220px !important;
  padding: 18px 18px 0 !important;
  object-fit: contain !important;
  object-position: center !important;
  background: #fffafc !important;
}

.plan-vision--sapporo-v40 .album-card--retouch img {
  object-fit: contain !important;
  object-position: center !important;
  background: #fffafc !important;
}

.plan-vision--sapporo-v40 .album-card--image div {
  position: static !important;
  display: block !important;
  margin: 0 !important;
  padding: 18px 22px 24px !important;
  background: transparent !important;
  backdrop-filter: none !important;
}

.plan-vision--sapporo-v40 .album-card span {
  display: inline-flex !important;
  align-items: center !important;
  width: fit-content !important;
  margin: 0 0 12px !important;
  padding: 5px 13px !important;
  border-radius: 999px !important;
  background: #f8d7e2 !important;
  color: #e87898 !important;
  font-size: 1.12rem !important;
  line-height: 1.35 !important;
  font-weight: 900 !important;
  letter-spacing: .04em !important;
}

.plan-vision--sapporo-v40 .album-card h3 {
  margin: 0 0 10px !important;
  color: #40373b !important;
  font-size: 2.15rem !important;
  line-height: 1.35 !important;
  font-weight: 900 !important;
  letter-spacing: .04em !important;
}

.plan-vision--sapporo-v40 .album-card--retouch h3 {
  font-size: 1.9rem !important;
  line-height: 1.45 !important;
  letter-spacing: .03em !important;
}

.plan-vision--sapporo-v40 .album-card h4 {
  margin: 0 !important;
  color: #62595f !important;
  font-size: 1.22rem !important;
  line-height: 1.85 !important;
  font-weight: 700 !important;
  letter-spacing: .04em !important;
}

.plan-vision--sapporo-v40 .album-card--retouch h4 {
  font-size: 1.14rem !important;
  line-height: 1.85 !important;
  font-weight: 700 !important;
}

@media (min-width: 768px) {
  .plan-vision--sapporo-v40 .plan-vision__album-cards {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 18px !important;
  }

  .plan-vision--sapporo-v40 .album-card--image img {
    height: 220px !important;
  }
}

@media (max-width: 767px) {
  .plan-vision--sapporo-v40 .plan-vision__album-cards {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 14px !important;
  }

  .plan-vision--sapporo-v40 .album-card {
    border-radius: 20px !important;
  }

  .plan-vision--sapporo-v40 .album-card--image img {
    height: 210px !important;
    padding: 16px 14px 0 !important;
  }

  .plan-vision--sapporo-v40 .album-card--image div {
    padding: 16px 18px 20px !important;
  }

  .plan-vision--sapporo-v40 .album-card span {
    margin-bottom: 10px !important;
    font-size: 1rem !important;
  }

  .plan-vision--sapporo-v40 .album-card h3 {
    margin-bottom: 8px !important;
    font-size: 1.75rem !important;
    line-height: 1.42 !important;
  }

  .plan-vision--sapporo-v40 .album-card--retouch h3 {
    font-size: 1.65rem !important;
    line-height: 1.48 !important;
  }

  .plan-vision--sapporo-v40 .album-card h4 {
    font-size: 1.04rem !important;
    line-height: 1.75 !important;
  }

  .plan-vision--sapporo-v40 .album-card--retouch h4 {
    font-size: 1.02rem !important;
  }
}

/* =========================================================
   final album after display recovery
   - ALBUM以降が隠れないよう、後続セクション表示を明示
   ========================================================= */

.plan-vision--sapporo-v40 #album-area,
.plan-vision--sapporo-v40 #flow-area,
.plan-vision--sapporo-v40 #contact-area,
.plan-vision--sapporo-v40 .plan-vision__album,
.plan-vision--sapporo-v40 .plan-vision__flow,
.plan-vision--sapporo-v40 .plan-vision__cta,
.plan-vision--sapporo-v40 .plan-vision__notice {
  position: relative !important;
  visibility: visible !important;
  opacity: 1 !important;
  transform: none !important;
  clear: both !important;
  z-index: 1 !important;
}

.plan-vision--sapporo-v40 .plan-vision__album {
  display: grid !important;
  overflow: visible !important;
  contain: none !important;
  isolation: auto !important;
}

.plan-vision--sapporo-v40 .plan-vision__flow {
  display: block !important;
  margin-top: 26px !important;
  overflow: visible !important;
}

.plan-vision--sapporo-v40 .plan-vision__cta {
  display: grid !important;
  margin-top: 24px !important;
  overflow: visible !important;
}

.plan-vision--sapporo-v40 .plan-vision__notice {
  display: block !important;
  margin-top: 18px !important;
}

/* アルバムカード内で後続を巻き込まないように固定 */
.plan-vision--sapporo-v40 .plan-vision__album-cards {
  min-width: 0 !important;
  overflow: visible !important;
}

.plan-vision--sapporo-v40 .album-card,
.plan-vision--sapporo-v40 .album-card--image {
  position: relative !important;
  overflow: hidden !important;
}

.plan-vision--sapporo-v40 .album-card--image div {
  position: static !important;
}

/* SPでも後続が続くよう明示 */
@media (max-width: 767px) {
  .plan-vision--sapporo-v40 .plan-vision__album,
  .plan-vision--sapporo-v40 .plan-vision__flow,
  .plan-vision--sapporo-v40 .plan-vision__cta {
    width: 100% !important;
    max-width: 100% !important;
  }

  .plan-vision--sapporo-v40 .plan-vision__cta {
    grid-template-columns: 1fr !important;
  }
}

/* =========================================================
   v5 album flow fix
   - ALBUM以降が通常フローで確実に表示されるよう再整理
   - v4のgrid-template-areas強制を廃止
   ========================================================= */

.plan-vision--sapporo-v40 #album-area,
.plan-vision--sapporo-v40 #flow-area,
.plan-vision--sapporo-v40 #contact-area,
.plan-vision--sapporo-v40 .plan-vision__album,
.plan-vision--sapporo-v40 .plan-vision__flow,
.plan-vision--sapporo-v40 .plan-vision__cta,
.plan-vision--sapporo-v40 .plan-vision__notice {
  position: relative !important;
  visibility: visible !important;
  opacity: 1 !important;
  transform: none !important;
  clear: both !important;
  z-index: 1 !important;
}

.plan-vision--sapporo-v40 .plan-vision__album {
  display: block !important;
  margin-top: 30px !important;
  padding: 34px !important;
  overflow: visible !important;
  contain: none !important;
}

.plan-vision--sapporo-v40 .plan-vision__album-copy {
  display: block !important;
  max-width: none !important;
  margin: 0 0 24px !important;
}

.plan-vision--sapporo-v40 .plan-vision__album-copy h2 {
  max-width: none !important;
  margin: 0 0 12px !important;
  font-size: 2.8rem !important;
  line-height: 1.45 !important;
  font-weight: 900 !important;
  white-space: normal !important;
}

.plan-vision--sapporo-v40 .plan-vision__album-copy p:last-child {
  max-width: none !important;
  margin: 0 !important;
  font-size: 1.35rem !important;
  line-height: 1.9 !important;
  font-weight: 700 !important;
}

.plan-vision--sapporo-v40 .plan-vision__album-cards {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  gap: 18px !important;
  width: 100% !important;
  min-width: 0 !important;
  margin: 0 !important;
  overflow: visible !important;
}

.plan-vision--sapporo-v40 .album-card {
  display: flex !important;
  flex-direction: column !important;
  min-width: 0 !important;
  min-height: auto !important;
  overflow: hidden !important;
  border: 1px solid #f0dfe6 !important;
  border-radius: 24px !important;
  background: #fff !important;
  box-shadow: 0 10px 24px rgba(74, 56, 63, .055) !important;
}

.plan-vision--sapporo-v40 .album-card--image,
.plan-vision--sapporo-v40 .album-card--retouch {
  min-height: auto !important;
}

.plan-vision--sapporo-v40 .album-card--image img,
.plan-vision--sapporo-v40 .album-card--retouch img {
  display: block !important;
  width: 100% !important;
  height: 220px !important;
  padding: 18px 18px 0 !important;
  object-fit: contain !important;
  object-position: center !important;
  background: #fffafc !important;
}

.plan-vision--sapporo-v40 .album-card--image div {
  position: static !important;
  display: block !important;
  margin: 0 !important;
  padding: 18px 22px 24px !important;
  background: transparent !important;
  backdrop-filter: none !important;
}

.plan-vision--sapporo-v40 .album-card span {
  display: inline-flex !important;
  align-items: center !important;
  width: fit-content !important;
  margin: 0 0 12px !important;
  padding: 5px 13px !important;
  border-radius: 999px !important;
  background: #f8d7e2 !important;
  color: #e87898 !important;
  font-size: 1.12rem !important;
  line-height: 1.35 !important;
  font-weight: 900 !important;
  letter-spacing: .04em !important;
}

.plan-vision--sapporo-v40 .album-card h3 {
  margin: 0 0 10px !important;
  color: #40373b !important;
  font-size: 2.1rem !important;
  line-height: 1.38 !important;
  font-weight: 900 !important;
  letter-spacing: .04em !important;
}

.plan-vision--sapporo-v40 .album-card--retouch h3 {
  font-size: 1.86rem !important;
  line-height: 1.48 !important;
}

.plan-vision--sapporo-v40 .album-card h4 {
  display: block !important;
  margin: 0 !important;
  color: #62595f !important;
  font-size: 1.18rem !important;
  line-height: 1.85 !important;
  font-weight: 700 !important;
  letter-spacing: .04em !important;
}

.plan-vision--sapporo-v40 .plan-vision__album-link {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: min(520px, 100%) !important;
  min-height: 66px !important;
  margin: 24px auto 0 !important;
  padding: 16px 28px !important;
  border-radius: 999px !important;
  background: linear-gradient(90deg, #e76d90 0%, #f1a4b8 100%) !important;
  color: #fff !important;
  text-align: center !important;
  font-size: 1.55rem !important;
  line-height: 1.5 !important;
  font-weight: 900 !important;
  letter-spacing: .05em !important;
  box-shadow: 0 12px 24px rgba(231,109,144,.20) !important;
}

.plan-vision--sapporo-v40 .plan-vision__album-link::after {
  content: none !important;
}

.plan-vision--sapporo-v40 .plan-vision__flow {
  display: block !important;
  margin-top: 26px !important;
  overflow: visible !important;
}

.plan-vision--sapporo-v40 .plan-vision__cta {
  display: grid !important;
  margin-top: 24px !important;
  overflow: visible !important;
}

.plan-vision--sapporo-v40 .plan-vision__notice {
  display: block !important;
  margin-top: 18px !important;
}

@media (max-width: 1100px) {
  .plan-vision--sapporo-v40 .plan-vision__album {
    padding: 28px 22px !important;
  }

  .plan-vision--sapporo-v40 .plan-vision__album-cards {
    grid-template-columns: 1fr !important;
  }

  .plan-vision--sapporo-v40 .album-card--image img,
  .plan-vision--sapporo-v40 .album-card--retouch img {
    height: 240px !important;
  }
}

@media (max-width: 767px) {
  .plan-vision--sapporo-v40 .plan-vision__album {
    margin-top: 24px !important;
    padding: 24px 16px !important;
    border-radius: 22px !important;
  }

  .plan-vision--sapporo-v40 .plan-vision__album-copy h2 {
    font-size: 2rem !important;
    line-height: 1.55 !important;
  }

  .plan-vision--sapporo-v40 .plan-vision__album-copy p:last-child {
    font-size: 1.08rem !important;
    line-height: 1.8 !important;
  }

  .plan-vision--sapporo-v40 .plan-vision__album-cards {
    gap: 14px !important;
  }

  .plan-vision--sapporo-v40 .album-card {
    border-radius: 20px !important;
  }

  .plan-vision--sapporo-v40 .album-card--image img,
  .plan-vision--sapporo-v40 .album-card--retouch img {
    height: 210px !important;
    padding: 16px 14px 0 !important;
  }

  .plan-vision--sapporo-v40 .album-card--image div {
    padding: 16px 18px 20px !important;
  }

  .plan-vision--sapporo-v40 .album-card span {
    margin-bottom: 10px !important;
    font-size: 1rem !important;
  }

  .plan-vision--sapporo-v40 .album-card h3 {
    margin-bottom: 8px !important;
    font-size: 1.68rem !important;
    line-height: 1.45 !important;
  }

  .plan-vision--sapporo-v40 .album-card--retouch h3 {
    font-size: 1.58rem !important;
  }

  .plan-vision--sapporo-v40 .album-card h4 {
    font-size: 1.02rem !important;
    line-height: 1.75 !important;
  }

  .plan-vision--sapporo-v40 .plan-vision__album-link {
    min-height: 58px !important;
    margin-top: 18px !important;
    font-size: 1.22rem !important;
  }

  .plan-vision--sapporo-v40 .plan-vision__cta {
    grid-template-columns: 1fr !important;
  }
}

