@charset "UTF-8";
/*
UPDATE:
2020/03/11 selectの矢印をbackground-imageに変更
2020/03/24 smallタグまわりを修正
2020/05/30 CSS変数を設定
2020/11/30 .sns_iconsのopacity値を修正
2020/12/06 .btnをdisplay:flexに変更（2行のテキストに対応するため）
2020/12/14 .icon_no を追加
2020/12/21 クラス名の記号をアンダーバーに統一（WordPressで出力されるクラスは除く）
2020/12/24 .breadcrumbs をclass.css から style.cssに移動
2021/01/27 CSS変数を導入
2021/03/27 .entry-content〜をstyle.css から class.cssに移動
2021/04/22 .entry-content .btn のマージンを削除
2021/04/22 .archive_line > li に align-items: center を追加
2021/04/25 .entry-content〜をclass.css から style.cssに戻した（他のクラスとぶつかるため）
2021/04/25 .entry-content〜をmain〜に変更
2021/07/22 .cat_list のフォントアイコンを削除

Breakpoint
@media screen and (max-width:959px) {}
@media screen and (max-width:559px) {}
*/

/* Material Icons - https://developers.google.com/fonts/docs/material_icons
-------------------------------------------------------------- */
.material-icons {
  font-family: "Material Icons";
  font-weight: normal;
  font-style: normal;
  font-size: 24px; /* Preferred icon size */
  display: inline-block;
  line-height: 1;
  text-transform: none;
  letter-spacing: normal;
  word-wrap: normal;
  white-space: nowrap;
  direction: ltr;

  /* Support for all WebKit browsers. */
  -webkit-font-smoothing: antialiased;
  /* Support for Safari and Chrome. */
  text-rendering: optimizeLegibility;

  /* Support for Firefox. */
  -moz-osx-font-smoothing: grayscale;

  /* Support for IE. */
  font-feature-settings: "liga";
}

/* Class
-------------------------------------------------------------- */
.serif {
  font-family: "ヒラギノ明朝 ProN W3", "Hiragino Mincho ProN W3", HiraMinProN-W3,
    "ヒラギノ明朝 ProN", "Hiragino Mincho ProN", "ヒラギノ明朝 Pro",
    "Hiragino Mincho Pro", "游明朝体", "YuMincho", "游明朝", "Yu Mincho",
    "HGS明朝E", "ＭＳ Ｐ明朝", "MS PMincho", serif;
}
.sans {
  font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue",
    HelveticaNeue, "Segoe UI", "Hiragino Kaku Gothic ProN", メイリオ, Meiryo,
    arial, sans-serif;
}
.noto {
  font-family: "Noto Sans JP";
}
.avenir {
  font-family: Avenir, "Segoe UI", sans-serif;
}

.subtext {
	color: var(--subtext);
  font-size: 0.9em;
}
.light_text {
  color: rgba(0, 0, 0, 0.5);
}
.dark_text {
  color: rgba(0, 0, 0, 0.9);
}

