@charset "utf-8";

.bread-h1-wrap {
  top: 40px;
}
/* ヘッダーに写真があるページは、h1が写真に重なるため白抜きにする */
.bread-h1-wrap:has(+ .subpage-header .subpage-header-image) .under-h1 h1 {
  color: #fff;
  text-shadow: 0 0 5px rgba(0, 0, 0, 0.6);
}
@media screen and (max-width: 768px) {
  .bread-h1-wrap {
    top: -21px;
  }
  /* 写真があるページは、SPでもh1を写真の上（右上）に重ねる */
  .bread-h1-wrap:has(+ .subpage-header .subpage-header-image) {
    top: 8px;
  }
  /* 文字が小さいので、明るい写真でも読めるよう影を強める */
  .bread-h1-wrap:has(+ .subpage-header .subpage-header-image) .under-h1 h1 {
    text-shadow:
      0 0 3px rgba(0, 0, 0, 0.9),
      0 0 6px rgba(0, 0, 0, 0.6);
  }
}

#reform {
  --sd-accent: #e0761a;
  --sd-text: #4a3527;
  --sd-bg: #fff6ea;
  --sd-marker: #ffd9a8;
  --sd-offer-bg: #fffbf4;
  --sd-photo-bg: #f3e6d3;
}

/* -----------------------------------------------------------
    ページタイトル
-------------------------------------------------------------- */
.subpage-header {
  height: 660px;
  margin: 50px 0 0;
}
.subpage-header__inner {
  padding: 50px 0 0 150px;
}

.intro-area {
  margin: 100px 0 0;
}
.subpage-header .basic-txt {
  font-weight: bold;
  /*margin: 20px 0 0;*/
}
.subpage-header .basic-txt span {
  background: var(--main);
  color: #fff;
  padding: 0 10px;
  border-radius: 30px;
  margin: 0 20px 0 0;
  display: inline-block;
  line-height: 1.5;
  text-shadow: none;
}
.recommendation-list {
  display: flex;
  gap: 20px;
  margin: 70px 0 0;
  align-items: center;
}
.recommendation-list-ttl {
  font-size: 2rem;
  font-weight: bold;
  line-height: 1.5;
}
.recommendation-list ul {
  display: flex;
  width: 1050px;
  gap: 10px;
}
.recommendation-list ul li {
  flex: 1;
  background: #fff;
  border-radius: 5px;
  padding: 30px 20px 20px;
  line-height: 1.3;
  position: relative;
}
.recommendation-icon {
  position: absolute;
  background: #fff;
  border-radius: 50px;
  top: -30px;
  left: 50%;
  transform: translateX(-50%);
  -webkit-transform: translateX(-50%);
  -ms-transform: translateX(-50%);
  width: 70px;
  height: 70px;
}
.recommendation-icon img {
  width: 40px;
  margin: 0 auto;
  display: table;
  padding: 15px 0 0;
}
.recommendation-txt {
  font-size: 1.4rem;
  position: relative;
  line-height: 1.6;
  /* HTML側の<wbr>の位置でだけ改行させる（1文字だけの行を防ぐ） */
  word-break: keep-all;
  overflow-wrap: anywhere;
  text-align: center;
}
/* 強調したい語句に太字＋マーカー線（色は各プランのカラーを薄めたもの） */
.recommendation-txt .mk {
  font-weight: bold;
  background: linear-gradient(
    transparent 62%,
    color-mix(in srgb, var(--main) 40%, #fff) 62%
  );
}
/* 画面幅が狭いPCで見出しが写真に被らないよう調整 */
@media screen and (min-width: 769px) and (max-width: 1500px) {
  .subpage-header__inner {
    padding: 50px 0 0 80px;
  }
  .subpage-header__inner .jp {
    font-size: 3.4rem;
  }
}
/* キャッチコピーが右半分の写真に被らないよう、画面幅に合わせて縮める */
@media screen and (min-width: 769px) {
  .subpage-header__inner .catch-l {
    font-size: min(3.5rem, 1.8vw);
  }
  /* ドアはページ名が長く写真に被るため、同様に縮める */
  #reform.door .subpage-header__inner .jp {
    font-size: min(4rem, 2.2vw);
  }
}
@media screen and (max-width: 768px) {
  .subpage-header__inner {
    padding: 0 20px;
  }
  .subpage-header {
    min-width: 100%;
    display: block;
    height: auto;
    margin: 30px 0 0;
    padding: 40px 0;
  }
  /* 写真(高さ250px)があるページは、その下から文字を始める */
  .subpage-header:has(.subpage-header-image) {
    margin: 0;
    padding: 270px 0 40px;
  }
  .subpage-header-image {
    left: 0;
  }
  .subpage-header-image img {
    width: 100%;
  }
  .subpage-header__inner .catch-l {
    font-size: min(2rem, 5.2vw);
    padding: 15px 0 0;
  }
  .sp-block {
    margin: 40px 0 0;
  }

  .works.basic-txt {
    font-weight: bold;
    margin: 20px 0 0;
  }
  .works.basic-txt span {
    background: var(--main);
    color: #fff;
    padding: 0 10px;
    border-radius: 30px;
    margin: 0 20px 0 0;
  }
  .recommendation-list.pc-display-b {
    display: none;
  }

  .recommendation-list-ttl {
    color: var(--main);
  }
  .recommendation-list {
    display: block;
    margin: 20px 0 0;
  }
  .recommendation-list ul {
    flex-direction: column;
    width: 100%;
    margin: 10px 0 0;
  }
  .recommendation-list ul li {
    border: dashed 1px var(--orange);
    border-radius: 5px;
    background: var(--light-orange);
    padding: 15px 15px 15px 70px;
  }
  .recommendation-icon {
    background: #fff;
    border: dashed 1px var(--orange);
    transform: translateX(0);
    -webkit-transform: translateX(0);
    -ms-transform: translateX(0);
    left: -10px;
    top: 50%;
    transform: translateY(-50%);
    -webkit-transform: translateY(-50%);
    -ms-transform: translateY(-50%);
  }

  .recommendation-txt {
    text-align: left;
  }
}