.border {
  border: solid 1px rgba(0, 0, 0, 0.1);
}
.border_none,
.border_0,
.bd0,
.noborder {
  border: none !important;
}
.marker {
  background: linear-gradient(transparent 50%, #ffff82 50%);
}

.relative {
  position: relative !important;
}
.absolute {
  position: absolute !important;
}
.fixed {
  position: fixed !important;
}

.center {
  text-align: center !important;
}
.align_l {
  text-align: left !important;
}
.align_r {
  text-align: right !important;
}

.inline {
  display: inline-block !important;
}
.block {
  display: block !important;
}
.none {
  display: none !important;
}
.hidden {
  overflow: hidden !important;
}
.nowrap {
  white-space: nowrap !important;
}

@media screen and (max-width: 959px) {
  .center_md {
    text-align: center !important;
  }
  .align_l_md {
    text-align: left !important;
  }
  .align_r_md {
    text-align: right !important;
  }
  .inline_md {
    display: inline-block !important;
  }
  .block_md {
    display: block !important;
  }
  .none_md {
    display: none !important;
  }
}
@media screen and (max-width: 559px) {
  .center_sm {
    text-align: center !important;
  }
  .align_l_sm {
    text-align: left !important;
  }
  .align_r_sm {
    text-align: right !important;
  }
  .inline_sm {
    display: inline-block !important;
  }
  .block_sm {
    display: block !important;
  }
  .none_sm {
    display: none !important;
  }
}

.normal {
  font-weight: 500 !important;
} /* for noto sans */
.bold {
  font-weight: 700 !important;
} /* for noto sans */

.wt100 {
  font-weight: 100;
}
.wt200 {
  font-weight: 200;
}
.wt300 {
  font-weight: 300;
}
.wt400 {
  font-weight: 400;
}
.wt500 {
  font-weight: 500;
}
.wt600 {
  font-weight: 600;
}
.wt700 {
  font-weight: 700;
}
.wt800 {
  font-weight: 800;
}
.wt900 {
  font-weight: 900;
}

.font400 {
  font-size: 4rem !important;
}
.font350 {
  font-size: 3.5rem !important;
}
.font300 {
  font-size: 3rem !important;
}
.font250 {
  font-size: 2.5rem !important;
}
.font200 {
  font-size: 2rem !important;
}
.font150 {
  font-size: 1.5rem !important;
}
.font140 {
  font-size: 1.4rem !important;
}
.font130 {
  font-size: 1.3rem !important;
}
.font120 {
  font-size: 1.2rem !important;
}
.font110 {
  font-size: 1.1rem !important;
}
.font100 {
  font-size: 1rem !important;
}
.font90 {
  font-size: 0.9rem !important;
}
.font80 {
  font-size: 0.8rem !important;
}
.font70 {
  font-size: 0.7rem !important;
}
@media screen and (max-width: 559px) {
  .font400sm {
    font-size: 4rem !important;
  }
  .font350sm {
    font-size: 3.5rem !important;
  }
  .font300sm {
    font-size: 3rem !important;
  }
  .font250sm {
    font-size: 2.5rem !important;
  }
  .font200sm {
    font-size: 2rem !important;
  }
  .font150sm {
    font-size: 1.5rem !important;
  }
  .font140sm {
    font-size: 1.4rem !important;
  }
  .font130sm {
    font-size: 1.3rem !important;
  }
  .font120sm {
    font-size: 1.2rem !important;
  }
  .font110sm {
    font-size: 1.1rem !important;
  }
  .font100sm {
    font-size: 1rem !important;
  }
  .font90sm {
    font-size: 0.9rem !important;
  }
  .font80sm {
    font-size: 0.8rem !important;
  }
  .font70sm {
    font-size: 0.7rem !important;
  }
}

.color-main {color: var(--main) !important;}
.color-text {color: var(--text) !important;}
.color-black {color: #000000 !important;}
.color-white {color: #fff !important;}
.color-gray {color: var(--subtext) !important;}
.color-blue {color: var(--blue) !important;}
.color-orange {color: var(--orange) !important;}
.color-red {color: var(--red) !important;}

.black {
  color: #000000;
}
.white {
  color: #ffffff;
}
.gray {
  color: #646464;
}
.grey {
  color: #646464;
}
.red {
  color: #ff6666;
}
/* .pink {
  color: #ff6699;
}
.blue {
  color: #6495ed;
}
.green {
  color: #779100;
}
.orange {
  color: #ff8c00;
}
.purple {
  color: #800080;
}
.yellow {
  color: #ffff00;
}
.brown {
  color: #8b4513;
} */

.text-black {color: #000000 !important;}
.text-white {color: #ffffff !important;}
.text-gray {color: #646464 !important;}
.text-red {color: #ff6666 !important;}
.text-pink {color: #ff6699 !important;}
.text-blue {color: #6495ed !important;}
.text-green {color: #779100 !important;}
.text-orange {color: #ff8c00 !important;}
.text-purple {color: #800080 !important;}
.text-yellow {color: #ffff00 !important;}
.text-brown {color: #8b4513 !important;}

.bg-black {background-color: #000000 !important;}
.bg-white {background-color: #ffffff !important;}
.bg-gray {background-color: var(--gray) !important;}
.bg-blue {background-color: hsl(200deg 100% 95%) !important;}
.bg-green {background-color: hsl(110deg 100% 95%) !important;}
.bg-orange {background-color: hsl(50deg 100% 90%) !important;}
.bg-red {background-color: hsl(0deg 100% 98%) !important;}

.mg0 {margin: 0px !important;}
.mgt0 {margin-top: 0px !important;}
.mgb0 {margin-bottom: 0px !important;}
.mgl0 {margin-left: 0px !important;}
.mgr0 {margin-right: 0px !important;}
.mgtb0 {margin-top: 0px !important;margin-bottom: 0px !important;}
.mg1 {margin: 8px !important;}
.mgt1 {margin-top: 8px !important;}
.mgb1 {margin-bottom: 8px !important;}
.mgl1 {margin-left: 8px !important;}
.mgr1 {margin-right: 8px !important;}
.mgtb1 {margin-top: 8px !important;margin-bottom: 8px !important;}
.mg2 {margin: 16px !important;}
.mgt2 {margin-top: 16px !important;}
.mgb2 {margin-bottom: 16px !important;}
.mgl2 {margin-left: 16px !important;}
.mgr2 {margin-right: 16px !important;}
.mgtb2 {margin-top: 16px !important;margin-bottom: 16px !important;}
.mg3 {margin: 32px !important;}
.mgt3 {margin-top: 32px !important;}
.mgb3 {margin-bottom: 32px !important;}
.mgl3 {margin-left: 32px !important;}
.mgr3 {margin-right: 32px !important;}
.mgtb3 {margin-top: 32px !important;margin-bottom: 32px !important;}
.mg4 {margin: 64px !important;}
.mgt4 {margin-top: 64px !important;}
.mgb4 {margin-bottom: 64px !important;}
.mgl4 {margin-left: 64px !important;}
.mgr4 {margin-right: 64px !important;}
.mgtb4 {margin-top: 64px !important;margin-bottom: 64px !important;}
.mg5 {margin: 128px !important;}
.mgt5 {margin-top: 128px !important;}
.mgb5 {margin-bottom: 128px !important;}
.mgl5 {margin-left: 128px !important;}
.mgr5 {margin-right: 128px !important;}
.mgtb5 {margin-top: 128px !important;margin-bottom: 128px !important;}
.mg6 {margin: 256px !important;}
.mgt6 {margin-top: 256px !important;}
.mgb6 {margin-bottom: 256px !important;}
.mgl6 {margin-left: 256px !important;}
.mgr6 {margin-right: 256px !important;}
.mgtb6 {margin-top: 256px !important;margin-bottom: 256px !important;}

.mg10 {margin: 10px !important;}
.mgt10 {margin-top: 10px !important;}
.mgb10 {margin-bottom: 10px !important;}
.mgl10 {margin-left: 10px !important;}
.mgr10 {margin-right: 10px !important;}
.mg20 {margin: 20px !important;}
.mgt20 {margin-top: 20px !important;}
.mgb20 {margin-bottom: 20px !important;}
.mgl20 {margin-left: 20px !important;}
.mgr20 {margin-right: 20px !important;}
.mg30 {margin: 30px !important;}
.mgt30 {margin-top: 30px !important;}
.mgb30 {margin-bottom: 30px !important;}
.mgl30 {margin-left: 30px !important;}
.mgr30 {margin-right: 30px !important;}
.mg40 {margin: 40px !important;}
.mgt40 {margin-top: 40px !important;}
.mgb40 {margin-bottom: 40px !important;}
.mgl40 {margin-left: 40px !important;}
.mgr40 {margin-right: 40px !important;}
.mg50 {margin: 50px !important;}
.mgt50 {margin-top: 50px !important;}
.mgb50 {margin-bottom: 50px !important;}
.mgl50 {margin-left: 50px !important;}
.mgr50 {margin-right: 50px !important;}
.mg_auto {
  margin-left: auto;
  margin-right: auto;
}

.pd0 {padding: 0px !important;}
.pdt0 {padding-top: 0px !important;}
.pdb0 {padding-bottom: 0px !important;}
.pdl0 {padding-left: 0px !important;}
.pdr0 {padding-right: 0px !important;}
.pd1 {padding: 8px !important;}
.pdt1 {padding-top: 8px !important;}
.pdb1 {padding-bottom: 8px !important;}
.pdl1 {padding-left: 8px !important;}
.pdr1 {padding-right: 8px !important;}
.pdtb1 {padding-top: 8px !important;padding-bottom: 8px !important;}
.pd2 {padding: 16px !important;}
.pdt2 {padding-top: 16px !important;}
.pdb2 {padding-bottom: 16px !important;}
.pdl2 {padding-left: 16px !important;}
.pdr2 {padding-right: 16px !important;}
.pdtb2 {padding-top: 16px !important;padding-bottom: 16px !important;}
.pd3 {padding: 32px !important;}
.pdt3 {padding-top: 32px !important;}
.pdb3 {padding-bottom: 32px !important;}
.pdl3 {padding-left: 32px !important;}
.pdr3 {padding-right: 32px !important;}
.pdtb3 {padding-top: 32px !important;padding-bottom: 32px !important;}
.pd4 {padding: 64px !important;}
.pdt4 {padding-top: 64px !important;}
.pdb4 {padding-bottom: 64px !important;}
.pdl4 {padding-left: 64px !important;}
.pdr4 {padding-right: 64px !important;}
.pdtb4 {padding-top: 64px !important;padding-bottom: 64px !important;}
.pd5 {padding: 128px !important;}
.pdt5 {padding-top: 128px !important;}
.pdb5 {padding-bottom: 128px !important;}
.pdl5 {padding-left: 128px !important;}
.pdr5 {padding-right: 128px !important;}
.pdtb5 {padding-top: 128px !important;padding-bottom: 128px !important;}
.pd6 {padding: 256px !important;}
.pdt6 {padding-top: 256px !important;}
.pdb6 {padding-bottom: 256px !important;}
.pdl6 {padding-left: 256px !important;}
.pdr6 {padding-right: 256px !important;}
.pdtb6 {padding-top: 256px !important;padding-bottom: 256px !important;}

.pd10 {padding: 10px !important;}
.pdt10 {padding-top: 10px !important;}
.pdb10 {padding-bottom: 10px !important;}
.pdl10 {padding-left: 10px !important;}
.pdr10 {padding-right: 10px !important;}
.pd20 {padding: 20px !important;}
.pdt20 {padding-top: 20px !important;}
.pdb20 {padding-bottom: 20px !important;}
.pdl20 {padding-left: 20px !important;}
.pdr20 {padding-right: 20px !important;}
.pd30 {padding: 30px !important;}
.pdt30 {padding-top: 30px !important;}
.pdb30 {padding-bottom: 30px !important;}
.pdl30 {padding-left: 30px !important;}
.pdr30 {padding-right: 30px !important;}
.pd40 {padding: 40px !important;}
.pdt40 {padding-top: 40px !important;}
.pdb40 {padding-bottom: 40px !important;}
.pdl40 {padding-left: 40px !important;}
.pdr40 {padding-right: 40px !important;}
.pd50 {padding: 50px !important;}
.pdt50 {padding-top: 50px !important;}
.pdb50 {padding-bottom: 50px !important;}
.pdl50 {padding-left: 50px !important;}
.pdr50 {padding-right: 50px !important;}
.pd100,
.pd_box,
.pd_sect {
  padding-top: 100px;
  padding-bottom: 100px;
}

.line100 {
  line-height: 1;
}
.line110 {
  line-height: 1.1;
}
.line120 {
  line-height: 1.2;
}
.line130 {
  line-height: 1.3;
}
.line140 {
  line-height: 1.4;
}
.line150 {
  line-height: 1.5;
}
.line160 {
  line-height: 1.6;
}
.line170 {
  line-height: 1.7;
}
.line180 {
  line-height: 1.8;
}
.line190 {
  line-height: 1.9;
}
.line200 {
  line-height: 120;
}

.width50 {
  width: 50%;
}
.width100 {
  width: 100%;
  box-sizing: border-box;
}

.radius5 {
  border-radius: 5px;
}
.radius10 {
  border-radius: 10px;
}
.radius20 {
  border-radius: 20px;
}
.radius100 {
  border-radius: 100px;
}

.opacity5 {
  opacity: 0.5;
}

.shadow {
  box-shadow: 0 12px 10px -6px rgba(0, 0, 0, 0.1); /*浮いた感じの影*/
}
.shadow_none {
  box-shadow: none !important;
}

.sticky {
  position: -webkit-sticky;
  position: sticky;
  top: 0;
  z-index: 2;
}

.flex {
  display: flex;
  flex-wrap: wrap;
  margin-bottom: -32px;
  margin-left: -32px;
}
.nowrap {
  flex-wrap: nowrap;
}
.flex_nowrap {
  /* flex + nowrap の方が取り回しが良いのでこちらはそのうち削除 */
  display: flex;
  flex-wrap: nowrap;
}
.grow_1 {
  flex-grow: 1;
}
.shrink_0 {
  flex-shrink: 0;
}
.reverse {
  flex-direction: row-reverse;
}
.align_c,
.align-c {
  align-items: center;
}
.align_t {
  align-items: flex-start;
}
.align_b {
  align-items: flex-end;
}

.flex > div,
.flex > p,
.flex > article,
.flex > section,
.flex > aside,
.flex > li,
.flex > dl,
.flex > span,
.flex > img {
  flex-grow: 0;
  flex-shrink: 1;
  flex-basis: auto;
  margin-bottom: 32px;
  margin-left: 32px;
  box-sizing: border-box;
  list-style: none;
}
/* imgをflexアイテム化した際の処理 */
.flex > img {
  height: 100%; /* 画像のアスペクト比を保持 */
}
.flex > img + br {
  display: none; /* 自動挿入されるbrを削除 */
}
.flex > img + br + img {
  margin-top: 0;
}

.flex > .col1 {
  flex-basis: calc(100 / 12 * 1% - 32px);
  width: calc(100 / 12 * 1% - 32px);
}
.flex > .col2 {
  flex-basis: calc(100 / 12 * 2% - 32px);
  width: calc(100 / 12 * 2% - 32px);
}
.flex > .col3 {
  flex-basis: calc(100 / 12 * 3% - 32px);
  width: calc(100 / 12 * 3% - 32px);
}
.flex > .col4 {
  flex-basis: calc(100 / 12 * 4% - 32px);
  width: calc(100 / 12 * 4% - 32px);
}
.flex > .col5 {
  flex-basis: calc(100 / 12 * 5% - 32px);
  width: calc(100 / 12 * 5% - 32px);
}
.flex > .col6 {
  flex-basis: calc(100 / 12 * 6% - 32px);
  width: calc(100 / 12 * 6% - 32px);
}
.flex > .col7 {
  flex-basis: calc(100 / 12 * 7% - 32px);
  width: calc(100 / 12 * 7% - 32px);
}
.flex > .col8 {
  flex-basis: calc(100 / 12 * 8% - 32px);
  width: calc(100 / 12 * 8% - 32px);
}
.flex > .col9 {
  flex-basis: calc(100 / 12 * 9% - 32px);
  width: calc(100 / 12 * 9% - 32px);
}
.flex > .col10 {
  flex-basis: calc(100 / 12 * 10% - 32px);
  width: calc(100 / 12 * 10% - 32px);
}
.flex > .col11 {
  flex-basis: calc(100 / 12 * 11% - 32px);
  width: calc(100 / 12 * 11% - 32px);
}
.flex > .col12 {
  flex-basis: calc(100 / 12 * 12% - 32px);
  width: calc(100 / 12 * 12% - 32px);
}
@media screen and (max-width: 959px) {
  .flex > .col1md {
    flex-basis: calc(100 / 12 * 1% - 32px);
    width: calc(100 / 12 * 1% - 32px);
  }
  .flex > .col2md {
    flex-basis: calc(100 / 12 * 2% - 32px);
    width: calc(100 / 12 * 2% - 32px);
  }
  .flex > .col3md {
    flex-basis: calc(100 / 12 * 3% - 32px);
    width: calc(100 / 12 * 3% - 32px);
  }
  .flex > .col4md {
    flex-basis: calc(100 / 12 * 4% - 32px);
    width: calc(100 / 12 * 4% - 32px);
  }
  .flex > .col5md {
    flex-basis: calc(100 / 12 * 5% - 32px);
    width: calc(100 / 12 * 5% - 32px);
  }
  .flex > .col6md {
    flex-basis: calc(100 / 12 * 6% - 32px);
    width: calc(100 / 12 * 6% - 32px);
  }
  .flex > .col7md {
    flex-basis: calc(100 / 12 * 7% - 32px);
    width: calc(100 / 12 * 7% - 32px);
  }
  .flex > .col8md {
    flex-basis: calc(100 / 12 * 8% - 32px);
    width: calc(100 / 12 * 8% - 32px);
  }
  .flex > .col9md {
    flex-basis: calc(100 / 12 * 9% - 32px);
    width: calc(100 / 12 * 9% - 32px);
  }
  .flex > .col10md {
    flex-basis: calc(100 / 12 * 10% - 32px);
    width: calc(100 / 12 * 10% - 32px);
  }
  .flex > .col11md {
    flex-basis: calc(100 / 12 * 11% - 32px);
    width: calc(100 / 12 * 11% - 32px);
  }
  .flex > .col12md {
    flex-basis: calc(100 / 12 * 12% - 24px);
    width: calc(100 / 12 * 12% - 24px);
  }
}
@media screen and (max-width: 559px) {
  .flex > .col1sm {
    flex-basis: calc(100 / 12 * 1% - 32px);
    width: calc(100 / 12 * 1% - 32px);
  }
  .flex > .col2sm {
    flex-basis: calc(100 / 12 * 2% - 32px);
    width: calc(100 / 12 * 2% - 32px);
  }
  .flex > .col3sm {
    flex-basis: calc(100 / 12 * 3% - 32px);
    width: calc(100 / 12 * 3% - 32px);
  }
  .flex > .col4sm {
    flex-basis: calc(100 / 12 * 4% - 32px);
    width: calc(100 / 12 * 4% - 32px);
  }
  .flex > .col5sm {
    flex-basis: calc(100 / 12 * 5% - 32px);
    width: calc(100 / 12 * 5% - 32px);
  }
  .flex > .col6sm {
    flex-basis: calc(100 / 12 * 6% - 32px);
    width: calc(100 / 12 * 6% - 32px);
  }
  .flex > .col7sm {
    flex-basis: calc(100 / 12 * 7% - 32px);
    width: calc(100 / 12 * 7% - 32px);
  }
  .flex > .col8sm {
    flex-basis: calc(100 / 12 * 8% - 32px);
    width: calc(100 / 12 * 8% - 32px);
  }
  .flex > .col9sm {
    flex-basis: calc(100 / 12 * 9% - 32px);
    width: calc(100 / 12 * 9% - 32px);
  }
  .flex > .col10sm {
    flex-basis: calc(100 / 12 * 10% - 32px);
    width: calc(100 / 12 * 10% - 32px);
  }
  .flex > .col11sm {
    flex-basis: calc(100 / 12 * 11% - 32px);
    width: calc(100 / 12 * 11% - 32px);
  }
  .flex > .col12sm {
    flex-basis: calc(100 / 12 * 12% - 24px);
    width: calc(100 / 12 * 12% - 24px);
  }
}

.grid {
	display: grid;
	gap: 32px;
	grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
}
.cols-1-2 {grid-template-columns: 1fr 2fr;}/* 1/3 + 2/3 */
.cols-1-3 {grid-template-columns: 1fr 3fr;}/* 1/4 + 3/4 */

.cols-2-auto {grid-template-columns: repeat(2, auto);justify-content: start;} /* 幅可変2分割 */
.cols-3-auto {grid-template-columns: repeat(3, auto);justify-content: start;} /* 幅可変3分割 */

.cols-1 {grid-template-columns: repeat(1, minmax(0, 1fr));}
.cols-2 {grid-template-columns: repeat(2, minmax(0, 1fr));}
.cols-3 {grid-template-columns: repeat(3, minmax(0, 1fr));}
.cols-4 {grid-template-columns: repeat(4, minmax(0, 1fr));}
.cols-5 {grid-template-columns: repeat(5, minmax(0, 1fr));}
.cols-6 {grid-template-columns: repeat(6, minmax(0, 1fr));}
.cols-7 {grid-template-columns: repeat(7, minmax(0, 1fr));}
.cols-8 {grid-template-columns: repeat(8, minmax(0, 1fr));}
.cols-9 {grid-template-columns: repeat(9, minmax(0, 1fr));}
.cols-10 {grid-template-columns: repeat(10, minmax(0, 1fr));}
.cols-11 {grid-template-columns: repeat(11, minmax(0, 1fr));}
.cols-12 {grid-template-columns: repeat(12, minmax(0, 1fr));}
.cols-none {grid-template-columns: none;}

.gap-0 {gap:0px;}
.gap-8 {gap:8px;}
.gap-16 {gap:16px;}
.gap-32 {gap:32px;}

@media screen and (max-width: 1023px) {
	.cols-1-md {grid-template-columns: repeat(1, minmax(0, 1fr));}
	.cols-2-md {grid-template-columns: repeat(2, minmax(0, 1fr));}
	.cols-3-md {grid-template-columns: repeat(3, minmax(0, 1fr));}
	.cols-4-md {grid-template-columns: repeat(4, minmax(0, 1fr));}
	.cols-5-md {grid-template-columns: repeat(5, minmax(0, 1fr));}
	.cols-6-md {grid-template-columns: repeat(6, minmax(0, 1fr));}
	.cols-7-md {grid-template-columns: repeat(7, minmax(0, 1fr));}
	.cols-8-md {grid-template-columns: repeat(8, minmax(0, 1fr));}
	.cols-9-md {grid-template-columns: repeat(9, minmax(0, 1fr));}
	.cols-10-md {grid-template-columns: repeat(10, minmax(0, 1fr));}
	.cols-11-md {grid-template-columns: repeat(11, minmax(0, 1fr));}
	.cols-12-md {grid-template-columns: repeat(12, minmax(0, 1fr));}
	.cols-none-md {grid-template-columns: none;}
	.gap-16-md {gap:16px;}
	.gap-32-md {gap:32px;}
}
@media screen and (max-width: 559px) {
	.cols-1-sm {grid-template-columns: repeat(1, minmax(0, 1fr));}
	.cols-2-sm {grid-template-columns: repeat(2, minmax(0, 1fr));}
	.cols-3-sm {grid-template-columns: repeat(3, minmax(0, 1fr));}
	.cols-4-sm {grid-template-columns: repeat(4, minmax(0, 1fr));}
	.cols-5-sm {grid-template-columns: repeat(5, minmax(0, 1fr));}
	.cols-6-sm {grid-template-columns: repeat(6, minmax(0, 1fr));}
	.cols-7-sm {grid-template-columns: repeat(7, minmax(0, 1fr));}
	.cols-8-sm {grid-template-columns: repeat(8, minmax(0, 1fr));}
	.cols-9-sm {grid-template-columns: repeat(9, minmax(0, 1fr));}
	.cols-10-sm {grid-template-columns: repeat(10, minmax(0, 1fr));}
	.cols-11-sm {grid-template-columns: repeat(11, minmax(0, 1fr));}
	.cols-12-sm {grid-template-columns: repeat(12, minmax(0, 1fr));}
	.cols-none-sm {grid-template-columns: none;}
	.gap-16-sm {gap:16px;}
	.gap-32-sm {gap:32px;}
}

.grid > div,
.grid > p,
.grid > article,
.grid > section,
.grid > aside,
.grid > figure,
.grid > li,
.grid > dl,
.grid > span,
.grid > img{
	/* flex-grow: 0;
	flex-shrink: 1;
	flex-basis: auto; */
	/* flex-grow: 1; */ /* カラム落ちしたボックスが伸びちゃう */
	margin-left: 0; /* liの左余白をリセット */
	list-style: none;
}
.grid.reverse > *:first-child {
	order: 2;
}
@media screen and (max-width: 559px) {
	.grid.reverse > *:first-child {
		order: 0; /* reset */
	}
}

/* テーブル
-------------------------------------------------------------- */
table.layout_fixed {
  table-layout: fixed; /* 幅固定 */
}
@media screen and (max-width: 959px) {
  table.layout_fixed {
    table-layout: auto;
  }
}

table.price tr th:last-child,
table.price tr td:last-child {
  text-align: right;
  white-space: nowrap;
}

@media screen and (max-width: 959px) {
  .scroll_table,
  .scroll_table caption,
  .scroll_table thead th,
  .scroll_table tbody th,
  .scroll_table tbody td {
    display: block;
  }
  .scroll_table thead {
    display: block;
    float: left;
  }
  .scroll_table tbody {
    display: flex;
    width: auto;
    overflow-x: auto;
    white-space: nowrap;
  }
  .scroll_table th:not(:last-child),
  .scroll_table td:not(:last-child) {
    border-bottom: none;
  }
  .scroll_table thead th {
    text-align: left;
  }
  .scroll_table tbody th,
  .scroll_table tbody td {
    border-left: none;
  }
}

.sticky_table {
  display: block;
  width: 100%;
  overflow: auto;
  font-size: 0.85rem;
}
.sticky_table caption {
  position: -webkit-sticky;
  position: sticky;
  left: 0;
  display: block;
  text-align: left;
}
.sticky_table thead {
  display: none;
}
.sticky_table tbody {
  display: table;
  width: 100%;
  position: relative;
}
.sticky_table tr th:first-child {
  position: -webkit-sticky;
  position: sticky;
  left: 0;
  text-align: left;
}
.sticky_table tr th:only-of-type {
  /* 唯一のth要素に適用（見出し行には適用しない） */
  min-width: 200px;
}
@media screen and (max-width: 559px) {
  .sticky_table tr th:only-of-type {
    min-width: 100px;
  }
}
.sticky_table td {
  z-index: -1;
  min-width: 100px; /* テキストが折り返されて表が縦に長くなるのを回避 */
}

/* 見出し固定テーブル */
.sticky-table {
	position: relative;
	overflow: auto; /* macOSのスクロールバーはOS設定に依存するため常に表示されるわけではない */
  /* max-height: 80vh; */ /* 有効にした場合、この高さを超える表は見出し行が固定される */
  /* overscroll-behavior-y: none; */ /* スクロールバウンスを無効化・Safari16以上 */
}
@media screen and (max-width: 559px) {
	.sticky-table.nowrap {
		white-space: normal;
	}
}
/* テスト中
.sticky-table::after {
	content: "スクロールできます";
	display: block;
	position: sticky;
	position: absolute;
	top: 0;
	bottom: 0;
	left: 0;
	z-index: 2;
	width: 100%;
	padding: 8px;
	background-color: rgb(0 0 0 / .5);
	text-align: center;
	color: white;
	font-size: .8rem;
} */
.sticky-table table {
	table-layout: auto;
	border-collapse: separate; /* 見出し固定時にボーダーが表示されなかったりセルの位置がずれたりするのを回避 */
	position: relative;
	width: 100%;
	/* font-size: 0.9rem; */
	z-index: -1;/* 見出し固定時にiOSでスクロールバーが隠れるのを回避 */
}
.sticky-table caption {
	position: sticky;
	left: 0;
	width: fit-content;
	text-align: left;
}
.sticky-table tr{
	border: none;
}
.sticky-table th,
.sticky-table td {
	min-width: 80px; /* 日本語テキストが一文字ずつ折り返されて表が縦長になるのを回避（table-layout:autoではoverflow-wrapが効かないため） */
	border-bottom: solid 1px var(--border);
}
.sticky-table th {
	position: sticky;
	background-color: var(--base); /* must for sticky */
  font-weight: bold;
}
.sticky-table thead th {
	top: 0;
	z-index: 1; /* tbodyのセルより前面に表示 */
}
.sticky-table tbody th {
	left: 0;
}
.sticky-table thead th:first-child {
	left: 0;
  z-index: 2; /* tbodyのthより前面に表示 */
}

/* 画像のトリミング
-------------------------------------------------------------- */
.rectangle {
  position: relative;
  width: 100%;
  padding-top: 61.8%; /*Golden Ratio*/
  overflow: hidden;
}
.square,
.circle {
  position: relative;
  width: 100%;
  padding-top: 100%;
  overflow: hidden;
}
.circle {
  border-radius: 999px;
}
.rectangle img,
.square img,
.circle img {
  position: absolute;
  /* top: 0;
	left: 0; */
  top: 50%;
  left: 50%;
  transform: translateY(-50%) translateX(-50%);
  display: block;
  min-width: 100%; /* 最低値を100%にすることで縦長・横長ともに対応できる */
  min-height: 100%;
  margin: 0;
  object-fit: cover;
  object-position: 50% 50%;
  font-family: "object-fit:cover;object-position: 50% 0%;"; /*for IE*/
}
.circle img {
  /* border-radius: 999px; imgに指定すると縦長画像に対応できない */
  box-shadow: none;
}

/* iframe 埋め込み */
.youtube {
  /*レスポンシブ化*/
  position: relative;
  width: 100%;
  padding-top: 56.25%;
}
.youtube iframe {
  position: absolute;
  top: 0;
  right: 0;
  width: 100% !important;
  height: 100% !important;
}
.twitter {
  margin: 0px auto;
  width: 500px;
  max-width: 100%;
  border: solid 1px rgba(0, 0, 0, 0.1);
}
.facebook {
  margin: 0px auto;
}

/* ボタン（ a / input / button ）
-------------------------------------------------------------- */
.btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  margin-top: 2rem;
  padding: 1em 2em;
  text-align: left; /* 複数行テキストを左揃え */
  line-height: 1.4;
  font-weight: 700;
  text-decoration: none !important;
  outline: 0; /*for input*/
  -webkit-appearance: none;
  transition: 0.3s;
  box-sizing: border-box;
  text-decoration: none;
  /* border-radius: 2px; */
  border: none;
  background: transparent;
  color: inherit;
}
.btn.full {
  width: 100%; /* for input */
  display: flex; /* for input */
  justify-content: center;
}
.btn.mini {
  padding: 0.8em 1.6em;
  font-size: 90%;
}
.btn {
  color: #ffffff;
  background-color: var(--main);
  border: solid 1px var(--main);
}
.btn.invert {
  color: var(--main);
  background-color: transparent;
}
.btn.white {
  color: #ffffff;
  background-color: rgba(255, 255, 255, 0.1);
  border: solid 1px #ffffff;
}
.btn.black {
  color: #555555;
  background-color: rgba(255, 255, 255, 0.1);
  border: solid 1px #555555;
}
.btn.orange {
  color: #ffffff;
  background-color: #ff8a00;
  border: solid 1px #ff8a00;
}
.btn input {
  color: inherit;
  border: none;
  background: transparent;
}

.btn:hover {
  color: var(--main);
  background-color: transparent;
}
.btn.invert:hover {
  color: #ffffff;
  background-color: var(--main);
}
.btn.white:hover {
  color: var(--main);
  background-color: #ffffff;
}
.btn.black:hover {
  color: #ffffff;
  background-color: #555555;
}
.btn.orange:hover {
  color: #ff8a00;
  background-color: transparent;
}

.btn::before {
  color: #ffffff;
}
.btn.invert::before {
  color: var(--main);
}
.btn.white::before {
  color: #ffffff;
}
.btn.black::before {
  color: #555555;
}
.btn.orange::before {
  color: #ffffff;
}

.btn:hover::before {
  color: var(--main);
}
.btn.invert:hover::before {
  color: #ffffff;
}
.btn.white:hover::before {
  color: var(--main);
}
.btn.black:hover::before {
  color: #ffffff;
}
.btn.orange:hover::before {
  color: #ff8a00;
}

/* icon */
.btn::before {
  margin-right: 1em;
  transition: 0.2s;
  font-family: "Font Awesome 5 Free";
  font-style: normal;
  font-variant: normal;
  font-weight: bold;
  text-rendering: auto;
  content: "\f0da"; /* caret-right ▶ */
}
.btn.mail::before {
  content: "\f0e0";
}
.btn.cal::before {
  content: "\f073";
}
.btn.reserve::before {
  content: "\f274";
}
.btn.download::before {
  content: "\f019";
}
.no_icon::before {
  display: none;
}
.no_icon i {
  margin-right: 1em;
  transition: 0.2s;
}
/* icon:hover */
.btn:hover::before {
  transform: translate(0.5em, 0); /* 右方向に移動 */
}
.btn.download:hover::before {
  transform: translateY(
    8px
  ); /* transformの位置はそのまま（transformで下移動させるとブレる） */
}
.btn.mail:hover::before,
.btn.cal:hover::before,
.btn.reserve:hover::before {
  transform: translate(0, 0) scale(1.5, 1.5); /* 拡大 */
}
.no_icon:hover i {
  transform: scale(1.5, 1.5); /* 拡大 */
}
/*
.btn.no-icon:before {content: "";padding-right:0px;}
.btn.envelope:before {content: "\f0e0";}
.btn.caret-down:before {content: "\f0d7";}
.btn.external-link:before {content: "\f35d";}
*/

/* shadow */
/* .btn.solid::before,
.btn.solid::after {
  content: '';
  position: absolute;
  background-color: var(--main);
  transition: 0.2s ease 0s;
  opacity: .5;
  opacity: 1;
}
.btn.solid::before {
  bottom: -7px;
  right: -23px;
  width: 100%;
  height: 1px;
}
.btn.solid::after {
  top: 7px;
  right: -7px;
  width: 1px;
  height: 100%;
}
.btn.solid:hover::before {
  width: 0%;
}
.btn.solid:hover::after {
  height: 0%;
} */

.btn.solid:hover {
  transform: translateX(4px) translateY(4px); /* 影の位置まで移動 */
}
.btn.solid::after {
  content: "";
  position: absolute;
  top: 7px;
  left: 7px;
  width: 100%;
  height: 100%;
  background: transparent;
  border-right: solid 1px var(--main);
  border-bottom: solid 1px var(--main);
  transition: 0.2s;
  opacity: 1;
}
.btn.solid:hover::after {
  opacity: 0;
  top: 0;
  left: 0;
}

.image-btn {
  display: block;
  padding: 8px;
  border: 2px solid #ccc;
  border-radius: 8px;
  color: var(--text);
  text-align: center;
  background-color: transparent;
}
.image-btn:hover {
  border: 2px solid #aaa;
}
.image-btn figcaption{
  font-size: 0.8rem;
  font-weight: bold;
}
.image-btn img{
  border-radius: 4px;
  box-shadow: 0;
}


/* テキストリンク（ a ）
-------------------------------------------------------------- */
.pointer {
  cursor: pointer;
}
.link_arrow {
  display: inline-flex;
  align-items: center;
  position: relative;
  cursor: pointer;
  color: var(--link);
}
.link_arrow::before {
  content: "";
  display: inline-block;
  width: 6px;
  height: 6px;
  border-right: 2px solid #ccc;
  border-bottom: 2px solid #ccc;
  border-color: inherit;
  position: relative;
  transform: rotate(-45deg);
  margin-right: .8em;
  transition: all 0.2s ease;
}
.link_arrow::after {
  position: absolute;
  left: 0;
  content: "";
  width: 0;
  height: 0;
  transition: all 0.2s ease;
  opacity: 0;
  border: 1px solid #ccc;
  border-color: inherit;
}
.link_arrow:hover {
  text-decoration: none;
}
.link_arrow:hover::before {
  transform: rotate(-45deg) translate(4px, 4px);
}
.link_arrow:hover::after {
  opacity: 1;
  width: 10px;
  right: -5px;
}

/* ホバーエフェクト
-------------------------------------------------------------- */
.hover_underline a {
  position: relative;
  display: inline-block;
  text-decoration: none;
  color: var(--main);
}
.hover_underline a:hover {
  text-decoration: none;
  opacity: 0.7;
}
.hover_underline a::after {
  position: absolute;
  bottom: -8px;
  left: 0;
  content: "";
  width: 100%;
  height: 1px;
  background: var(--main);
  opacity: 0;
  visibility: hidden;
  transition: 0.3s;
}
.hover_underline.white a::after {
  background: #ffffff;
}
.hover_underline.black a::after {
  background: #000000;
}
.hover_underline a:hover::after,
.hover_underline li.current a::after {
  bottom: 0;
  opacity: 1;
  visibility: visible;
}
.hover_float a img {
  display: inline-block;
  transition: 0.2s;
}
.hover_float a img:hover {
  -webkit-transform: translateY(-5px);
  -ms-transform: translateY(-5px);
  transform: translateY(-5px);
  box-shadow: 0 12px 10px -6px rgba(0, 0, 0, 0.3);
}
.hover_shadow a img {
  display: inline-block;
  transition: 0.2s;
  box-shadow: 0 5px 10px 0 rgba(0, 0, 0, 0.05);
  transition: 0.5s;
}
.hover_shadow a img:hover {
  box-shadow: 0 5px 15px 0 rgba(0, 0, 0, 0.25);
}

/*　アンダーライン（見出しの装飾）
-------------------------------------------------------------- */
/* .underline::after {
	content: '';
	display: block;
	width: 100px;
	height: 6px;
	margin: 2em auto;
	border-radius: 10px;
	opacity: 0.9;
	background: #517c8d;
} */

/*　SNSアイコン
-------------------------------------------------------------- */
.sns_icons li {
  display: inline-block;
}
.sns_icons li:not(:last-child)/* 最後以外に適用 */ {
  margin-right: 0.5em;
}
.sns_icons li a:hover {
  opacity: 0.5;
}

/*　SNSアイコン
-------------------------------------------------------------- */
.sns-icons {
	display: flex;
	flex-wrap: wrap;
	gap: 16px;
	justify-content: center;
	margin: 32px 0;
}
.sns-icons li {
	position: relative;
	margin: 0;
	list-style-type: none;
}
.sns-icons li a {
	display: block;
	width: 48px;
	height: 48px;
	line-height: 1;
	border-radius: 50%;
	text-decoration: none;
	text-align: center;
	position: relative;
	transition: all 0.15s ease;
	transition: 0.5s;
	background-color: transparent;
}
.sns-icons li a svg {
	width: 24px;
	height: 24px;
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translateY(-50%) translateX(-50%);
	fill: var(--text);
}
.sns-icons li a:hover svg, /* ホバー時のアイコンカラー */
.sns-icons.dark li a svg{ /* 黒背景時のアイコンカラー */
	fill: #ffffff;
}
.icon-xtwitter a:hover {
	background-color: #000000;
}
.icon-twitter a:hover {
	background-color: #1da1f2;
}
.icon-facebook a:hover {
	background-color: #1877f2;
}
.icon-instagram a:hover {
	background: linear-gradient(
		45deg,
		rgba(254, 212, 117, 1) 0%,
		rgba(229, 61, 93, 1) 50%,
		rgba(194, 49, 134, 1) 70%,
		rgba(156, 56, 187, 1) 100%
	);
}
.icon-youtube a:hover {
	background-color: #da1725;
}
.icon-line a:hover {
	background-color: #06C755;
}
.icon-amazon a:hover {
	background-color: #ff9900;
}
.icon-rss a:hover {
	background-color: #6cc655;
}
.icon-mail a:hover {
	background-color: #333333;
}
.sns-icons li::before { /* テキスト */
	content: attr(title);
	position: absolute;
	bottom: -16px;
	bottom: 0px;
	left: 50%;
	font-size: 0.75rem;
	transition: 0.4s;
	transform: translateX(-50%);
	color: var(--text);
	opacity: 0;
}
.sns-icons.dark li::before { /* 黒背景時のテキストカラー */
	color: #ffffff;
}
.sns-icons li:hover::before {
	bottom: -24px;
	opacity: 1;
}

/* ページトップへ戻る
-------------------------------------------------------------- */
.totop {
  position: fixed;
  bottom: 10px;
  right: 10px;
  width: 50px;
  height: 50px;
  display: flex;
  justify-content: center;
  align-items: center;
}
.totop a i {
  font-size: 2rem;
  color: #999;
}
.totop a i:hover {
  color: #ccc;
}

/* ul
-------------------------------------------------------------- */
.list-none {
	list-style: none;
}
.list-none > li {
	margin-left: 0;
}

ul.line {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
  /* justify-content: space-between; */
}
ul.line li {
  display: inline-block;
  list-style-type: none;
  margin-left: 0;
}
/* ul.line li:not(:last-child)::after {
  content: "｜";
  padding: 0.5em;
  opacity: 0.5;
} */
ul.check > li,
ul.check-square > li,
ul.exclamation-triangle li,
ul.angle-right li,
ul.kome li {
  position: relative;
  list-style-type: none !important;
  margin-left: 0.3em !important;
  padding-left: 1.2em;
}
ul.check > li::before,
ul.check-square > li::before,
ul.exclamation-triangle li::before,
ul.angle-right li::before,
ul.kome li::before {
  position: absolute;
  left: 0;
  font-family: "Font Awesome 5 Free";
  font-style: normal;
  font-variant: normal;
  font-weight: bold;
  text-rendering: auto;
}
ul.angle-right li::before {
  content: "\f105"; /* angle-right */
}
ul.check-square li {
  padding-left: 1.6em;
  margin-bottom: 0.5em;
}
ul.circle-check > li,
dl.circle-check dt,
dl.circle-check dd {
	position: relative;
	list-style-type: none !important;
	margin-left: 0 !important;
	padding-left: 1.9em;
	padding-left: calc(1.3em + 8px);/* icon-size + padding */
}
ul.circle-check > li:not(:first-child) {
	margin-top: 8px;
}
ul.circle-check > li::before,
dl.circle-check dt::before {
	content: "　";
	position: absolute;
	left: 0;
	-webkit-mask-size: contain;
	mask-size: contain;
	-webkit-mask-position: center;
	mask-position: center;
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	background-color: var(--main);
	-webkit-mask-image: url(images/icon/check-solid.svg);
	mask-image: url(images/icon/check-solid.svg);
}
ul.circle-check > li::before,
dl.circle-check dt::before {
    top: calc(0px + -0.25em);
	font-size: 1.3em;
	-webkit-mask-image: url(images/icon/circle-check-solid.svg);
	mask-image: url(images/icon/circle-check-solid.svg);
}
ul.exclamation-triangle li {
  padding-left: 1.6em;
}
ul.exclamation-triangle li::before {
  content: "\f12a"; /* exclamation */
  content: "\f071"; /* exclamation-triangle */
  font-size: 0.9rem;
  color: #ff9900;
}
ul.kome li::before {
  content: "※";
}
/*　タイムライン（年表など） */
ul.timeline > li {
  display: flex;
  margin: 0;
}
ul.timeline > li .timeline-date {
  white-space: nowrap;
  padding: 0.5em 20px 0.5em 0;
}
ul.timeline > li .timeline-content {
  position: relative;
  border-left: solid 2px rgba(0, 0, 0, 0.1);
  padding: 0.5em 0 0.5em 20px;
}
ul.timeline > li .timeline-content::before {
  content: "";
  width: 10px;
  height: 10px;
  background: rgba(180, 180, 180, 1);
  position: absolute;
  top: 1.2em;
  left: -6px;
  border-radius: 100%;
}

/* olリスト
-------------------------------------------------------------- */
ol.number {
  counter-reset: number;
  /* margin: 0; */
}
ol.number > li {
  counter-increment: number;
  list-style: none;
  position: relative;
  padding-left: 1.6em;
  padding-bottom: 2em;
}
ol.number > li:not(:last-child) {
  border-left: dashed 1px var(--border);
  border-left: dotted 1px var(--main);
  border-left: dashed 1px var(--main);
}
ol.number > li::before {
  content: counter(number);
  position: absolute;
  left: -0.9em;
  width: 1.8em;
  height: 1.8em;
  line-height: 1.8em;
  text-align: center;
  border-radius: 50px;
  background-color: var(--main);
  color: white;
}

/*下向き矢印付き*/
.arrow-down > li:not(:last-child)::after {
  display: block;
  content: "\f063"; /* arrow-down */
  font-family: "Font Awesome 5 Free";
  font-style: normal;
  font-variant: normal;
  font-weight: bold;
  text-rendering: auto;
  color: var(--main);
}
.arrow-down > li img:last-child {
  margin-bottom: 1em;
}

/*下向き三角付き*/
.triangle.no_number {
  list-style: none;
}
.triangle.no_number > li {
  margin-left: 0;
}
.triangle > li:not(:last-child)::after,
.icon_triangle::after {
  content: "";
  display: block;
  width: 0;
  height: 0;
  margin-top: 1em;
  margin-bottom: 1em;
  border-left: 16px solid transparent;
  border-right: 16px solid transparent;
  border-top: 16px solid var(--main);
}
.triangle.center > li:not(:last-child)::after,
.icon_triangle.center::after {
  margin-right: auto;
  margin-left: auto;
}

/*　dl
-------------------------------------------------------------- */
dl.faq dt,
dl.faq dd {
	position: relative;
	padding-left: 32px;
}
dl.faq > dt::before,
dl.faq > dd::before {
	position: absolute;
	left: 0;
	font-weight: bold;
}
dl.faq > dt::before {
	content: "Q.";
}
dl.faq > dd::before {
	content: "A.";
}
dl.list dd {
  display: list-item;
  list-style-type: disc;
  margin-left: 1.4em;
}
dl.list dd:only-of-type {
	list-style: none;
	margin-left: 0;
}
dl.line dt,
dl.line dd {
  display: inline;
  margin: 0;
  list-style: none;
}
dl.line dt::after {
  content: "：";
  font-weight: normal;
}
dl.line dt:nth-child(n + 2)::before {
  content: "\A"; /* 改行 */
  white-space: pre;
}
dl.line dd::before {
  /* ddが複数ある場合のセパレータ */
  content: "/";
  padding: 0 10px;
  /* font-weight: 500; */
}
dl.line dt + dd::before {
  /* dt直後のddはセパレータなし */
  content: "";
  padding: 0px;
}
dl.table {
  display: flex;
  flex-wrap: wrap;
}
dl.table dt,
dl.table dd {
  margin: 0;
  padding: 10px;
  line-height: 1.5;
  vertical-align: middle;
  box-sizing: border-box;
  border-top: solid 1px var(--border);
}
dl.table dt {
  width: 30%;
}
dl.table dd {
  width: 70%;
}
/* アコーディオンメニュー（ depends on jQuery ） */
dl.accordion > dt {
  font-weight: inherit !important;
  margin: 0 !important;
}
dl.accordion > dt:hover {
  cursor: pointer;
  opacity: 0.5;
}
dl.accordion > dt::before {
  content: "\f0da"; /* caret-right */
  font-family: "Font Awesome 5 Free";
  font-style: normal;
  font-variant: normal;
  font-weight: bold;
  text-rendering: auto;
  margin-right: 10px;
  display: inline-block;
  transition: 0.2s;
}
dl.accordion > dt.open::before {
  transform: rotate(90deg);
}
dl.accordion > dd {
  display: none;
  margin: 0.5em 0 2em;
  padding: 1.6em;
  /* color: var(--main); */
  background-color: var(--sub);
  background-color: rgba(0, 0, 0, 0.05);
  border-radius: var(--radius);
}
dl.accordion.faq > dd::before {
  content: "A.";
  font-size: 1.2em;
  font-weight: bold;
  padding-right: 0.4em;
}

dl.related-link{
	padding: 32px;
	border: solid 1px var(--border);
	border-radius: var(--radius);
	font-size: 0.9rem;

}
dl.related-link dd {
	display: list-item;
	list-style-type: disc;
	margin-left: calc(16px * 1.5);
}
dl.related-link dd:only-of-type {
	list-style: none;
	margin-left: 0;
}

hr {
  display: block;
  height: 1px;
  border: 0;
  background-color: #dddddd;
  background-color: var(--border);
  margin: 4em auto;
}
hr.short {
  width: 10%;
}
hr.half {
  width: 50%;
}

/* 囲み枠・装飾ボックス
-------------------------------------------------------------- */
.box {
  padding: 32px;
  background-color: var(--gray);
  border-radius: var(--radius);
  border-radius: 16px;
}
.box_gray {
  padding: 40px;
  background-color: var(--gray);
  border-radius: var(--radius);
}
.box_red {
  padding: 40px;
  background-color: #ffdede;
  border-radius: var(--radius);
}
.box_yellow {
  padding: 40px;
  background-color: #ffefb0;
  border-radius: var(--radius);
}
.box_label {
  padding: 4% 0 4% 4%;
  border-left: solid 10px var(--main);
}
@media screen and (max-width: 559px) {
  .box,
  .box_red,
  .box_yellow {
    padding: 24px;
  }
}
.box_image {
  /* backgroud-imageはstyleで指定 */
  background-position: center center;
  background-size: cover;
  color: #fff;
  text-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3);
}
.box_image .blackscreen {
  background-color: rgba(0, 0, 0, 0.5);
}
.box_image a {
  color: #fff;
}
.box_full {
  margin-right: calc(50% - 50vw);
  margin-left: calc(50% - 50vw);
  background-color: var(--sub);
  background-color: var(--gray);
}

/* 囲み枠・装飾ボックス
-------------------------------------------------------------- */
.box {
	position: relative;
	padding: 32px;
	border-radius: var(--radius);
	background-color: var(--gray);
}
.box > h2:first-child,
.box > h3:first-child,
.box > h3:first-child,
.box > h4:first-child {
	margin-top: 0;
}
.box.blue {
	background-color: #DEEEFE;
	background-color: hsl(200deg 100% 95%);
}
.box.green {
	background-color: #DDFFDD;
	background-color: hsl(110deg 100% 95%);
}
.box.yellow {
	background-color: #FFF4D9;
	background-color: hsl(50deg 100% 90%);
}
.box.red {
	background-color: #FEE6E6;
	background-color: hsl(0deg 100% 98%);
}
.box.icon {
	padding-left: 64px;
}
.box.icon::before {
	content: "";
	display: block;
	width: 24px;
	height: 24px;
	position: absolute;
	top: calc(32px + 0.25em);
	top: calc(28px + 0.5em);
	left: 24px;
	background-color: #DD0011;
	border-radius: 100%;
	-webkit-mask-image: url(images/icon/circle-check-solid.svg);
	mask-image: url(images/icon/circle-check-solid.svg);
	-webkit-mask-size: contain;
	mask-size: contain;
	-webkit-mask-position: center;
	mask-position: center;
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
}
.box.icon.blue::before {
	background-color: #2480e9;
	-webkit-mask-image: url(images/icon/circle-check-solid.svg);
	mask-image: url(images/icon/circle-check-solid.svg);
}
.box.icon.green::before {
	background-color: #2EB009;
	-webkit-mask-image: url(images/icon/circle-check-solid.svg);
	mask-image: url(images/icon/circle-check-solid.svg);
}
.box.icon.yellow::before {
	background-color: #ff9900;
	-webkit-mask-image: url(images/icon/circle-exclamation-solid.svg);
	mask-image: url(images/icon/circle-exclamation-solid.svg);
}
.box.icon.red::before {
	background-color: #ff6666;
	-webkit-mask-image: url(images/icon/circle-exclamation-solid.svg);
	mask-image: url(images/icon/circle-exclamation-solid.svg);
}

/* アイコン */
.icon-info,
.icon-check,
.icon-excl,
.icon-question,
.icon-excl-triangle,
.icon-xmark,
.icon-link,
.icon-comments,
.icon-heart-regular,
.icon-heart-solid {
	display: flex;
	align-items: baseline; /* 改行時に1行目に揃える */
	gap: 0.5em;
}
.icon-info::before,
.icon-check::before,
.icon-excl::before,
.icon-question::before,
.icon-excl-triangle::before,
.icon-xmark::before,
.icon-link::before,
.icon-comments::before,
.icon-heart-regular::before,
.icon-heart-solid::before{
	display: inline-block;
	content: "　";
	-webkit-mask-size: 99%; /* for Safari15 */
	mask-size: 99%; /* containだとSVG画像によって領域からはみ出ることがある */
	-webkit-mask-position: center;
	mask-position: center;
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
}
.icon-info::before {
	background-color: var(--text);
	-webkit-mask-image: url(images/icon/circle-info-solid.svg);
	mask-image: url(images/icon/circle-info-solid.svg);
}
.icon-check::before {
	background-color: var(--blue);
	-webkit-mask-image: url(images/icon/circle-check-solid.svg);
	mask-image: url(images/icon/circle-check-solid.svg);
}
.icon-excl::before {
	background-color: var(--orange);
	-webkit-mask-image: url(images/icon/circle-exclamation-solid.svg);
	mask-image: url(images/icon/circle-exclamation-solid.svg);
}
.icon-excl-triangle::before {
	background-color: var(--red);
	-webkit-mask-image: url(images/icon/triangle-exclamation-solid.svg);
	mask-image: url(images/icon/triangle-exclamation-solid.svg);
	font-size: 1.1em;
}
.icon-question::before {
	background-color: var(--orange);
	-webkit-mask-image: url(images/icon/circle-question-solid.svg);
	mask-image: url(images/icon/circle-question-solid.svg);
}
.icon-xmark::before {
	background-color: var(--red);
	-webkit-mask-image: url(images/icon/circle-xmark-solid.svg);
	mask-image: url(images/icon/circle-xmark-solid.svg);
}
.icon-link::before {
	background-color: var(--blue);
	-webkit-mask-image: url(images/icon/link-solid.svg);
	mask-image: url(images/icon/link-solid.svg);
	font-size: 1.1em;
}
.icon-comments::before {
	background-color: var(--main);
	-webkit-mask-image: url(images/icon/comments-regular.svg);
	mask-image: url(images/icon/comments-regular.svg);
	font-size: 1.1em;
}
.icon-heart-regular::before{
	background-color: var(--red);
	-webkit-mask-image: url(images/icon/heart-regular.svg);
	mask-image: url(images/icon/heart-regular.svg);
}
.icon-heart-solid::before{
	background-color: var(--red);
	-webkit-mask-image: url(images/icon/heart-solid.svg);
	mask-image: url(images/icon/heart-solid.svg);
}

/* 旧アイコン */
.icon-circle{
	display: flex;
	align-items: flex-start;
	gap: 0.5em;
}
.icon-circle::before {
	content: "　";
	border-radius: 100%;
	background-color: var(--text);
	-webkit-mask-image: url(images/icon/circle-info-solid.svg);
	mask-image: url(images/icon/circle-info-solid.svg);
	-webkit-mask-size: contain;
	mask-size: contain;
	-webkit-mask-position: center;
	mask-position: center;
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
}
.icon-circle.check::before {
	background-color: #2480e9;
	-webkit-mask-image: url(images/icon/circle-check-solid.svg);
	mask-image: url(images/icon/circle-check-solid.svg);
}
.icon-circle.excl::before {
	background-color: #ff9900;
	-webkit-mask-image: url(images/icon/circle-exclamation-solid.svg);
	mask-image: url(images/icon/circle-exclamation-solid.svg);
}
.icon-circle.xmark::before {
	background-color: #ff6666;
	-webkit-mask-image: url(images/icon/circle-xmark-solid.svg);
	mask-image: url(images/icon/circle-xmark-solid.svg);
}
.icon-circle.question::before {
	background-color: #2EB009;
	-webkit-mask-image: url(images/icon/circle-question-solid.svg);
	mask-image: url(images/icon/circle-question-solid.svg);
}

.box-border {
	padding: 32px;
	border: solid 1px var(--border);
	border-radius: var(--radius);
}
/* .box-border-red {
	padding: 32px;
	border: solid 1px #ff6600;
} */
.box-border-left {
	padding: 8px 0 8px 24px;
  border-left: solid 1px var(--border);
}

/* 補足・注釈 */
.notes {
	position: relative;
	margin-top: 16px;
	padding-left: 1.1em;
	color: var(--subtext);
  font-size: 0.85em;
}
p.notes,
ul.notes li {
	list-style: none;
	margin-left: 0;
}
ul.notes li:not(:first-child) {
	margin-top: 4px;
}
p.notes::before,
ul.notes li::before {
	content: "※";
	position: absolute;
	left: 0;
	font-weight: 100;
	scale: 0.8;/* リストマークのサイズ調整にfont-sizeを使うとem指定した余白がズレる */
}

.box-image {
	/* backgroud-imageはstyleで指定 */
	background-position: center center;
	background-size: cover;
	color: #fff;
	text-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3);
}
.box-image .blackscreen {
	background-color: rgba(0, 0, 0, 0.5);
}
.box-image a {
	color: #fff;
}

.balloon_top,
.balloon_left,
.balloon_right,
.balloon_bottom {
  position: relative;
  padding: 8%;
  border-radius: var(--radius);
  background: var(--sub);
  text-align: left;
}
.balloon_top {
  margin-top: 16px;
}
.balloon_left {
  margin-left: 16px;
}
.balloon_right {
  margin-right: 16px;
}
.balloon_bottom {
  margin-bottom: 16px;
}
.balloon_top::after,
.balloon_left::after,
.balloon_right::after,
.balloon_bottom::after {
  /* バルーン内の吹き出し */
  position: absolute;
  content: "";
  border: solid 20px var(--sub);
}
.balloon_top::after {
  border-top: 0px solid transparent;
  border-left: 10px solid transparent;
  border-right: 10px solid transparent;
  top: -20px;
  left: 50%;
  margin-left: -10px;
}
.balloon_left::after {
  border-top: 10px solid transparent;
  border-left: 10px solid transparent;
  border-bottom: 10px solid transparent;
  top: 50%;
  left: -30px;
  margin-top: -10px;
}
.balloon_right::after {
  border-top: 10px solid transparent;
  border-right: 10px solid transparent;
  border-bottom: 10px solid transparent;
  top: 50%;
  right: -30px;
  margin-top: -10px;
}
.balloon_bottom::after {
  border-left: 10px solid transparent;
  border-right: 10px solid transparent;
  border-bottom: 0px solid transparent;
  bottom: -20px;
  left: 50%;
  margin-left: -10px;
}
@media screen and (max-width: 959px) {
  .balloon_top_md {
    margin: 0;
    margin-top: 16px;
  }
  .balloon_left_md {
    margin: 0;
    margin-left: 16px;
  }
  .balloon_right_md {
    margin: 0;
    margin-right: 16px;
  }
  .balloon_bottom_md {
    margin: 0;
    margin-bottom: 16px;
  }
  .balloon_top_md::after,
  .balloon_bottom_md::after {
    top: auto;
    left: auto;
    right: auto;
    bottom: auto;
    margin: 0;
    border: solid 20px var(--sub);
  }
  .balloon_top_md::after {
    border-top: 0px solid transparent;
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    top: -20px;
    left: 50%;
    margin-left: -10px;
  }
  .balloon_bottom_md::after {
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    border-bottom: 0px solid transparent;
    bottom: -20px;
    left: 50%;
    margin-left: -10px;
  }
}
@media screen and (max-width: 559px) {
  .balloon_top_sm {
    margin: 0;
    margin-top: 16px;
  }
  .balloon_left_sm {
    margin: 0;
    margin-left: 16px;
  }
  .balloon_right_sm {
    margin: 0;
    margin-right: 16px;
  }
  .balloon_bottom_sm {
    margin: 0;
    margin-bottom: 16px;
  }
  .balloon_top_sm::after,
  .balloon_bottom_sm::after {
    top: auto;
    left: auto;
    right: auto;
    bottom: auto;
    margin: 0;
    border: solid 20px var(--sub);
  }
  .balloon_top_sm::after {
    border-top: 0px solid transparent;
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    top: -20px;
    left: 50%;
    margin-left: -10px;
  }
  .balloon_bottom_sm::after {
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    border-bottom: 0px solid transparent;
    bottom: -20px;
    left: 50%;
    margin-left: -10px;
  }
}

/* 装飾アイコン
-------------------------------------------------------------- */
/* .icon,
.icon_red {
  display: inline-block;
  padding: 0px 8px;
  font-size: 0.8rem;
  font-weight: 700;
  color: #ffffff;
  background-color: var(--main);
  border-radius: 4px;
}
.icon_red {
  background-color: #ff6666;
}
.icon_label:before {
  content: attr(data-text);
  display: inline-block;
  padding: 0px 8px;
  margin-right: 1em;
  font-size: 0.8em;
  font-weight: bold;
  color: #ffffff;
  background-color: var(--main);
  border-radius: 4px;
}
.icon_no {
  position: relative;
  display: inline-block;
  width: 1.2em;
  text-align: center;
  font-weight: bold;
  font-size: 0.9em;
  color: #ffffff;
}
.icon_no:before {
  display: inline-block;
  content: "";
  z-index: -1;
  border-radius: 100px;
  text-align: center;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 1.4em;
  height: 1.4em;
  background: var(--main);
} */

/*　検索フォーム
-------------------------------------------------------------- */
.searchform {
  position: relative;
  display: flex;
  align-items: center;
  width: 100%;
  height: 50px;
  padding: 0 0 0 8px;
  background-color: #eeeeee;
  border-radius: var(--radius);
}
.searchform input::placeholder {
  transition: 0.3s ease-out;
}
.searchform:hover input::placeholder {
  /* color: rgba(0,0,0,.1); */
}
.searchform input:focus {
  outline: 0; /* フォーカス時のボーダを非表示 */
}
.searchform input:-webkit-autofill {
  box-shadow: 0 0 0 1000px white inset; /* オートコンプリート時の水色背景を無効化 */
}
.searchform input[type="search"],
.searchform input[type="submit"] {
  display: block;
  margin: 0px;
  padding: 0px;
  border: none;
  background: none;
}
.searchform input[type="search"] {
  width: 100%;
  padding: 0 8px;
}
.searchform input[type="submit"] {
  width: 50px;
  font-family: "Font Awesome 5 Free";
  font-style: normal;
  font-variant: normal;
  font-weight: bold;
  font-size: 13px;
  text-rendering: auto;
  box-shadow: none;
  background: none; /*for iOS*/
}
.searchform input[type="submit"]:hover {
  cursor: pointer;
  opacity: 0.5;
}
.searchform.dark {
  background-color: rgba(0, 0, 0, 0.4);
}
.searchform.dark input::placeholder {
  color: rgba(255, 255, 255, 0.5);
}
.searchform.dark:hover input::placeholder {
  color: rgba(255, 255, 255, 0.1);
}
.searchform.dark input[type="search"] {
  color: rgba(255, 255, 255, 0.9);
}
.searchform.dark input[type="submit"] {
  color: rgba(255, 255, 255, 0.5);
}
.searchform.light {
  background-color: rgba(255, 255, 255, 0.95);
}

/* ヘッダの検索フォーム */
header .searchform {
  position: relative;
  display: inline-flex;
  height: 32px;
  padding: 0;
  background: transparent;
  color: var(--main);
  font-size: 0.8rem;
}
header .searchform input[type="search"] {
  position: absolute;
  top: 0;
  right: 0;
  transition: 0.1s;
  cursor: pointer;
}
header .searchform input[type="search"]:focus {
  top: 25px;
  right: 0;
  width: 240px;
  padding: 5px;
  border-radius: 0;
  border-bottom: solid 1px var(--main);
  cursor: default;
}
header .searchform input[type="submit"] {
  width: 1em;
}

@media screen and (max-width: 959px) {
  .header_searchform_icon {
    margin: 1em 0 0;
  }
  .header_searchform_icon .header_searchform_icon_open,
  .header_searchform_icon.open .header_searchform_icon_close {
    display: none;
  }
  .header_searchform_icon .header_searchform_icon_close,
  .header_searchform_icon.open .header_searchform_icon_open {
    display: none;
  }
  .header_searchform {
    position: relative;
    top: 0;
    padding: 16px 0;
    height: auto;
    overflow: auto;
    background: none;
  }

  /* ヘッダの検索フォーム */
  header .searchform {
    /* position: relative;
		display: inline-flex;
		color: var(--main);
		font-size: 0.8rem; */
    height: 100%;
    padding: 8px 16px;
    background: #eee;
  }
  header .searchform input[type="search"] {
    position: relative;
    top: 0;
    right: 0;
    /* transition: .1s; */
    /* cursor: pointer; */
  }
  header .searchform input[type="search"]:focus {
    top: 0;
    /* left: 0; */
    width: 100%;
    padding: 0 8px;
    /* border-radius: 0; */
    border-bottom: none;
    /* cursor: default; */
  }
  header .searchform input[type="submit"] {
    width: 1em;
  }
}

/*　見出し
-------------------------------------------------------------- */
.heading_bdl {
  border-left: solid 4px var(--main);
  padding: 0.2em 0.1em 0.2em 0.5em;
  /* margin-left: calc(-.5em + -5px); */
}

.heading_bdb {
  border-bottom: solid 4px var(--sub);
  position: relative;
  padding-bottom: 0.2em;
}
.heading_bdb:after {
  position: absolute;
  content: " ";
  display: block;
  border-bottom: solid 4px var(--main);
  bottom: -4px;
  width: 22%;
}

.heading_centerline {
  text-align: center;
  border: none;
}
.heading_centerline::after {
  content: "";
  display: block;
  width: 100px;
  height: 4px;
  margin: 1em auto;
  background: var(--main);
  border-radius: 10px;
}

/* WP Access Category Password
-------------------------------------------------------------- */
.acpwd-form {
  margin: 0 0 2em;
}
.acpwd-form input[type="password"] {
  background-color: rgba(0, 0, 0, 0.04);
  border: solid 1px rgba(0, 0, 0, 0.1);
  border-radius: 2px;
  padding: 10px;
}
.acpwd-form input[type="submit"] {
  /* margin-left: 1em; */
  padding: 10px 20px;
  background-color: rgba(0, 0, 0, 0.4);
  border: none;
  color: #fff;
  font-weight: 700;
  font-size: 0.9rem;
  border-radius: 4px;
}

/* WP Contact Form 7
-------------------------------------------------------------- */
.mailform_wrap {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}
.mailform_wrap dt,
.mailform_wrap dd {
  margin: 20px 0 0 !important;
}
.mailform_wrap dt {
  width: calc(25% - 20px);
  font-size: 0.9em;
  /* text-align: right; */
  font-weight: bold;
}
.mailform_wrap dd {
  width: 75%;
}
@media screen and (max-width: 559px) {
  .mailform_wrap {
    display: block;
  }
  .mailform_wrap dt {
    width: auto;
  }
  .mailform_wrap dd {
    width: auto;
    margin: 0 !important;
  }
}

/* WP 記事修正リンク（ログイン時のみ）
-------------------------------------------------------------- */
.post-edit-link {
  position: absolute !important;
  top: 10px !important;
  right: 10px !important;
  z-index: 2;
  font-size: 0;
}
.post-edit-link::before {
  content: "\f044"; /* edit */
  font-family: "Font Awesome 5 Free";
  font-style: normal;
  font-variant: normal;
  text-rendering: auto;
  font-size: 14px;
  color: rgba(200, 200, 200, 0.8);
}
.post-edit-link:hover::before {
  color: rgba(200, 200, 200, 0.4);
}

/*　Table of Contents Plus / TOC（目次プラグイン）
-------------------------------------------------------------- */
#toc_container {
  margin-bottom: 2em;
  padding: 2em 2em;
  background-color: var(--sub);
  border-radius: var(--radius);
  font-size: 0.9em;
}
#toc_container .toc_title {
  text-align: center;
  font-weight: 700;
  margin-bottom: 1em;
}
#toc_container .toc_list {
  margin: 0;
}
#toc_container .toc_list li a {
  text-decoration: none;
  color: var(--text);
}
#toc_container .toc_list li a:hover {
  text-decoration: underline;
}
/* 記事内＆サイドバー 共通 */
#toc_container .toc_list li,
.toc_widget_list li {
  position: relative;
  margin-top: 0.5em;
  margin-left: 0;
  padding-left: 0.8em;
  list-style: none;
  line-height: 1.6;
}
/* 記事内目次のリストマーク */
#toc_container .toc_list li::before {
  content: "-";
  opacity: 0.7;
  position: absolute;
  top: 0;
  left: 0;
}
/* サイドバー目次のリストマーク（右寄せに対応させるためインラインにしてる） */
.toc_widget_list li::before {
  content: "-";
  opacity: 0.7;
  margin-left: -0.8em;
  padding-right: 5px;
  transition: 0.2s;
}
.toc_widget_list li:hover::before {
  /* padding-right: 10px; */
}

/* WP Japanese Proofreading Preview（校正支援プラグイン）
-------------------------------------------------------------- */
.proofreading-summary {
  margin-bottom: 2em !important;
  padding: 20px;
}
.proofreading-summary p {
  margin-bottom: 0 !important;
}
.proofreading-h3 {
  display: block;
  margin: 0px !important;
  border: none !important;
}

/* WP ページネーション
-------------------------------------------------------------- */
#pagenation {
  margin-top: 4em;
  font-weight: 600;
}
#pagenation .page-numbers {
  display: inline-block;
  margin: 8px 8px 0 0;
  width: 40px;
  height: 40px;
  line-height: 40px;
  text-align: center;
  border: solid 1px var(--main);
}
#pagenation .prev,
#pagenation .next {
  width: 64px;
  height: 40px;
}
#pagenation a {
  color: var(--main);
}
#pagenation a:hover,
#pagenation .current {
  text-decoration: none;
  background-color: var(--main);
  color: #ffffff;
}

/* モーダルウィンドウ
-------------------------------------------------------------- */
.modal {
  width: 100%;
  height: 100%;
  position: fixed;
  top: 0;
  left: 0;
  z-index: 9999;
}
.modal:not(:target) {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.5s, visibility 0.5s;
}
.modal:target {
  opacity: 1;
  visibility: visible;
  transition: opacity 0.5s, visibility 0.5s;
}
.modal .overlay {
  display: block;
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  background-color: #000;
  opacity: 0.7;
}
.modal-content,
.modal .overlay::before {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
	width: auto;
	height: auto;
	max-width: calc(100vw - 32px);
	max-height: calc(100vh - 128px);
  border-radius: 10px;
}
.modal-content {
  overflow: auto;
  padding: 32px;
  background-color: #fff;
}
@media screen and (max-width:559px) {
  .modal-content {
    padding: 32px 16px;
  }
  .modal .overlay::before {
    /* close */
    content: "✕";
    display: block;
    transform: translate(-50%, -50%);
    text-align: right;
    text-decoration: none;
    color: #fff;
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
    pointer-events: none;
  }
}

/* アーカイブリスト用（1行レイアウト）
-------------------------------------------------------------- */
.archive_line > div,
.archive_line > li {
  position: relative;
  display: flex;
  align-items: center;
  margin: 0;
  padding: 10px;
  border-bottom: solid 1px var(--border);
}
.archive_line > div > *:not(:last-child),
.archive_line > li > *:not(:last-child) {
  margin-right: 16px;
}
.archive_line > div a:not([class]),
.archive_line > li a:not([class]) {
  color: var(
    --text
  ); /* リスト内で.btnを使ったときにカラーが上書きされるためクラスなしの要素のみに適用 */
}
.archive_line > div a:hover,
.archive_line > div a.current,
.archive_line > div a.current:hover {
  opacity: 0.5;
  text-decoration: none;
}
.archive_line .title,
.archive_line h2,
.archive_line h3 {
  font-size: 1rem;
  margin: 0;
}
.archive_line time {
  display: block;
  opacity: 0.5;
}
.archive_line img {
  display: block;
  width: 64px;
  margin: 0;
  box-shadow: none;
}

/* アーカイブリスト用（グリッドレイアウト）
-------------------------------------------------------------- */
.archive_grid {
  line-height: 1.6;
  color: var(--text);
}
.archive_grid a {
  color: var(--text);
}
.archive_grid a:hover {
  text-decoration: underline;
}
.archive_grid a .rectangle {
  transition: 0.2s;
}
.archive_grid a:hover .rectangle {
  box-shadow: 0 12px 10px -6px rgba(0, 0, 0, 0.3);
  transform: translate(0px, -6px);
}
.archive_grid .title,
.archive_grid h2,
.archive_grid h3 {
  margin: 0;
  padding: 0;
  border: none;
  font-size: 1rem;
}
.archive_grid ul {
  margin-top: 0;
}
.archive_grid li {
  list-style: none;
  display: inline-block;
  margin: 0;
}
.archive_grid time,
.archive_grid .cat_list,
.archive_grid .tag_list {
  display: inline-block;
  font-size: 0.8em;
  margin-right: 1em;
}
.archive_grid .cat_list,
.archive_grid .tag_list {
  opacity: 0.5;
}
/* .archive_grid time::before,
.archive_grid .cat_list li:first-child::before,
.archive_grid .tag_list li:first-child::before{
	font-family: "Font Awesome 5 Free";
	font-style: normal;
	font-variant: normal;
	font-weight: bold;
	text-rendering: auto;
	padding-right: 5px;
} */
.archive_grid time::before {
  /* content: "\f783"; */ /* calendar-day */
}
.archive_grid time.updated_post::before {
  /* content: "\f2f1"; */ /* sync-alt */
}
.archive_grid .cat_list li:first-child::before {
  /* content: "\f07c"; */ /* folder-open */
}
.archive_grid .tag_list li:first-child::before {
  /* content: "\f02c"; */ /* tags */
}
.archive_grid .cat_list li:not(:last-child)::after,
.archive_grid .tag_list li:not(:last-child)::after {
  content: "/"; /* 区切り線 */
  opacity: 0.4;
  margin-left: 0.5em;
  margin-right: 0.5em;
  font-size: 0.9em;
}

/* ツールチップ
-------------------------------------------------------------- */
.tooltip {
  /* display: inline-block; */
  position: relative;
  border-bottom: dashed 1px var(--text);
}
.tooltip.border_none {
  border: none;
}
.tooltip::before, /* 吹き出し */
.tooltip span.data {
  content: attr(data-tooltip);
  position: absolute;
  top: calc(100% + 2px);
  left: 0;
  display: block;
  width: 200px;
  padding: 16px;
  font-size: 0.8rem;
  border-radius: 4px;
  background-color: rgba(255, 255, 255, 1);
  box-shadow: 0 3px 8px rgba(0, 0, 0, 0.2);
  z-index: 10;
  transition: 0.2s;
  visibility: hidden;
  opacity: 0;
}
.tooltip:hover::before,
.tooltip:active::before,
.tooltip:hover span.data,
.tooltip:active span.data {
  opacity: 1;
  visibility: visible;
}
.tooltip:hover,
.tooltip:active {
  cursor: default;
}
.tooltip:hover span.data a,
.tooltip:active span.data a {
  cursor: pointer;
}

/* 画像の上にテキスト配置
-------------------------------------------------------------- */
.overlay {
  position: relative;
}
.overlay img {
  display: block;
}
.overlay .upper {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  margin: 0 !important;
  padding: 5%;
  color: white;
  font-size: 2.3rem;
  font-weight: 900;
  line-height: 1.5;
  text-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3);
  font-feature-settings: "palt"; /*自動カーニング*/
  background: linear-gradient(rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.5) 100%);
  border: none;
}
.overlay .upper::after {
  display: none;
}
@media screen and (max-width: 559px) {
  .overlay .upper {
    font-size: 1.3rem;
  }
}

/* 続きを読むボタン
-------------------------------------------------------------- */
.readmore {
  padding-top: 1em;
  font-size: 0.9rem;
  text-align: center;
  cursor: pointer;
}
.readmore::before {
  content: "▼";
  font-size: 70%;
  padding-right: 0.5em;
  opacity: 0.9;
  vertical-align: text-bottom;
}
.readmore:hover {
  opacity: 0.5;
}
.target {
  transition: 0.2s;
  cursor: pointer;
}
.target.hidden {
  visibility: collapse;
  transition: 0.2s;
  padding: 0;
  height: 0;
  opacity: 0;
  font-size: 0;
}

.zoom {
  width: 100%;
  overflow: hidden;
  position: relative;
}
.zoom::before {
  display: inline-block;
  position: absolute;
  top: 10px;
  right: 10px;
  content: "\f00e"; /* search-plus */
  font-family: "Font Awesome 5 Free";
  font-style: normal;
  font-variant: normal;
  font-weight: bold;
  text-rendering: auto;
  opacity: 0.3;
}
.zoom img {
  transition: 0.2s all;
  border: none;
}
.zoom img:hover {
  transform: scale(4);
  transition: 0.5s all;
}


/* 吹き出し付きボックス */
.balloon-box{
  display: flex;
  gap: 32px;
  align-items: center;
  margin-top: 32px;
}
.balloon-box.reverse{
  flex-direction: row-reverse;
}
@media screen and (max-width:559px) {
  .balloon-box,
  .balloon-box.reverse{
    justify-content: center;
    flex-direction: column;
  }
}
.balloon-box p,
.balloon-box img,
.balloon-box figure{
  margin-top: 0;
  margin-bottom: 0;
}
.balloon-box .img{
  flex-shrink: 0;
  display: block;
  width: 80px;
  height: 80px;
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}
.balloon-box .illust_m1{
  background-image: url(images/icon/illust_m1.svg);
}
.balloon-box .illust_m2{
  background-image: url(images/icon/illust_m2.svg);
}
.balloon-box .illust_m3{
  background-image: url(images/icon/illust_m3.svg);
}
.balloon-box .illust_m4{
  background-image: url(images/icon/illust_m4.svg);
}
.balloon-box .illust_m5{
  background-image: url(images/icon/illust_m5.svg);
}
.balloon-box .illust_w1{
  background-image: url(images/icon/illust_w1.svg);
}
.balloon-box .illust_w2{
  background-image: url(images/icon/illust_w2.svg);
}
.balloon-box .illust_w3{
  background-image: url(images/icon/illust_w3.svg);
}
.balloon-box .illust_w4{
  background-image: url(images/icon/illust_w4.svg);
}
.balloon-box .illust_w5{
  background-image: url(images/icon/illust_w5.svg);
}