/* -----------------------------------------------------------
    メインビジュアル アニメーション
-------------------------------------------------------------- */
/* 見出し・キャッチ：読み込み時に下から順番に表示 */
.subpage-header__inner > .section-ttl,
.subpage-header__inner > .catch-l,
.subpage-header__inner > .basic-txt,
.subpage-header .recommendation-list-ttl {
  animation: mv-fadeup 0.9s cubic-bezier(0.165, 0.84, 0.44, 1) backwards;
}
.subpage-header__inner > .catch-l {
  animation-delay: 0.15s;
}
.subpage-header__inner > .basic-txt {
  animation-delay: 0.3s;
}
.subpage-header .recommendation-list-ttl {
  animation-delay: 0.45s;
}
@keyframes mv-fadeup {
  from {
    opacity: 0;
    transform: translateY(30px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* 写真：右からワイプ表示しながらゆっくり縮小 */
.subpage-header-image {
  overflow: hidden;
  border-radius: 0 0 0 50px;
  animation: mv-image-wipe 1.2s cubic-bezier(0.65, 0, 0.35, 1) backwards;
}
.subpage-header-image img {
  display: block;
  animation: mv-image-zoom 2.4s cubic-bezier(0.165, 0.84, 0.44, 1) backwards;
}
@keyframes mv-image-wipe {
  from {
    clip-path: inset(0 0 0 100%);
  }
  to {
    clip-path: inset(0 0 0 0);
  }
}
@keyframes mv-image-zoom {
  from {
    transform: scale(1.15);
  }
  to {
    transform: scale(1);
  }
}

/* こんな方におすすめ：カードが1枚ずつポンと出る（画面内に入ったら発火） */
.recommendation-list ul li.cmn-popup {
  transform: none;
  transition: none;
}
.recommendation-list ul li.cmn-effect-popup {
  animation: recommendation-pop 0.5s cubic-bezier(0.165, 0.84, 0.44, 1)
    backwards;
}
.recommendation-list ul li.cmn-effect-popup:nth-child(2) {
  animation-delay: 0.12s;
}
.recommendation-list ul li.cmn-effect-popup:nth-child(3) {
  animation-delay: 0.24s;
}
.recommendation-list ul li.cmn-effect-popup:nth-child(4) {
  animation-delay: 0.36s;
}
/* メインビジュアル内は見出しの表示が終わってから */
.subpage-header .recommendation-list ul li.cmn-effect-popup:nth-child(1) {
  animation-delay: 0.6s;
}
.subpage-header .recommendation-list ul li.cmn-effect-popup:nth-child(2) {
  animation-delay: 0.72s;
}
.subpage-header .recommendation-list ul li.cmn-effect-popup:nth-child(3) {
  animation-delay: 0.84s;
}
.subpage-header .recommendation-list ul li.cmn-effect-popup:nth-child(4) {
  animation-delay: 0.96s;
}
@keyframes recommendation-pop {
  from {
    opacity: 0;
    transform: translateY(24px) scale(0.85);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@media (prefers-reduced-motion: reduce) {
  .subpage-header__inner > .section-ttl,
  .subpage-header__inner > .catch-l,
  .subpage-header__inner > .basic-txt,
  .subpage-header .recommendation-list-ttl,
  .subpage-header-image,
  .subpage-header-image img,
  .recommendation-list ul li.cmn-effect-popup {
    animation: none;
  }
  .recommendation-list ul li.cmn-popup {
    opacity: 1;
  }
}

/* -----------------------------------------------------------
    about-area
-------------------------------------------------------------- */
.about-area {
  margin: 100px 0 0;
}
/* 断熱診断ページの「サーモカメラ断熱診断とは？」と同じ左右2カラム配置 */
.about-area .txt-block {
  display: flex;
  justify-content: space-between;
  gap: 60px;
}
.about-area .txt-block > div {
  flex: 1;
  min-width: 0;
}
.about-area .catch-l {
  padding: 30px 0 0;
  /* 文節の区切りで折り返し、行の長さを揃える */
  word-break: auto-phrase;
  text-wrap: balance;
}
.about-area .basic-txt {
  padding: 80px 0 0;
  width: 600px;
  flex-shrink: 0;
}
@media screen and (max-width: 768px) {
  .about-area {
    margin: 50px 0 0;
  }
  .about-area .txt-block {
    display: block;
  }
  .about-area .catch-l {
    padding: 20px 0 0;
    word-break: inherit;
    text-wrap: inherit;
  }
  .about-area .basic-txt {
    padding: 20px 0 0;
    width: 100%;
  }
}
/* 床下：図（左）と文章（右）を横に並べ、図は白いパネルに載せて後ろにプランカラーの面をずらして敷く */
#reform.floor .about-area {
  overflow-x: clip; /* 図が左からスライドしてくる間、横スクロールを出さない */
}
#reform.floor .about-area > .inner3 {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  align-items: center;
  gap: 80px;
}
#reform.floor .about-area-image {
  position: relative;
  isolation: isolate;
  margin: 0 0 24px 24px;
}
#reform.floor .about-area-image::before {
  content: "";
  position: absolute;
  inset: 24px 24px -24px -24px;
  z-index: -1;
  background: var(--light-orange);
}
#reform.floor .about-area-image img {
  box-sizing: border-box;
  display: block;
  width: 100%;
  height: auto;
  padding: 10px 20px;
  background: #fff;
  border: 1px solid color-mix(in srgb, var(--plan) 30%, #fff);
}
#reform.floor .about-area .txt-block {
  display: block;
}
#reform.floor .about-area .catch-l {
  font-size: 3rem;
  line-height: 1.6;
}
/* 読点の位置で改行する（幅が足りないSPでは span の中で自然に折り返す） */
#reform.floor .about-area .catch-l > span {
  display: inline-block;
}
#reform.floor .about-area .basic-txt {
  width: auto;
  margin: 30px 0 0;
  padding: 30px 0 0;
  border-top: 1px solid color-mix(in srgb, var(--plan) 30%, #fff);
}
@media screen and (max-width: 768px) {
  #reform.floor .about-area > .inner3 {
    display: block;
  }
  #reform.floor .about-area-image {
    margin: 0 0 14px 14px;
  }
  #reform.floor .about-area-image::before {
    inset: 14px 14px -14px -14px;
  }
  #reform.floor .about-area-image img {
    padding: 4px 8px;
  }
  #reform.floor .about-area .txt-block {
    margin: 40px 0 0;
  }
  #reform.floor .about-area .catch-l {
    font-size: 2rem;
  }
  #reform.floor .about-area .basic-txt {
    margin: 20px 0 0;
    padding: 20px 0 0;
  }
}

/* -----------------------------------------------------------
    charm-area
-------------------------------------------------------------- */
.charm-area {
  padding: 200px 0 60px;
  background: var(--grade-orange);
  border-radius: 1500px 1500px 0 0 / 300px 300px 0 0;
  margin: 100px -200px;
}
/* 見出しを他セクション(inner3)の左端に揃え、白丸の下に隠れないよう前面に出す */
.charm-area .txt-block {
  max-width: 1300px;
  margin: 0 auto;
  position: relative;
  z-index: 1;
}
.charm-area .ttl-l .jp .ttl-num {
  font-size: 5rem;
  color: var(--main);
  display: inline;
  padding: 0 10px;
}
.charm-area .ttl-l .jp .fukidashi {
  background: var(--main);
  color: #fff;
  display: table;
  padding: 12px 20px 10px;
  border-radius: 30px;
  margin: 0 0 20px;
  font-size: 1.6rem;
  position: relative;
}

.charm-area .ttl-l .jp .fukidashi:before {
  content: "";
  position: absolute;
  top: 100%;
  left: 50%;
  margin-left: -15px;
  border: 10px solid transparent;
  border-top: 10px solid var(--main);
}
.charm-list {
  margin: 0 0 0;
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 100px 50px;
  margin: 150px 0 0;
}
.charm-list-block {
  margin: 30px 0 0;
  width: calc((100% / 3) - 50px);
  position: relative;
}
.charm-list-block:nth-child(even) {
  position: relative;
  top: 100px;
}
.charm-list-block::before {
  content: "";
  position: absolute;
  width: 200%;
  background: #fff;
  z-index: 0;
  border-radius: 800px;
  aspect-ratio: 1 / 1;
  top: 40%;
  left: 50%;
  transform: translate(-50%, -50%);
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
}