.balloon-box .illust_7543{background-image: url(images/soco/7543_color.svg);}
.balloon-box .illust_7545{background-image: url(images/soco/7545_color.svg);}
.balloon-box .illust_7672{background-image: url(images/soco/7672_color.svg);}
.balloon-box .illust_7674{background-image: url(images/soco/7674_color.svg);}
.balloon-box .illust_7861{background-image: url(images/soco/7861_color.svg);}
.balloon-box .illust_7863{background-image: url(images/soco/7863_color.svg);}
.balloon-box .illust_11419{background-image: url(images/soco/11419_color.svg);}
.balloon-box .illust_11438{background-image: url(images/soco/11438_color.svg);}

.balloon-top,
.balloon-left,
.balloon-right,
.balloon-bottom {
  position: relative;
  padding: 32px;
  border-radius: var(--radius);
  background: var(--gray);
  text-align: left;
  border-radius: 16px;
}
.balloon-top {
  margin-top: 16px;
}
.balloon-left {
  margin-left: 16px;
}
.balloon-right {
  margin-right: 16px;
}
.balloon-bottom {
  margin-bottom: 16px;
}
.balloon-top::after,
.balloon-left::after,
.balloon-right::after,
.balloon-bottom::after {
  /* バルーン内の吹き出し */
  position: absolute;
  content: "";
  border: solid 20px var(--gray);
}
.balloon-top::after {
  border-top: 0px solid transparent;
  border-left: 10px solid transparent;
  border-right: 10px solid transparent;
  top: -20px;
  left: 50%;
  margin-left: calc(-1 * 8px);
}
.balloon-left::after {
  border-top: 10px solid transparent;
  border-left: 10px solid transparent;
  border-bottom: 10px solid transparent;
  top: 50%;
  left: -30px;
  margin-top: calc(-1 * 8px);
}
.balloon-right::after {
  border-top: 10px solid transparent;
  border-right: 10px solid transparent;
  border-bottom: 10px solid transparent;
  top: 50%;
  right: -30px;
  margin-top: calc(-1 * 8px);
}
.balloon-bottom::after {
  border-left: 10px solid transparent;
  border-right: 10px solid transparent;
  border-bottom: 0px solid transparent;
  bottom: -20px;
  left: 50%;
  margin-left: calc(-1 * 8px);
}
@media screen and (max-width: 1023px) {
  .balloon-top-md {
    margin: 0;
    margin-top: 16px;
  }
  .balloon-left-md {
    margin: 0;
    margin-left: 16px;
  }
  .balloon-right-md {
    margin: 0;
    margin-right: 16px;
  }
  .balloon-bottom-md {
    margin: 0;
    margin-bottom: 16px;
  }
  .balloon-top-md::after,
  .balloon-bottom-md::after {
    top: auto;
    left: auto;
    right: auto;
    bottom: auto;
    margin: 0;
    border: solid 20px var(--gray);
  }
  .balloon-top-md::after {
    border-top: 0px solid transparent;
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    top: -20px;
    left: 50%;
    margin-left: calc(-1 * 8px);
  }
  .balloon-bottom-md::after {
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    border-bottom: 0px solid transparent;
    bottom: -20px;
    left: 50%;
    margin-left: calc(-1 * 8px);
  }
}
@media screen and (max-width: 559px) {
  .balloon-top-sm {
    margin: 0;
    margin-top: 16px;
  }
  .balloon-left-sm {
    margin: 0;
    margin-left: 16px;
  }
  .balloon-right-sm {
    margin: 0;
    margin-right: 16px;
  }
  .balloon-bottom-sm {
    margin: 0;
    margin-bottom: 16px;
  }
  .balloon-top-sm::after,
  .balloon-bottom-sm::after {
    top: auto;
    left: auto;
    right: auto;
    bottom: auto;
    margin: 0;
    border: solid 20px var(--gray);
  }
  .balloon-top-sm::after {
    border-top: 0px solid transparent;
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    top: -20px;
    left: 50%;
    margin-left: calc(-1 * 8px);
  }
  .balloon-bottom-sm::after {
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    border-bottom: 0px solid transparent;
    bottom: -20px;
    left: 50%;
    margin-left: calc(-1 * 8px);
  }
}


/*ステップUI（横ライン付き）*/
ol.steps{
	counter-reset: number;
  display: flex;
	gap: 8px;
  justify-content: space-between;
	/* border-top: solid 1px var(--border);
	border-bottom: solid 1px var(--border);
	padding: 16px 0 12px; */
}
ol.steps > li {
	counter-increment: number;
	list-style: none;
	position: relative;
	flex: 1;
	margin: 0;
	font-size: 0.7rem;
	font-size: 1vw;
  font-size: clamp(10px, 1vw, .9rem);
  font-weight: bold;
	line-height: 1.4;
	text-align: center;
}
ol.steps > li::before { /* icon */
	content: counter(number);
	position: relative;
	top: 0;
	left: 0;
	display: block;
	width: 24px;
	height: 24px;
	line-height: 24px;
	margin: 0 auto 8px;
	font-size: 0.9rem;
	text-align: center;
	border-radius: 50px;
	border: 2px solid var(--main);
	color: var(--main);
	font-family: 'Trebuchet MS','Verdana','Arial';
	background-color: var(--main);
	color: white;
}
ol.steps > li.active::before{
	box-shadow: var(--shadow);
	background-color: white;
	color: var(--main);
}
ol.steps > li.checked::before { /* check icon */
	content: "　";
	-webkit-mask-image: url(images/icon/circle-check-solid.svg);
	mask-image: url(images/icon/circle-check-solid.svg);
	-webkit-mask-size: contain;
	mask-size: contain;
	-webkit-mask-position: center;
	mask-position: center;
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
}
ol.steps > li:not(:last-child)::after { /* line */
	content: "";
	display: block;
	position: absolute;
	top: 13px;
  left: calc(50% + 14px);
	z-index: -1;
	width: calc(100% - 18px);
	height: 2px;
	border: none;
	background-color: var(--border);
	background-color: var(--main);
	opacity: .2;
}
ol.steps > li.checked:not(:last-child)::after { /* line */
	opacity: 1;
}