.charm-list-block .txt-box {
  position: relative;
  z-index: 1;
}
.charm-list-block .txt-box .num {
  position: absolute;
  left: 0px;
  padding: 0 10px;
  width: 80px;
  height: 80px;
  border-radius: 50%;
  text-align: center;
  color: #ffffff;
  font-size: 1.4rem;
  background-color: var(--main);
  font-family: var(--en);
  display: flex;
  flex-direction: column;
  line-height: 1;
  text-align: center;
  justify-content: center;
  align-items: center;
}
.charm-list-block .txt-box .num span {
  display: table;
  font-size: 3rem;
}
.charm-list-block .txt-box .num::before {
  content: "";
  position: absolute;
  display: block;
  width: 0;
  height: 0;
  right: 2px;
  bottom: 2px;
  border-left: 20px solid var(--main);
  border-top: 10px solid transparent;
  border-bottom: 10px solid transparent;
  transform: rotate(45deg);
}
.charm-list-ttl {
  font-size: 2.6rem;
  text-align: center;
  font-weight: bold;
}
.charm-list-image {
  margin: 10px 0 0;
}
.charm-list-image img {
  width: 100%;
  width: 350px;
  height: 240px;
  margin: 0 auto;
  display: block;
  border-radius: 15px;
  object-fit: cover;
}
.charm-list-block .catch-s {
  text-align: center;
  padding: 20px 0 0;
}
.charm-list-block .basic-txt {
  padding: 20px 0 0;
  width: 100%;
  margin: 0 auto;
}
@media screen and (max-width: 768px) {
  .charm-area {
    margin: 50px 0 0;
    padding: 100px 0 0;
  }
  .charm-area .ttl-l .jp .ttl-num {
    font-size: 4rem;
  }
  .charm-list {
    display: block;
    margin: 30px 0 0;
  }
  .charm-list-block {
    width: 100%;
    background: none;
    padding: 0;
    border-radius: 5px;
  }
  .charm-list-block:nth-child(n + 2) {
    margin: 20px 0 0;
  }
  .charm-list-block:nth-child(even) {
    top: 0;
  }
  .charm-list-block::before {
    display: none;
  }

  .charm-list-block .txt-box {
    border-radius: 5px;
    background: #fff;
    padding: 20px;
  }
  .charm-list-block .txt-box .num {
    font-size: 1rem;
    width: 60px;
    height: 60px;
    left: -10px;
    top: 10px;
    padding: 5px 5px 0;
  }
  .charm-list-block .txt-box .num span {
  }
  .charm-list-block .txt-box .num::before {
    right: 0px;
    bottom: -3px;
  }
  .charm-list-ttl {
    font-size: 2rem;
  }
  .charm-list-image {
  }
  .charm-list-image img {
    width: 100%;
    height: 200px;
  }
  .charm-list-block .catch-s {
  }
  .charm-list-block .basic-txt {
    width: 100%;
  }
}

/* -----------------------------------------------------------
    .service-area
-------------------------------------------------------------- */
.service-block {
  background: #f1f5f7;
  display: flex;
}
.service-block.first {
  display: block;
}
.service-block:nth-child(n + 2) {
  margin: 30px 0 0;
}
.service-block.first {
  margin: 50px 0 0;
}

/* 断熱工事 */
.service-block-top {
  display: flex;
}
.service-list {
  padding: 50px 100px 0;
  display: flex;
  gap: 10px;
}
.service-list-box {
  flex: 1;
  background: #fff;
}
.service-list-image img {
  width: 100%;
}
.service-list-box .service-ttl {
  font-size: 2rem;
  text-align: center;
  padding: 10px 0 0;
  font-weight: bold;
  display: grid;
}

.service-list-method {
  padding: 10px 20px 0;
  text-align: center;
}
.service-list-method span {
  background: var(--main);
  color: #fff;
  border-radius: 30px;
  padding: 0 10px;
  font-size: 1.4rem;
  font-weight: bold;
  margin: 0 10px 0 0;
}
.service-list-box .basic-txt {
  padding: 10px 20px 20px;
}

/* service-method */
.service-method {
  padding: 40px 100px 60px;
}
.service-method-ttl {
  background: var(--main);
  color: #fff;
  border-radius: 30px;
  padding: 3px 15px 1px;
  position: relative;
  display: inline-block;
}
.service-method-ttl:before {
  content: "";
  position: absolute;
  top: 100%;
  left: 50%;
  margin-left: -15px;
  border: 10px solid transparent;
  border-top: 10px solid var(--main);
}
.service-method-catch {
  font-size: 2.6rem;
  font-weight: bold;
  padding: 10px 0 0;
}
.service-method-ttl-s {
  margin: 10px 0 0;
  padding: 10px 0 0;
  border-top: dashed 1px #333;
  font-weight: bold;
}
/* 文章の横に画像を置く場合（文章：左／画像：右） */
.service-method.has-image {
  display: flex;
  align-items: center;
  gap: 50px;
}
.service-method-txt {
  flex: 1;
  min-width: 0;
}
.service-method-image {
  width: 320px;
  flex-shrink: 0;
}
.service-method-image img {
  display: block;
  width: 100%;
  height: auto;
}

/* .service-block-image */
.service-block-image {
  width: 500px;
}
.service-block-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.service-block .txt-box {
  padding: 100px;
  flex: 1;
}
.service-block .txt-box .ttl {
  font-size: 2.6rem;
  font-weight: bold;
  color: var(--main);
  padding: 0 0 0 25px;
  position: relative;
}
.service-block .txt-box .ttl:before {
  content: "";
  position: absolute;
  top: -10%;
  left: 0;
  transform: translateY(-50%);
  width: 36px;
  height: 37px;
  background: url(../img/deco-orange.svg) no-repeat center / contain;
}
.service-block .txt-box .catch-m {
  font-size: 3.2rem;
  padding: 20px 0 0;
  /* HTML側の<wbr>の位置でだけ改行させ、行の長さを揃える */
  word-break: keep-all;
  overflow-wrap: anywhere;
  text-wrap: balance;
}
.service-block .txt-box .basic-txt {
  padding: 20px 0 0;
}

@media screen and (max-width: 768px) {
  .service-area {
    margin: 50px 0 0;
  }
  .service-block {
    flex-direction: column;
  }
  .service-block.first {
    margin: 30px 0 0;
  }
  .service-block:nth-child(n + 2) {
  }

  /* 断熱工事 */
  .service-block-top {
    display: block;
  }
  .service-list {
    flex-direction: column;
    padding: 20px;
  }
  .service-list-box {
    position: relative;
  }
  .service-list-image img {
    height: 80px;
    position: absolute;
    top: 0;
    left: 0;
    width: 100px;
    object-fit: cover;
  }
  /* 写真(高さ80px)の横で見出しを上下中央に配置 */
  .service-list-box .service-ttl {
    min-height: 80px;
    padding: 0 15px 0 115px;
    text-align: left;
    align-content: center;
    justify-content: start;
  }

  .service-list-method {
    padding: 15px 20px 0;
    text-align: left;
  }
  .service-list-method span {
  }
  .service-list-box .basic-txt {
  }

  /* service-method */
  .service-method {
    padding: 20px;
  }
  .service-method-ttl {
  }
  .service-method-ttl:before {
  }
  .service-method-catch {
    font-size: 2rem;
    line-height: 1.6;
    padding: 10px 0;
  }
  .service-method-ttl-s {
  }
  .service-method.has-image {
    display: block;
  }
  .service-method-image {
    width: 100%;
    margin: 20px 0 0;
  }

  /* .service-block-image */
  .service-block-image {
    width: 100%;
    height: 250px;
  }
  .service-block-image img {
  }
  .service-block .txt-box {
    padding: 30px 20px 20px;
  }
  .service-block .txt-box .ttl {
    font-size: 2rem;
    padding: 0 0 0 20px;
  }
  .service-block .txt-box .ttl:before {
    width: 22px;
    height: 23px;
  }
  .service-block .txt-box .catch-m {
    font-size: 2.1rem;
  }
  .service-block .txt-box .basic-txt {
  }
}

/* -----------------------------------------------------------
    .cost-area
-------------------------------------------------------------- */
.cost-area {
  margin: 150px 0 0;
  background: var(--sd-bg);
  padding: 150px 0;
  background: url(../img/top-service-bg.jpg) no-repeat top center / cover;
}

/* オレンジ背景の上なので見出しは白抜き */
.cost-area .ttl-l .en,
.cost-area .ttl-l .jp {
  color: #fff;
}
.cost-area .txt-block {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 40px;
}
.cost-area .txt-block .price {
  border: double 10px var(--main);
  margin: 0;
  padding: 30px;
  border-radius: 15px;
  background: #fff;
  /*display: flex;
  align-items: center;
  justify-content: space-between;*/
}

.cost-area .txt-block .price-txt {
  font-size: 3rem;
  font-weight: bold;
}
.cost-area .txt-block .price-txt span {
  font-size: 5rem;
  font-family: var(--en);
  color: var(--main);
  padding: 0 3px;
}
/* 条件（1か所・〇坪以下など）と（税込）は小さく */
.cost-area .txt-block .price-txt small {
  font-size: 2rem;
}
.cost-block {
  margin: 50px 0 0;
  padding: 50px;
  background: #f8f8f8;
}
.cost-ttl {
  font-size: 2.6rem;
  font-weight: bold;
}
.cost-list {
  display: flex;
  justify-content: space-between;
  margin: 50px 0 0;
  gap: 30px;
}
.cost-list > div {
  background: #fff;
  padding: 30px;
  flex: 1;
  border-left: solid 5px var(--main);
}
.cost-list-ttl {
  font-size: 2rem;
}
.cost-list-price {
  font-size: 2rem;
  font-weight: bold;
  line-height: 1;
}
.cost-list-price span {
  font-size: 4rem;
  padding: 0 10px 0 0;
  font-family: var(--en);
}
.cost-block .arrow {
  position: relative;
  width: 100px;
  margin: 0 auto;
}
.cost-block .arrow::before {
  animation: arrow 1.5s infinite;
  border: solid var(--main);
  border-width: 0 0 5px 5px;
  content: "";
  margin: auto;
  position: absolute;
  top: 0px;
  left: 25px;
  transform: rotate(-45deg);
  width: 20px;
  height: 20px;
}

@keyframes arrow {
  0% {
    transform: rotate(-45deg) translate(0, 0);
  }
  60% {
    transform: rotate(-45deg) translate(-10px, 10px);
  }
  0%,
  60%,
  100% {
    opacity: 0;
  }
  30% {
    opacity: 1;
  }
}

.cost-block .last-txt {
  position: relative;
  text-align: center;
  font-size: 2.3rem;
  font-weight: bold;
  margin: 50px 0 30px;
  color: #fff;
  border-radius: 10px;
  border: solid 1px var(--main);
  background: var(--main);
}
.cost-block .last-txt .num {
  font-size: 4rem;
  padding: 0 10px 0;
  font-family: var(--en);
}

/* .cost-note  */
.cost-note {
  background: #fff;
  padding: 50px;
  margin: 30px 0 0;
  border: dashed 1px #333;
}
.cost-note-catch {
  font-size: 2.6rem;
  font-weight: bold;
}
.cost-note-catch span {
  color: var(--main);
  border-bottom: double 6px var(--main);
}
.cost-note .basic-txt {
  padding: 20px 0 0;
}

@media screen and (max-width: 768px) {
  .cost-area {
    margin: 50px 0 0;
    padding: 60px 0;
  }
  .cost-area .txt-block {
    display: block;
  }
  .cost-area .txt-block .price {
    margin: 20px 0 0;
    padding: 20px;
  }

  .cost-area .txt-block .price-txt {
    font-size: 2rem;
    line-height: 1.3;
    padding: 0 0 10px;
  }
  .cost-area .txt-block .price-txt span {
    font-size: 3rem;
  }
  .cost-area .txt-block .price-txt small {
    font-size: 1.5rem;
  }
  .cost-block {
    padding: 20px;
    margin: 30px 0 0;
  }
  .cost-ttl {
    font-size: 2rem;
    line-height: 1.6;
  }
  .cost-list {
    flex-direction: column;
    margin: 20px 0 0;
    gap: 10px;
  }
  .cost-list > div {
    padding: 20px;
  }
  .cost-list-ttl {
    font-size: 1.6rem;
  }
  .cost-list-price {
    font-size: 1.6rem;
  }
  .cost-list-price span {
    font-size: 2.6rem;
  }
  .cost-block .arrow {
  }
  .cost-block .arrow::before {
  }
  .cost-block .last-txt {
    border-radius: 5px;
    font-size: 1.6rem;
    padding: 20px;
    line-height: 1.3;
    padding: 25px 0 20px;
  }
  .cost-block .last-txt .num {
    font-size: 3rem;
    padding: 0 5px;
  }

  /* .cost-note  */
  .cost-note {
    padding: 20px;
  }
  .cost-note-catch {
    font-size: 2rem;
    line-height: 1.8;
  }
  .cost-note-catch span {
  }
  .cost-note .basic-txt {
  }
}