/* カード（共通設定）
-------------------------------------------------------------- */
.cards-item {
	position: relative;
	display: flex;
	gap: 24px;
}
.cards-item a {
	color: var(--text);
}
.cards-item a::before { /* クリックエリア拡張 */
	content: "";
	position: absolute;
	top: -1px;
	left: -1px;
	right: -1px;
	bottom: -1px;
	z-index: 1;
}
.cards-item time {
	font-size: 0.8rem;
	color: var(--subtext);
}
.cards-item .title {
	margin: 0;
	padding: 0;
	border: none;
	font-weight: 600;
	font-size: 0.9rem;
	line-height: 1.6;
}

/* カード（シンプル＋垂直）
-------------------------------------------------------------- */
.cards-vertical {
	display: grid;
	gap: 48px 32px;
}
@media screen and (max-width: 559px) {
	.cards-vertical {
		gap: 32px 16px;
	}
}
.cards-vertical .cards-item {
	flex-direction: column;
}
.cards-vertical .cards-item .img {
	width: 100%;
	transition: 0.2s;
	order: -1;
}
.cards-vertical .cards-item .img img {
	width: 100%;
	transition: 0.2s;
}
.cards-vertical .cards-item:hover .img img {
	/* box-shadow: var(--shadow); */
	filter: drop-shadow(0px 5px 5px rgba(0,0,0,.5));
	transform: translate(0px, -4px);
}