/* -----------------------------------------------------------
    .works-area
-------------------------------------------------------------- */
.works-area {
  background: #f8f8f8;
  padding: 100px 0;
  margin: 0 0 0;
  background: linear-gradient(180deg, var(--beige) 0%, #fff 100%);
}
.works-area .works-ttl {
  line-height: 1.8;
  margin: 10px 0 0;
}
.niwork-top__scroll {
  margin: 50px 0 0;
}
/* もっと見るボタン */
.works-area .btn-more {
  margin: 50px auto 0;
  width: 260px;
}
.works-area .btn-more a {
  align-items: center;
  background: #fff;
  border: 1px solid var(--cmnblack);
  color: var(--cmnblack);
  display: flex;
  font-size: 1.6rem;
  font-weight: 500;
  height: 60px;
  justify-content: center;
  letter-spacing: 0.1em;
  position: relative;
  transition: 0.3s;
}
.works-area .btn-more a::after {
  background: var(--main);
  border-radius: 50%;
  content: "";
  height: 6px;
  position: absolute;
  right: 24px;
  top: calc(50% - 3px);
  transition: 0.3s;
  width: 6px;
}
@media screen and (min-width: 769px) {
  .works-area .btn-more a:hover {
    background: var(--main);
    border-color: var(--main);
    color: #fff;
  }
  /* ホバーで丸が山形の矢印（＞）に変形する */
  .works-area .btn-more a:hover::after {
    background: transparent;
    border-radius: 0;
    border-right: 2px solid #fff;
    border-top: 2px solid #fff;
    box-sizing: border-box;
    height: 9px;
    right: 24px;
    top: calc(50% - 4.5px);
    transform: rotate(45deg);
    width: 9px;
  }
}

@media screen and (max-width: 768px) {
  .works-area {
    padding: 50px 0;
    margin: 0;
  }
  .niwork-top__scroll {
    margin: 20px 0 0;
    overflow-x: scroll;
  }
  .works-area .btn-more {
    margin: 30px auto 0;
  }
}

/* -----------------------------------------------------------
    reason-area
-------------------------------------------------------------- */
.reason-area {
  margin: 100px 0 0;
  position: relative;
}
.reason-area::before {
  background: var(--main);
  border-radius: 50%;
  content: "";
  height: 1200px;
  position: absolute;
  right: -350px;
  top: 0px;
  width: 1200px;
  z-index: -1;
}
.reason-area .ttl-l .jp {
  line-height: 1;
}
.reason-area .ttl-l .jp .fukidashi {
  background: var(--main);
  color: #fff;
  display: table;
  padding: 12px 20px 10px;
  border-radius: 30px;
  margin: 0 0 20px;
  font-size: 1.6rem;
  position: relative;
}

.reason-area .ttl-l .jp .fukidashi:before {
  content: "";
  position: absolute;
  top: 100%;
  left: 50%;
  margin-left: -15px;
  border: 10px solid transparent;
  border-top: 10px solid var(--main);
}
.reason-area .ttl-l .jp .num {
  display: inline;
  font-size: 8rem;
  padding: 0 10px;
  color: var(--main);
}
.reason-list {
  margin: 50px 0 0;
  display: flex;
  gap: 10px;
}
.reason-list-image img {
  width: 100%;
}
.reason-list-box {
  flex: 1;
  background: #f8f8f8;
  padding: 50px;
  position: relative;
}
.reason-list-box .num {
  position: absolute;
  background: #f8f8f8;
  left: 0;
  top: -20px;
  padding: 1px 15px;
  font-family: var(--en);
  color: var(--main);
}
.reason-area .catch-s {
  text-align: center;
  padding: 20px 0 0;
  /* HTML側の<wbr>の位置でだけ改行させ、行の長さを揃える */
  word-break: keep-all;
  overflow-wrap: anywhere;
  text-wrap: balance;
}
.reason-area .basic-txt {
  padding: 20px 0 0;
}

@media screen and (max-width: 768px) {
  .reason-area {
    margin: 50px 0 0;
  }
  /* 背景の丸はSPだと見出しに被って読めなくなるため非表示 */
  .reason-area::before {
    display: none;
  }
  .reason-area .ttl-l .jp {
  }
  .reason-area .ttl-l .jp .fukidashi {
    margin: 0 0 0;
  }
  .reason-area .ttl-l .jp .num {
    font-size: 5rem;
    padding: 0;
  }
  .reason-list {
    display: block;
  }
  .reason-list-image img {
  }
  .reason-list-box {
    width: 100%;
    padding: 20px;
  }
  .reason-list-box:nth-child(n + 2) {
    margin: 30px 0 0;
  }
  .reason-list-box .num {
  }
  .reason-area .catch-s {
    text-align: left;
  }
  .reason-area .basic-txt {
  }
}

/* -----------------------------------------------------------
    .flow-area
-------------------------------------------------------------- */
.flow-area {
  margin: 150px 0 0;
  padding: 150px 0 0;
  background: var(--beige);
}

@media screen and (max-width: 768px) {
  .flow-area {
    margin: 50px 0 0;
    padding: 50px 0 0;
  }
  /* 「アフターサービ/ス」のような1文字残りを防ぐ（「・」の位置で改行） */
  .flow-area .flow-list-ttl {
    word-break: keep-all;
    overflow-wrap: anywhere;
  }
}

/* -----------------------------------------------------------
    .faq-area
-------------------------------------------------------------- */
.faq-area {
  margin: 0 0 0;
  padding: 150px 0 !important;
  background: var(--beige);
}

@media screen and (max-width: 768px) {
  .faq-area {
    padding: 50px 0 !important;
  }
  /* 共通CSSの余白(80px)のままだと質問文が極端に細くなるためSPは詰める */
  .faq-area .faq-list {
    margin: 20px 0 0;
    padding: 5px 15px;
    border-radius: 15px;
  }
  .faq-area .faq-list li:last-child {
    border-bottom: none;
  }
}

/* -----------------------------------------------------------
    .ninews-area
-------------------------------------------------------------- */
/* 背景に薄オレンジを敷くため、上下の余白は margin ではなく padding で取る */
.ninews-area {
  margin: 0 !important;
  padding: 100px 0 200px;
  background: #fff6ea;
}
.ninews-area .ninews-head {
  width: 100% !important;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  margin: 0 0 20px;
}
.ninews-area .splide.is-initialized .splide__track {
  overflow: hidden !important;
}
.ninews-area .splide.is-initialized .ninews-list {
  gap: 0;
}

.ninews-area .splide__arrow {
  background: #fff;
  border: solid 1px #333;
  top: auto;
  bottom: -120px;
  width: 50px;
  height: 50px;
}
.ninews-area .splide__arrow--next {
  right: auto;
  left: 80px;
}

@media screen and (max-width: 768px) {
  .ninews-area {
    padding: 50px 0;
  }
  .splide__track {
    overflow-x: scroll !important;
  }
  .ninews-have-thumb.ninews-list {
    display: flex !important;
  }
  .ninews-have-thumb .ninews-item {
    width: 280px !important;
  }
  .ninews-thumb__img {
    width: 100% !important;
  }
  .ninews-thumb__elements {
    width: 100% !important;
  }
}

/* カードと「一覧」の見た目はトップページの断熱リフォームコラム（top.css の .top-column）に合わせる。
   後読み込みの ninews-area.css に負けないよう #reform を付けている */
#reform .ninews-area .ninews-head-link {
  align-items: center;
  border: 1px solid var(--cmnblack);
  border-radius: 20px;
  color: var(--cmnblack);
  display: inline-flex;
  font-size: 1.4rem;
  gap: 10px;
  justify-content: center;
  margin: 0;
  padding: 5px 12px 6px 14px;
  transition: 0.3s;
}

/* 見出しの下のリード文 */
#reform .ninews-area .ninews-lead {
  padding: 10px 0 0;
}

#reform .ninews-area .ninews-head-link::before {
  content: none;
}

#reform .ninews-area .ninews-head-link::after {
  background: var(--main);
  border-radius: 50%;
  content: "";
  height: 4px;
  width: 4px;
}

#reform .ninews-area .ninews-item a {
  display: block;
}

#reform .ninews-area .ninews-thumb__img {
  aspect-ratio: 340 / 226;
  background: var(--beige);
  height: auto;
  overflow: hidden;
  width: 100%;
}

#reform .ninews-area .ninews-thumb__img img {
  object-fit: contain;
}

#reform .ninews-area .ninews-thumb__elements {
  display: flex;
  flex-direction: column;
  margin: 8px 0 0;
}

#reform .ninews-area .ninews-date {
  display: none;
}

#reform .ninews-area .ninews-cate-wrap .ninews-cate {
  border-color: var(--main);
  color: var(--main);
  font-size: 1.2rem;
  font-weight: bold;
  padding: 6px 15px;
}

#reform .ninews-area .ninews-title {
  font-size: 1.5rem;
  font-weight: normal;
  letter-spacing: 0.1em;
  line-height: 1.8;
  margin: 0;
  max-height: none;
}

@media screen and (min-width: 769px) {
  /* カード間の余白はSplideのgapオプションで付ける */
  #reform .ninews-area .ninews-list {
    gap: 0;
  }

  #reform .ninews-area .ninews-head-link:hover {
    background: var(--cmnblack);
    border-color: var(--cmnblack);
    color: #fff;
  }
}

@media screen and (max-width: 768px) {
  #reform .ninews-area .ninews-list {
    gap: 10px;
  }

  #reform .ninews-area .ninews-cate-wrap .ninews-cate {
    font-size: 1.1rem;
  }

  #reform .ninews-area .ninews-title {
    font-size: 1.3rem;
  }
}

/* ===========================================================
    デザイン調整
    （上の各セクションの指定を上書きする。後読み込みのflow.css等にも
      負けないよう #reform を付けている）
=========================================================== */

/* ---------- 魅力 ---------- */
/* 見出しは「〇〇リフォームの」を小さく1行目、「3つの魅力」を2行目に */
#reform .charm-area .ttl-l .jp {
  line-height: 1.3;
}
#reform .charm-area .ttl-l .jp .ttl-num {
  padding: 0 2px 0 0;
  line-height: 1;
}
/* 番号バッジが長い見出しに被らないよう、写真の左上の角に重ねる */
/* 各魅力のタイトルはプランカラー（--main は「プランごとの色分け」で差し替えている） */
#reform .charm-list-ttl {
  line-height: 1.5;
  color: var(--main);
}
/* PCでは見出し・各魅力のタイトルを折り返さない */
@media screen and (min-width: 769px) {
  #reform .charm-area .ttl-l .jp,
  #reform .charm-list-ttl {
    white-space: nowrap;
  }
  /* 見出しの「〇〇リフォームの」も改行せず「3つの魅力」と同じ行・同じ大きさで並べる（SPは小さく2行のまま） */
  #reform .charm-area .ttl-l .jp .s {
    display: inline;
    font-size: inherit;
  }
}
#reform .charm-list-block .txt-box .num {
  top: 32px;
}
#reform .charm-list-image img {
  max-width: 100%;
}
/* 文節の区切りで折り返し、行の長さを揃える */
#reform .charm-list-block .catch-s {
  word-break: auto-phrase;
  text-wrap: balance;
}

/* ---------- サービス内容 ---------- */
#reform .service-block {
  border-radius: 16px;
  overflow: hidden;
}
/* 写真の下にできる隙間をなくす */
#reform .service-block-image img,
#reform .service-list-image img {
  display: block;
}
#reform .service-list-box {
  border-radius: 10px;
  overflow: hidden;
}
#reform .service-method {
  padding: 40px 100px 0;
}
#reform .service-method:last-child {
  padding-bottom: 60px;
}