/* カード（シンプル＋水平）
-------------------------------------------------------------- */
.cards-horizontal {
	border-top: solid 1px var(--border);
}
.cards-horizontal .cards-item,
.cards-border .cards-item {
	align-items: center;
	transition: 0.2s;
}
.cards-horizontal .cards-item {
	padding: 16px 8px 16px 0;
	border-bottom: solid 1px var(--border);
}
.cards-border .cards-item {
	padding: 16px;
	border: solid 1px var(--border);
  border-radius: var(--radius);
	overflow: hidden;/* 子要素はみ出し回避 */
}
.cards-horizontal .cards-item:hover,
.cards-border .cards-item:hover {
	cursor: pointer;
	background-color: var(--gray);
}
.cards-horizontal .cards-item .text,
.cards-border .cards-item .text {
	flex: 1 1 100%;
}
.cards-horizontal .cards-item .img,
.cards-border .cards-item .img {
	flex: 0 0 auto;
	align-self: start;/* 画像の高さよりもテキスト量が多いときに上揃えにする */
	order: -1;
}
.cards-horizontal .cards-item .img img,
.cards-border .cards-item .img img {
	width: 80px;
	margin: 0;
  border: none;
}
.cards-horizontal .cards-item::after,
.cards-border .cards-item::after {
	flex: 0 0 auto;
	content: "";
	width: 24px;
	height: 24px;
  margin-left: auto;
  margin-right: 16px;
  margin-right: 0;
	background-color: transparent;
	background-image: url(images/icon/angle-down-solid.svg);
	background-repeat: no-repeat;
	background-position: center;
	background-size: 50%;
	transition: 0.2s;
	transform: rotate(-90deg);
	opacity: .5;
}
.cards-horizontal .cards-item:hover::after,
.cards-border .cards-item:hover::after {
  transform: translate(25%, 0%) rotate(-90deg);
}