/* ---------- 費用 ---------- */
#reform .cost-area .price-note {
  line-height: 1.8;
}
/* お得なセット割引（全ページ共通） */
#reform .value-block {
  margin: 50px 0 0;
  padding: 50px;
  border-radius: 16px;
  background: #fff;
  box-shadow: 0 10px 30px rgba(109, 60, 20, 0.15);
}
#reform .value-ttl {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  font-size: 3rem;
  font-weight: bold;
  line-height: 1.5;
  letter-spacing: 0.05em;
}
/* 見出しの両脇の斜め線 */
#reform .value-ttl::before,
#reform .value-ttl::after {
  content: "";
  width: 30px;
  height: 3px;
  border-radius: 3px;
  background: var(--main);
  rotate: 60deg;
}
#reform .value-ttl::after {
  rotate: -60deg;
}
#reform .value-list {
  display: flex;
  gap: 30px;
  margin: 30px 0 0;
}
#reform .value-item {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 24px;
  padding: 30px;
  border: 2px solid var(--main);
  border-radius: 16px;
  background: #fff7ea;
}
/* プランが1つだけのページは、写真を左・文章を右に並べる */
#reform .value-item:only-child {
  flex-direction: row;
  align-items: center;
  gap: 50px;
  padding: 40px 50px;
}
#reform .value-item:only-child .value-photos {
  width: 520px;
  flex-shrink: 0;
}
/* 写真 */
#reform .value-photos {
  display: flex;
  align-items: center;
}
#reform .value-photo {
  position: relative;
  flex: 1;
  min-width: 0;
  margin: 0;
  border-radius: 12px;
  overflow: hidden;
}
#reform .value-photo img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}
#reform .value-photo figcaption {
  position: absolute;
  left: 0;
  bottom: 0;
  padding: 4px 14px;
  border-radius: 0 12px 0 0;
  background: var(--main);
  color: #fff;
  font-size: 1.4rem;
  font-weight: bold;
  line-height: 1.5;
}
/* 写真の間の＋マーク */
#reform .value-plus {
  position: relative;
  z-index: 1;
  flex-shrink: 0;
  width: 44px;
  height: 44px;
  margin: 0 -14px;
  border: 3px solid var(--main);
  border-radius: 50%;
  background: #fff;
}
#reform .value-plus::before,
#reform .value-plus::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 16px;
  height: 3px;
  border-radius: 2px;
  background: var(--main);
  transform: translate(-50%, -50%);
}
#reform .value-plus::after {
  transform: translate(-50%, -50%) rotate(90deg);
}
/* 文章 */
#reform .value-body {
  flex: 1;
  min-width: 0;
}
#reform .value-list-lead {
  display: inline-block;
  margin: 0 0 8px;
  padding: 3px 16px 2px;
  border-radius: 30px;
  background: var(--main);
  color: #fff;
  font-size: 1.4rem;
  font-weight: bold;
  line-height: 1.5;
}
#reform .value-list-ttl {
  font-size: 2.8rem;
  font-weight: bold;
  line-height: 1.5;
  letter-spacing: 0.03em;
}
#reform .value-list-ttl span {
  background: linear-gradient(transparent 65%, #ffd9a8 65%);
}
#reform .value-list-ttl i {
  padding: 0 4px;
  color: var(--main);
  font-style: normal;
}
#reform .value-list-txt {
  margin: 8px 0 0;
  font-weight: bold;
  line-height: 1.8;
}
/* 割引率 */
#reform .value-list-price {
  display: flex;
  align-items: stretch;
  width: fit-content;
  max-width: 100%;
  margin: 18px 0 0;
  border: 2px solid var(--main);
  border-radius: 12px;
  overflow: hidden;
  background: #fff;
  font-weight: bold;
  line-height: 1;
}
#reform .value-list-price .label {
  display: flex;
  align-items: center;
  padding: 0 18px;
  background: var(--main);
  color: #fff;
  font-size: 1.6rem;
  letter-spacing: 0.05em;
  white-space: nowrap;
}
#reform .value-list-price .body {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 2px 4px;
  padding: 8px 20px 10px 16px;
  font-size: 1.6rem;
}
#reform .value-list-price .max {
  align-self: center;
  margin: 0 2px 0 4px;
  padding: 4px 8px;
  border-radius: 5px;
  background: #4a3527;
  color: #fff;
  font-size: 1.5rem;
}
#reform .value-list-price .num {
  color: var(--main);
  font-family: var(--en);
  font-size: 6rem;
}
#reform .value-list-price .unit {
  color: var(--main);
  font-size: 2.6rem;
}
/* 補助金制度 */
#reform .cost-block {
  border-radius: 16px;
}
#reform .cost-ttl {
  line-height: 1.5;
}
#reform .cost-list {
  flex-wrap: wrap;
  gap: 10px 30px;
  margin: 30px 0 0;
}
#reform .cost-list > div {
  border-radius: 0 10px 10px 0;
}
/* 「※窓とセットで利用可能」は制度の枠の下に置く */
#reform .cost-list > .basic-txt {
  flex-basis: 100%;
}
#reform .cost-block .arrow {
  height: 40px;
}
/* 実質負担額と削減額を、1つの枠の中で左右に分けている（右の白い枠が「○万円の負担削減!」） */
#reform .cost-block .last-txt {
  display: flex;
  align-items: stretch;
  gap: 6px;
  margin: 20px 0 30px;
  padding: 6px;
}
#reform .last-txt-main {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 1;
  flex-wrap: wrap;
  gap: 4px 20px;
  padding: 10px 20px;
  line-height: 1.2;
}
#reform .last-txt-main .lead {
  padding: 5px 18px;
  border-radius: 30px;
  background: #fff;
  color: var(--main);
  font-size: 1.7rem;
  letter-spacing: 0.05em;
}
#reform .last-txt-main .price {
  font-size: 2.6rem;
}
#reform .last-txt-main .price .num {
  font-size: 5rem;
  padding: 0 6px;
}
#reform .last-txt-badge {
  display: flex;
  align-items: baseline;
  justify-content: center;
  flex: 1;
  padding: 10px 30px 12px;
  border-radius: 6px;
  background: #fff;
  color: var(--main);
  font-size: 2.2rem;
  letter-spacing: 0.05em;
  line-height: 1.2;
}
#reform .last-txt-badge .amount .num {
  font-size: 5rem;
  padding: 0 4px;
}
/* ---- 装飾 ---- */
/* 枠のオレンジ地に薄い斜めストライプ */
#reform .cost-block .last-txt {
  background-image: repeating-linear-gradient(
    135deg,
    rgba(255, 255, 255, 0.1) 0 6px,
    transparent 6px 12px
  );
}
/* 実質負担額から削減額へ向かう三角 */
#reform .last-txt-main {
  position: relative;
}
#reform .last-txt-main::after {
  content: "";
  position: absolute;
  left: calc(100% + 5px);
  top: 50%;
  z-index: 1;
  translate: 0 -50%;
  border: solid transparent;
  border-width: 13px 0 13px 15px;
  border-left-color: var(--main);
}
/* 白いパネルの内側に点線の枠 */
#reform .last-txt-badge {
  align-items: center;
  outline: 1px dashed var(--main);
  outline-offset: -5px;
}
/* 文字の両脇に「＼ ／」のあしらい */
#reform .last-txt-badge::before,
#reform .last-txt-badge::after {
  content: "";
  flex-shrink: 0;
  width: 3px;
  height: 30px;
  border-radius: 2px;
  background: var(--main);
}
#reform .last-txt-badge::before {
  margin: 0 18px 0 0;
  rotate: -28deg;
}
#reform .last-txt-badge::after {
  margin: 0 0 0 18px;
  rotate: 28deg;
}
/* 削減額にマーカー */
#reform .last-txt-badge .amount {
  padding: 0 4px;
  background: linear-gradient(transparent 66%, #ffd9a8 66%);
}
#reform .last-txt-badge .txt {
  align-self: flex-end;
  padding: 0 0 6px;
}
#reform .cost-note {
  border-radius: 16px;
}

/* ---------- 選ばれる理由（断熱診断ページのポイントと同じカード） ---------- */
#reform .reason-list {
  gap: 30px;
}
#reform .reason-list-box {
  background: #fff;
  padding: 50px 36px 40px;
  border-radius: 16px;
  box-shadow: 0 10px 30px rgba(109, 60, 20, 0.08);
}
#reform .reason-list-box .num {
  left: 30px;
  top: -16px;
  padding: 2px 18px;
  border-radius: 30px;
  background: var(--main);
  color: #fff;
  font-weight: 500;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
#reform .reason-list-image img {
  display: block;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  border-radius: 10px;
}
#reform .reason-area .catch-s {
  padding: 20px 0 16px;
  border-bottom: 1px solid #eee;
}
#reform .reason-area .basic-txt {
  padding: 16px 0 0;
}

/* ---------- プランごとの色分け ---------- */
/* メインビジュアル・魅力・サービス内容だけ、トップページと同じプランカラー（common.css の --c-*）にする。
   費用より下と、戸建てまるごと・倉庫工場はオレンジのまま */
#reform.floor {
  --plan: var(--c-floor);
}
#reform.window {
  --plan: var(--c-window);
}
#reform.door {
  --plan: var(--c-door);
}
#reform.roof {
  --plan: var(--c-roof);
}
/* .sp-block はSPで「こんな方におすすめ」をメインビジュアルの下に出している部分 */
#reform:is(.floor, .window, .door, .roof)
  :is(.subpage-header, .sp-block, .about-area, .charm-area, .service-area) {
  --main: var(--plan);
  --orange: var(--plan);
  --light-orange: color-mix(in srgb, var(--plan) 18%, #fff);
  --grade-orange: linear-gradient(
    180deg,
    var(--light-orange) 0%,
    transparent 100%
  );
}
/* 背景の柄はそのまま、色味だけプランカラーに寄せる */
#reform:is(.floor, .window, .door, .roof) .subpage-header {
  background-color: color-mix(in srgb, var(--plan) 16%, #fff);
  background-blend-mode: luminosity;
}
#reform:is(.floor, .window, .door, .roof) .subpage-header::before {
  background-blend-mode: inherit;
}
/* 見出し横の飾りはオレンジのSVGなので、マスクにして色を変える */
#reform:is(.floor, .window, .door, .roof) .service-block .txt-box .ttl:before {
  background: currentColor;
  -webkit-mask: url(../img/deco-orange.svg) no-repeat center / contain;
  mask: url(../img/deco-orange.svg) no-repeat center / contain;
}

@media screen and (max-width: 768px) {
  /* 番号バッジはカードの左上の角に掛けて、見出しと離す */
  #reform .charm-list-block .txt-box .num {
    width: 54px;
    height: 54px;
    left: -14px;
    top: -14px;
    padding: 4px 4px 0;
  }
  #reform .charm-list-block .txt-box .num span {
    font-size: 2.2rem;
  }
  #reform .charm-list-block .txt-box {
    border-radius: 12px;
  }

  #reform .service-block {
    border-radius: 12px;
  }
  #reform .service-method {
    padding: 20px 20px 0;
  }
  #reform .service-method:last-child {
    padding-bottom: 24px;
  }

  #reform .value-block {
    margin: 30px 0 0;
    padding: 24px 16px 16px;
    border-radius: 12px;
  }
  #reform .value-ttl {
    gap: 8px;
    font-size: 2.2rem;
  }
  #reform .value-ttl::before,
  #reform .value-ttl::after {
    width: 22px;
  }
  #reform .value-list {
    flex-direction: column;
    gap: 16px;
    margin: 16px 0 0;
  }
  #reform .value-item,
  #reform .value-item:only-child {
    flex-direction: column;
    align-items: stretch;
    gap: 16px;
    padding: 16px;
    border-radius: 12px;
  }
  #reform .value-item:only-child .value-photos {
    width: auto;
  }
  #reform .value-photo figcaption {
    padding: 3px 10px;
    font-size: 1.2rem;
  }
  #reform .value-plus {
    width: 36px;
    height: 36px;
    margin: 0 -12px;
  }
  #reform .value-plus::before,
  #reform .value-plus::after {
    width: 13px;
  }
  #reform .value-list-ttl {
    font-size: 2.2rem;
  }
  #reform .value-list-price {
    flex-direction: column;
    width: 100%;
    margin: 14px 0 0;
  }
  #reform .value-list-price .label {
    justify-content: center;
    padding: 6px 0;
    font-size: 1.5rem;
  }
  #reform .value-list-price .body {
    justify-content: center;
    padding: 10px 10px 10px;
    font-size: 1.4rem;
  }
  #reform .value-list-price .body .s {
    width: 100%;
    text-align: center;
  }
  #reform .value-list-price .num {
    font-size: 4rem;
  }
  #reform .value-list-price .unit {
    font-size: 2.2rem;
  }
  #reform .cost-block,
  #reform .cost-note {
    border-radius: 12px;
  }
  #reform .cost-list {
    margin: 20px 0 0;
  }
  /* SPは上下に分ける */
  #reform .cost-block .last-txt {
    flex-direction: column;
    gap: 0;
    margin: 20px 0 24px;
    padding: 5px;
  }
  #reform .last-txt-main {
    flex-direction: column;
    gap: 6px;
    padding: 14px 10px 10px;
  }
  #reform .last-txt-main .lead {
    padding: 4px 14px;
    font-size: 1.3rem;
  }
  #reform .last-txt-main .price {
    font-size: 1.8rem;
  }
  #reform .last-txt-main .price .num {
    font-size: 3.4rem;
    padding: 0 3px;
  }
  #reform .last-txt-badge {
    padding: 8px 10px 10px;
    border-radius: 3px;
    font-size: 1.6rem;
  }
  #reform .last-txt-badge .amount .num {
    font-size: 3.4rem;
    padding: 0 3px;
  }
  /* 三角は下向きにして、下の白いパネルを指す */
  #reform .last-txt-main::after {
    left: 50%;
    top: calc(100% - 1px);
    translate: -50% 0;
    border-width: 11px 11px 0;
    border-color: var(--main) transparent transparent;
  }
  #reform .last-txt-badge {
    padding: 16px 10px 10px;
    outline-offset: -4px;
  }
  #reform .last-txt-badge::before,
  #reform .last-txt-badge::after {
    height: 22px;
  }
  #reform .last-txt-badge::before {
    margin: 0 10px 0 0;
  }
  #reform .last-txt-badge::after {
    margin: 0 0 0 10px;
  }
  #reform .last-txt-badge .txt {
    padding: 0 0 4px;
  }

  #reform .reason-list-box {
    padding: 36px 20px 24px;
  }
  #reform .reason-list-box .num {
    left: 20px;
  }
}

/* -----------------------------------------------------------
    跳ねる演出
    script.js が .cmn-fadeup / .cmn-popup に、画面へ入った時点で .cmn-effect-* を付ける。
    common.css のゆっくりした動きを、このページでは跳ねる動きに置き換えている。
    クラスの無い細かいパーツには reform.js が同じクラスを付ける。
-------------------------------------------------------------- */
:where(#reform) .cmn-fadeup,
:where(#reform) .cmn-popup {
  transform: none;
  transition: none;
}
/* 下からスッと出てそのまま止まる */
:where(#reform) .cmn-effect-fadeup {
  animation: reform-hop 0.6s cubic-bezier(0.165, 0.84, 0.44, 1)
    var(--pop-delay, 0s) backwards;
}
/* 少し拡大しながら出てそのまま止まる */
:where(#reform) .cmn-effect-popup {
  animation: reform-pop 0.5s cubic-bezier(0.165, 0.84, 0.44, 1)
    var(--pop-delay, 0s) backwards;
}
/* 横に並ぶカードは左から順番に */
:where(#reform)
  :is(
    .charm-list-block,
    .reason-list-box,
    .cost-list > div,
    .value-item
  ):nth-child(2) {
  --pop-delay: 0.12s;
}
:where(#reform)
  :is(
    .charm-list-block,
    .reason-list-box,
    .cost-list > div,
    .value-item
  ):nth-child(3) {
  --pop-delay: 0.24s;
}
/* カードが出たあとに、中の小さなパーツを遅れて弾ませる */
:where(#reform)
  :is(
    .charm-list-block .num,
    .reason-list-box .num,
    .flow-num,
    .value-plus,
    .cost-list > div,
    .cost-block .last-txt
  ).cmn-effect-popup {
  animation-delay: calc(var(--pop-delay, 0s) + 0.3s);
}
@keyframes reform-hop {
  0% {
    opacity: 0;
    translate: 0 24px;
  }
  100% {
    opacity: 1;
    translate: 0 0;
  }
}
@keyframes reform-pop {
  0% {
    opacity: 0;
    scale: 0.85;
  }
  100% {
    opacity: 1;
    scale: 1;
  }
}

@media (prefers-reduced-motion: reduce) {
  :where(#reform) .cmn-effect-fadeup,
  :where(#reform) .cmn-effect-popup {
    animation: none;
  }
}

/* -----------------------------------------------------------
    ページ内メニュー（SP）：リンクの文字サイズ
-------------------------------------------------------------- */
@media screen and (max-width: 768px) {
  #reform #header-service01 .nav-list li p {
    font-size: 1.5rem;
  }
}

/* -----------------------------------------------------------
    戸建てまるごと断熱：サービス内容の見出しの波線を左へゆっくり流す
    波の画像1枚分（高さ0.5remのときの幅）だけ動かしてループさせる
-------------------------------------------------------------- */
@media (prefers-reduced-motion: no-preference) {
  #reform.full .service-ttl.wave::after {
    animation: reform-wave 26s linear infinite;
  }
}

@keyframes reform-wave {
  to {
    -webkit-mask-position: calc(0.5rem * -1368 / 26.252) 0;
    mask-position: calc(0.5rem * -1368 / 26.252) 0;
  }
}