/* カード（背景あり＋垂直）
-------------------------------------------------------------- */
.cards-box-vertical .cards-item{
	display: grid;
	grid-auto-flow: column;
	grid-template-rows: auto auto;
	gap: 0;
	margin: 0;
	padding: 0;
	background-color: var(--gray);
	border-radius: var(--radius);
}
.cards-box-vertical .cards-item .img img{
	width: 100%;
	aspect-ratio: 1/1;
	border-radius: var(--radius) var(--radius) 0px 0px;
}
.cards-box-vertical .cards-item .text{
	padding: 32px 16px;
	font-size: 0.9rem;
	text-align: center;
}

/* カード（背景あり＋水平）
-------------------------------------------------------------- */
.cards-box-horizontal .cards-item{
	display: grid;
	grid-template-columns: repeat(2, auto);
	grid-template-columns: 1fr 2fr;
	justify-content: start;
	gap: 0;
	align-items: center;
	margin: 0;
	padding: 0;
	background-color: var(--gray);
	border-radius: var(--radius);
}
.cards-box-horizontal .cards-item .img img{
	/* height: 100%; */
	aspect-ratio: 1/1;
	object-fit: cover;
	border-radius: var(--radius) 0px 0px var(--radius);
}
.cards-box-horizontal .cards-item .text{
	max-height: 100%;
	overflow-x: hidden;
	overflow-y: auto;
	padding: 16px;
	font-size: 0.9rem;
	text-align: center;
}

/* リボン
-------------------------------------------------------------- */
/* リボン共通 */
.ribbon-top,
.ribbon-left {
	position: absolute;
	z-index: 2;
	width: auto;
	color: white;
	font-size: 0.7rem;
	text-shadow: 1px 1px 3px rgba(0,0,0,.2);
	background-color: var(--main);
	background-image: radial-gradient(
		at center top,
		rgba(255, 255, 255, 0.3) 0%,
		rgba(255, 255, 255, 0) 75%
	);
	box-shadow: 2px 2px 4px 0px rgba(0,0,0,0.2);
}
/* 垂直リボン */
.ribbon-top {
	top: -10px;
	right: 18px;
	padding: 8px 8px;
	border-radius: 0 0 2px 2px;
}
.ribbon-top:after { /* リボンの折返し */
  position: absolute;
  content: '';
  top: 0;
  right: -10px;
  width: 10px;
  height: 10px;
  clip-path: polygon(0% 0%, 100% 100%, 0% 100%);
  background-color: var(--main);
	background-image: linear-gradient(rgba(0,0,0,.3), rgba(0,0,0,.1));
}
/* 水平リボン */
.ribbon-left {
	top: 12px;
	left: -10px;
	padding: 4px 12px;
	border-radius: 0 2px 2px 0;
}
.ribbon-left:after { /* リボンの折返し */
  position: absolute;
  content: '';
  top: 100%;
  left: 0;
  width: 10px;
  height: 10px;
  clip-path: polygon(0% 0%, 100% 0%, 100% 100%);
  background-color: var(--main);
	background-image: linear-gradient(rgba(0,0,0,.3), rgba(0,0,0,.1));
}
.ribbon-top.red,
.ribbon-left.red,
.ribbon-top.red:after,
.ribbon-left.red:after {
	background-color: var(--red);
}
.ribbon-top.orange,
.ribbon-left.orange,
.ribbon-top.orange:after,
.ribbon-left.orange:after {
	background-color: var(--orange);
}
.ribbon-top.blue,
.ribbon-left.blue,
.ribbon-top.blue:after,
.ribbon-left.blue:after {
	background-color: var(--blue);
}

/* タグリスト
-------------------------------------------------------------- */
.tag-list ul {
	display: flex;
	flex-wrap: wrap;
	gap: 16px;
	justify-content: center;
}
.tag-list ul li {
	position: relative;
	display: flex;
	gap: 4px;
  align-items: center;
	margin: 0;
	padding: 12px 16px;
	line-height: 1;
	list-style: none;
	background-color: var(--gray);
	border-radius: 100px;
	font-size: 0.8rem;
	font-weight: bold;
	white-space: nowrap;
}
.tag-list ul li.current-tag {
	background-color: var(--main);
	color: white;
}
.tag-list ul li a {
	display: block;
	text-decoration: none;
	color: var(--text);
}
.tag-list ul li:not(.current-tag):hover {
	background-color: var(--main);
}
.tag-list .count {
	font-weight: 500;
	font-size: 0.7rem;
	font-feature-settings:'palt';
	opacity: .5;
}
.tag-list ul li:not(.current-tag):hover a,
.tag-list ul li:not(.current-tag):hover .count {
	text-decoration: none;
	color: white;
}
@media screen and (max-width: 559px) {/* スマホ閲覧時は横スクロールUIに変更 */
	.tag-list::before {
		content: "scroll →";
		display: block;
		text-align: right;
		font-weight: bold;
		font-size: 0.8rem;
		line-height: 1;
		opacity: 0.5;
	}
	.tag-list ul {
		position: relative;
		overflow: scroll;
		overflow: auto hidden;
		flex-wrap: nowrap;
		justify-content: flex-start;
		gap: 8px;
		margin: 0;
		padding-top: 8px; /* for scrollbar */
	}
}

/* クリック
-------------------------------------------------------------- */

/* aタグやbuttonタグのクリック領域を拡大する */
.clickable-box::before {
	content: "";
	position: absolute;
	top: -1px;
	left: -1px;
	right: -1px;
	bottom: -1px;
	z-index: 1;
}

/* モーダルウィンドウ（dialog+JS）
-------------------------------------------------------------- */
.dialog-open-img{
	display: flex;
	justify-content: center; /*水平方向の揃え方：中央揃え*/
	align-items: center; /*垂直方向の揃え方：中央揃え*/
	background-color: rgba(0,0,0,1);
}
.dialog-open-img img:hover{
	transition: .2s;
	cursor: pointer;
	opacity: .7;
}
.dialog-open-img::before{
	position: absolute;
	content: attr(title);
	content: "クリックで拡大";
	font-size: .8rem;
	/* font-weight: bold; */
	color: var(--text);
	color: var(--subtext);
	color: white;
	transition: .2s;
	z-index: 2;
	pointer-events: none;
	opacity: 0;
	transform: translateY(50%);
}
.dialog-open-img:hover::before{
	opacity: 1;
	transform: translateY(0%);
}
.modal-dialog {
	padding: 0;
	border: none;
	border-radius: 8px;
	background-color: rgba(0,0,0,.0);
	box-shadow: 0 4px 8px rgba(0, 0, 0, .3);
	opacity: 0;
  transition: opacity .5s ease-in-out;
}
.modal-dialog::backdrop {
	background-color: rgba(0,0,0,.5);
	backdrop-filter: blur(4px);
	/* transition: opacity .5s, visibility 0.5s; */
}
.modal-dialog.show,
.modal-dialog.show::backdrop {
	opacity: 1;
}
.modal-dialog .dialog-content{
	position: relative;
	max-width: 90vw;
	max-height: 90vh;
	padding: 32px;
	background: #fff;
}
.modal-dialog .dialog-close-icon{
	position: absolute;
	top: 0;
	right: 0;
	width: 48px;
	padding-top: 42px;/* テキスト位置 */
	font-size: 10px;
	background: transparent; /* buttonタグの背景色をリセット */
	border: none; /* buttonタグのボーダーをリセット */
}
.modal-dialog .dialog-close-icon::before{ /* 閉じるボタン */
	content: '✕';
	position: absolute;
	top: 12px;
	left: 0;
	right: 0;
	margin: auto;
	width: 24px;
	height: 24px;
	font-size: 24px;
}
.modal-dialog .dialog-close-icon::after{ /* 閉じるボタンのクリックエリアをページ全体に拡張 */
	content: '';
	position: fixed;
	top: 0;
	left: 0;
	z-index: -1;
	width: 100vw;
	height: 100vh;
	opacity: 0.5;
	background: #555;
	cursor: default;
}

/* タブメニュー（:has疑似要素の非対応ブラウザでは常時表示）
-------------------------------------------------------------- */
.tab-menu:has(dt) {
	display: flex;
	flex-wrap: wrap;
}
.tab-menu dt {
	margin: 32px 0 16px;
}
.tab-menu:has(dt) dt {
	flex: 1 1;
	order: -1;
	margin: 0;
	background-color: var(--gray);
	border-top: 4px solid transparent;
	font-weight: bold;
	font-size: .8rem;
	text-align: center;
	cursor: pointer;
}
.tab-menu:has(dt) dt:not(:has(:checked)):hover {
	filter: brightness(95%);
	cursor: pointer;
}
.tab-menu:has(dt) dt label {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	height: 100%;
	padding: 12px 12px 16px;
	cursor: pointer;
}
.tab-menu dt label input {
	display: none;
}
.tab-menu:has(dt) dt:has(:checked) {
	border-top: 4px solid var(--main);
	color: var(--main);
	background-color: #fff;
	box-shadow: 8px 0px 5px -5px rgb(0 0 0 / 0.1), -8px 0px 5px -5px rgb(0 0 0 / 0.1);/* 右方向のみ */
	z-index: 1;
}
.tab-menu:has(dt) dt:has(:checked):first-child {
	box-shadow: 8px 0px 5px -5px rgb(0 0 0 / 0.1);/* 右方向のみ */
}
.tab-menu:has(dt) dt:has(:checked):last-of-type {
	box-shadow: -8px 0px 5px -5px rgb(0 0 0 / 0.1);/* 左方向のみ */
}
.tab-menu:has(dt) dt:has(:checked):only-of-type {
	box-shadow: none;/* dtが1個なら影なし */
}
.tab-menu:has(dt) dt:only-of-type label {
	cursor: default;/* dtが1個ならカーソルは矢印のまま */
}

.tab-menu:has(dt) dd { /* タブコンテンツ */
	width: 100%;
	height: 0;
	padding: 0 8px;
	background-color: #fff;
	border-bottom: solid 0px transparent;
	opacity: 0;
	visibility: hidden;
	overflow: hidden;
	transition: opacity 1s;
}
.tab-menu:has(dt) dt:has(:checked) + dd {
	height: auto;
	padding: 32px 8px;
	opacity: 1;
	visibility: visible;
	overflow: auto;
}
/* ボーダー付き */
.tab-menu-border:has(dt) {
	border-bottom: solid 1px var(--border);
}
.tab-menu-border:has(dt) dt {
	border-top: 4px solid transparent;
	border-left: solid 1px transparent;
	border-right: solid 1px transparent;
	border-bottom: solid 1px var(--border);
}
.tab-menu-border:has(dt) dt:has(:checked) {
	border-top: 4px solid var(--main);
	border-left: solid 1px var(--border);
	border-right: solid 1px var(--border);
	border-bottom: solid 1px transparent;
}
.tab-menu-border:has(dt) dd { /* タブコンテンツ */
	padding: 0 32px;
	border-left: solid 1px var(--border);
	border-right: solid 1px var(--border);
	border-bottom: solid 0px transparent;
}
.tab-menu-border:has(dt) dt:has(:checked) + dd {
	padding: 32px;
}

/* アコーディオン
-------------------------------------------------------------- */
details.bordered {
	padding: 0px 32px 0px;
	border: solid 1px var(--border);
	background-color: #fff;
	border-radius: var(--radius);
	overflow: hidden;
}
details.bordered + details.bordered {
	margin-top: 16px;
}
details.bordered[open] {
	padding-bottom: 32px;
}
details.bordered[open] summary {
	background-color: var(--gray);
}
details.bordered summary {
	margin: 0px -32px 0 -32px;
	padding: 16px 48px 16px 32px;
}
details.bordered summary:hover {
	background-color: var(--gray);
}
details.bordered summary::after {
	right: 16px;
}

ul.border {
	border: none;
	border-bottom: solid 1px var(--border);
	list-style: none;
}
ul.border > li {
	margin: 0;
	padding: 16px 0px;
	border-top: solid 1px var(--border);
}
