@charset "UTF-8";

/* -------------------------------------------------------
name : common-base.css
version : 2.0
viewport : sp -599,tb 600-1024 pc 1024-
--------------------------------------------------------- */

/* var
---------------------------------------------------------------- */
:root {
  /* theme color */
  --cl-main: #163070;
  --cl-sub: #2148a8;
  --cl-accent: #0082d0;
  --cl-accent2: #f5f2eb;
  --red: #d40000;
  --cl-base: #f2f5fa;
  --l-red: #faeeee;
  --l-red2: #fbdede;/*検索結果の強調文字ハイライト背景色*/

  /* basic color */
  --black: #000;
  --gray01: #6e6e6e;
  --gray02: #a8a8a8;
  --gray03: #cdcdcd;
  --gray04: #ebebeb;
  --gray05: #f2f2f2;
  --white: #fff;

  /* spot color */
  --ac-blue: #00008b;
  --ac-yellow: #ffff00;
  --ac-l-blue: #0000ff;

  --green01: #318712;
  --green02: #227d87;

  /*
** font-size
** 1025以上 : 固定値
** 1024以下 :
** 599以下 : clamp(最小値,)
*/
  --fs-ttl-top: clamp(3.6rem, -10.364rem * 1.6 + 21.82vw, 6rem); /* トップページタイトルサイズ */

  --fs-ttl-ll: 3.2rem;
  --fs-ttl-l: 2.8rem; /* 見出しh1サイズ */
  --fs-ttl-m: 2.6rem; /* 見出しh2サイズ */
  --fs-ttl-s: 2.2rem; /* 見出しh3,h4サイズ */
  --fs-ttl-xs: 2rem; /* 見出しh5サイズ */
  --fs-lead: 1.8rem; /* リード文サイズ */
  --fs-default: 1.6rem; /* 本文サイズ */
  --fs-notes: 1.4rem; /* 注釈サイズ */

  --fs-admin-default: 1rem; /* 管理画面用サイズ */

  --fs-contact-s: 2.286vw; /* 電話番号ボックス（3カラム用、1400pxで3.2rem） */
  --fs-contact-m: 2.571vw; /* 電話番号ボックス（2カラム用、1400pxで3.6rem） */

  /* border-radius */
  --btn-br: 40px;

  /* box-shadow */
  --shadow: 3px 3px 4px rgba(0, 0, 0, 0.16);
  --shadow2: 0 0 20px rgba(0, 0, 0, 0.16);

  /* gap */
  --gap-0: 0;
  --gap-xs: 0.5em;
  --gap-s: 1em;
  --gap-m: 1.5em;
  --gap-l: 2em;
  --gap-ll: 2.5em;

  /* padding */
  --wrap-pd: min(6em, 15%);
  --box-pd: 1.5em 1em;

  --wrap-pd-s: min(4em, 12%);

  /* layout */
  --contents-max-width: 1200px;
  --header-height: 100px;
  --hamburger-width: 60px;
}

@media only screen and (min-width: 1400px) {
  :root {
    --fs-contact-s: 3.2rem; /* 電話番号ボックス（3カラム用、1400pxで3.2rem） */
    --fs-contact-m: 3.6rem; /* 電話番号ボックス（2カラム用、1400pxで3.6rem） */
  }
}

@media only screen and (max-width: 1024px) {
  :root {
    --header-height: 60px;

    --fs-ttl-ll: max(2.6rem, 3.12vw);
    --fs-ttl-l: max(2.4rem, 2.73vw); /* 見出しh1サイズ */
    --fs-ttl-m: max(2rem, 2.54vw); /* 見出しh2サイズ */
    --fs-ttl-s: max(1.8rem, 2.15vw); /* 見出しh3,h4サイズ */
    --fs-ttl-xs: max(1.8rem, 1.95vw); /* 見出しh5サイズ */
    --fs-lead: max(1.8rem, 1.76vw); /* リード文サイズ */
    --fs-default: max(1.6rem, 1.56vw); /* 本文サイズ */
    --fs-notes: max(1.4rem, 1.37vw); /* 注釈サイズ */

    --fs-contact-s: 2.927vw; /* 電話番号ボックス（3カラム用、1024pxで3rem） */
    --fs-contact-m: 2.927vw; /* 電話番号ボックス（2カラム用、1024pxで3rem） */
  }
}

@media only screen and (max-width: 599px) {
  :root {
    --fs-ttl-ll: clamp(2.2rem, 6.8vw, 2.6rem);
    --fs-ttl-l: clamp(2rem, 6.3vw, 2.4rem); /* 見出しh1サイズ */
    --fs-ttl-m: clamp(1.8rem, 5.3vw, 2rem); /* 見出しh2サイズ */
    --fs-ttl-s: clamp(1.8rem, 4.7vw, 1.8rem); /* 見出しh3,h4サイズ */
    --fs-ttl-xs: clamp(1.6rem, 4.7vw, 1.8rem); /* 見出しh5サイズ */
    --fs-lead: clamp(1.6rem, 4.7vw, 1.8rem); /* リード文サイズ */
    --fs-default: clamp(1.4rem, 4.2vw, 1.6rem); /* 本文サイズ */
    --fs-notes: clamp(1.2rem, 3.7vw, 1.4rem); /* 注釈サイズ */

    --fs-contact-s: 6.5vw; /* 電話番号ボックス（3カラム用、599pxで4.4rem） */
    --fs-contact-m: 6.5vw; /* 電話番号ボックス（2カラム用、599pxで4.4rem） */
  }
}

/* header height
---------------------------------------------------------------- */
.chg-header-height-no-exist-menu {
  height: 60px !important;
}

/* font-size
---------------------------------------------------------------- */
.fs-ttl-ll {
  font-size: var(--fs-ttl-ll);
}
.fs-ttl-l {
  font-size: var(--fs-ttl-l);
}
.fs-ttl-m {
  font-size: var(--fs-ttl-m);
}
.fs-ttl-s {
  font-size: var(--fs-ttl-s);
}
.fs-ttl-xs {
  font-size: var(--fs-ttl-xs);
}
.fs-lead {
  font-size: var(--fs-lead);
}
.fs-default {
  font-size: var(--fs-default);
}
.fs-notes {
  font-size: var(--fs-notes);
}

/* color
---------------------------------------------------------------- */
/* background (theme) */
.bg-base {
  background: var(--cl-base);
}
.bg-main {
  background: var(--cl-main);
}
.bg-accent {
  background: var(--cl-accent);
}
/* background (basic) */
.bg-black {
  background: var(--black);
}
.bg-white {
  background: var(--white);
}
.bg-gray {
  background: var(--gray);
}
.bg-gray05 {
  background: var(--gray05);
}

/* text(theme) */
.cl-base {
  color: var(--cl-base);
}
.cl-main {
  color: var(--cl-main);
}
.cl-accent {
  color: var(--cl-accent);
}
/* text(basic) */
.cl-white {
  color: var(--white);
}
.cl-red {
  color: var(--red);
}
.cl-black {
  color: var(--black);
}

/*背景付きブロックで下に円をつける*/
.bt-circle {
  position: relative;
  overflow: hidden;
}
.bt-circle * {
  position: relative;
  z-index: 2;
}
.bt-circle:after {
  content: '';
  display: block;
  position: absolute;
  width: 200%;
  height: 1000px;
  border-radius: 50% 50% 0 0;
  bottom: -700px;
  left: 50%;
  transform: translateX(-50%);
  background: var(--white);
  z-index: 1;
}

/*グレー線*/
.bdr-gray {
  border: 1px solid var(--gray03);
}
.bdr-top-gray {
  border-top: 1px solid var(--gray03);
}

/*画像のアスペクト比　自動トリミング*/
.ratio-16-9 {
  position:relative;
  overflow: hidden;
}
.ratio-16-9 img {
  aspect-ratio: 16 / 9;
  object-fit: cover;
  width: 100%;
  height:100%;
}

/*動画の再生マーク*/
.play-mark{
  position: relative;
}
.play-mark:before{
  font-family: 'Font Awesome 6 Free';
  content: '\f144';
  font-weight: 900;
  font-size:7rem;
  color:var(--cl-main);
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index:2;
  opacity:.9;
}
.play-mark:after{
  font-family: 'Font Awesome 6 Free';
  content: '\f111';
  font-weight: 900;
  font-size:7.5rem;
  color:var(--white);
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index:1;
  opacity:.8;
}
:where(.col-3-1,.col-3-2-1,.col-3-2) .play-mark:before{
  font-size:4rem;
}
:where(.col-3-1,.col-3-2-1,.col-3-2) .play-mark:after{
  font-size:4.4rem;
}
@media only screen and (max-width: 1024px) {
  .play-mark:before{
    font-size:3.5rem;
  }
  .play-mark:after{
    font-size:4rem;
  }
}

/* PC,SP表示
---------------------------------------------------------------- */
@media only screen and (max-width: 1024px) {
  .d-pc {
    display: none !important;
  }
}
@media only screen and (min-width: 1025px) {
  .d-tb {
    display: none !important;
  }
}
@media only screen and (max-width: 599px), (min-width: 1025px) {
  .d-tb-only {
    display: none !important;
  }
}
@media only screen and (max-width: 599px) {
  .d-pc-tb {
    display: none !important;
  }
}
@media only screen and (min-width: 600px) {
  .d-sp {
    display: none !important;
  }
}

/* font-weight
---------------------------------------------------------------- */
.font-bold {
  font-weight: bold !important;
}
.font-normal {
  font-weight: normal !important;
}

/* line-height
---------------------------------------------------------------- */
.lh-16 {
  line-height: 1.6;
}
.lh-20 {
  line-height: 2;
}

/* text-align
---------------------------------------------------------------- */
.text-left {
  text-align: left;
}
.text-center {
  text-align: center;
}
.text-right {
  text-align: right;
}

.text-l-c {
  text-align: left;
}
.text-c-l {
  text-align: center;
}
.text-r-l {
  text-align: right;
}

@media only screen and (max-width: 599px) {
  .text-c-l,
  .text-r-l {
    text-align: left;
  }
  .text-l-c {
    text-align: center;
  }
}

/* width・height
---------------------------------------------------------------- */
.w-100 {
  width: 100%;
}
.mw-90 {
  max-width: 90%;
}
.mw-80 {
  max-width: 80%;
}
.mw-70 {
  max-width: 70%;
}

.mw-btn-ss {
  max-width: 150px;
}
.mw-btn-s {
  max-width: 250px;
}
.mw-btn-m {
  max-width: 350px;
}
.mw-btn-l {
  max-width: 450px;
}

.h-100 {
  height: 100%;
}

.wh-100 {
  width: 100%;
  height: 100%;
}

/* padding
---------------------------------------------------------------- */
.pd-tb {
  padding-top: var(--wrap-pd);
  padding-bottom: var(--wrap-pd);
}
.pd-tp {
  padding-top: var(--wrap-pd);
}
.pd-bt {
  padding-bottom: var(--wrap-pd);
}

.pd-tb-s {
  padding-top: var(--wrap-pd-s);
  padding-bottom: var(--wrap-pd-s);
}
.pd-tp-s {
  padding-top: var(--wrap-pd-s);
}
.pd-bt-s {
  padding-bottom: var(--wrap-pd-s);
}

/* margin-auto
---------------------------------------------------------------- */
.mlr-auto {
  margin-left: auto;
  margin-right: auto;
}
.ml-auto {
  margin-left: auto;
}
.mr-auto {
  margin-right: auto;
}

/* margin-top
---------------------------------------------------------------- */
.mt-xs {
  margin-top: 5px !important;
}
.mt-ss {
  margin-top: 10px !important;
}
.mt-sm {
  margin-top: 15px !important;
}
.mt-sl {
  margin-top: 20px !important;
}
.mt-ms {
  margin-top: 30px !important;
}
.mt-mm {
  margin-top: 40px !important;
}
.mt-ml {
  margin-top: 50px !important;
}
.mt-ls {
  margin-top: 60px !important;
}
.mt-lm {
  margin-top: 70px !important;
}
.mt-ll {
  margin-top: 80px !important;
}
.mt-xl {
  margin-top: 100px !important;
}

@media only screen and (max-width: 599px) {
  .mt-xs {
    margin-top: 1.13122% !important;
  }
  .mt-ss {
    margin-top: 2.26244% !important;
  }
  .mt-sm {
    margin-top: 3.39367% !important;
  }
  .mt-sl {
    margin-top: 4.52489% !important;
  }
  .mt-ms {
    margin-top: 6.78733% !important;
  }
  .mt-mm {
    margin-top: 9.04977% !important;
  }
  .mt-ml {
    margin-top: 11.31222% !important;
  }
  .mt-ls {
    margin-top: 13.57466% !important;
  }
  .mt-lm {
    margin-top: 15.8371% !important;
  }
  .mt-ll {
    margin-top: 18.09955% !important;
  }
  .mt-xl {
    margin-top: 22.62443% !important;
  }
}

/* margin-bottom
---------------------------------------------------------------- */
.mb-xs {
  margin-bottom: 5px !important;
}
.mb-ss {
  margin-bottom: 10px !important;
}
.mb-sm {
  margin-bottom: 15px !important;
}
.mb-sl {
  margin-bottom: 20px !important;
}
.mb-ms {
  margin-bottom: 30px !important;
}
.mb-mm {
  margin-bottom: 40px !important;
}
.mb-ml {
  margin-bottom: 50px !important;
}
.mb-ls {
  margin-bottom: 60px !important;
}
.mb-lm {
  margin-bottom: 70px !important;
}
.mb-ll {
  margin-bottom: 80px !important;
}
.mb-xl {
  margin-bottom: 100px !important;
}

@media only screen and (max-width: 599px) {
  .mb-xs {
    margin-bottom: 1.13122% !important;
  }
  .mb-ss {
    margin-bottom: 2.26244% !important;
  }
  .mb-sm {
    margin-bottom: 3.39367% !important;
  }
  .mb-sl {
    margin-bottom: 4.52489% !important;
  }
  .mb-ms {
    margin-bottom: 6.78733% !important;
  }
  .mb-mm {
    margin-bottom: 9.04977% !important;
  }
  .mb-ml {
    margin-bottom: 11.31222% !important;
  }
  .mb-ls {
    margin-bottom: 13.57466% !important;
  }
  .mb-lm {
    margin-bottom: 15.8371% !important;
  }
  .mb-ll {
    margin-bottom: 18.09955% !important;
  }
  .mb-xl {
    margin-bottom: 22.62443% !important;
  }
}

/* margin-left
---------------------------------------------------------------- */
.ml-xs {
  margin-left: 5px !important;
}
.ml-ss {
  margin-left: 10px !important;
}
.ml-sm {
  margin-left: 15px !important;
}
.ml-sl {
  margin-left: 20px !important;
}
.ml-ms {
  margin-left: 30px !important;
}
.ml-mm {
  margin-left: 40px !important;
}
.ml-ml {
  margin-left: 50px !important;
}
.ml-ls {
  margin-left: 60px !important;
}
.ml-lm {
  margin-left: 70px !important;
}
.ml-ll {
  margin-left: 80px !important;
}
.ml-xl {
  margin-left: 100px !important;
}

@media only screen and (max-width: 599px) {
  .ml-xs {
    margin-left: 1.13122% !important;
  }
  .ml-ss {
    margin-left: 2.26244% !important;
  }
  .ml-sm {
    margin-left: 3.39367% !important;
  }
  .ml-sl {
    margin-left: 4.52489% !important;
  }
  .ml-ms {
    margin-left: 6.78733% !important;
  }
  .ml-mm {
    margin-left: 9.04977% !important;
  }
  .ml-ml {
    margin-left: 11.31222% !important;
  }
  .ml-ls {
    margin-left: 13.57466% !important;
  }
  .ml-lm {
    margin-left: 15.8371% !important;
  }
  .ml-ll {
    margin-left: 18.09955% !important;
  }
  .ml-xl {
    margin-left: 22.62443% !important;
  }
}

/* margin-right
---------------------------------------------------------------- */
.mr-xs {
  margin-right: 5px !important;
}
.mr-ss {
  margin-right: 10px !important;
}
.mr-sm {
  margin-right: 15px !important;
}
.mr-sl {
  margin-right: 20px !important;
}
.mr-ms {
  margin-right: 30px !important;
}
.mr-mm {
  margin-right: 40px !important;
}
.mr-ml {
  margin-right: 50px !important;
}
.mr-ls {
  margin-right: 60px !important;
}
.mr-lm {
  margin-right: 70px !important;
}
.mr-ll {
  margin-right: 80px !important;
}
.mr-xl {
  margin-right: 100px !important;
}

@media only screen and (max-width: 599px) {
  .mr-xs {
    margin-right: 1.13122% !important;
  }
  .mr-ss {
    margin-right: 2.26244% !important;
  }
  .mr-sm {
    margin-right: 3.39367% !important;
  }
  .mr-sl {
    margin-right: 4.52489% !important;
  }
  .mr-ms {
    margin-right: 6.78733% !important;
  }
  .mr-mm {
    margin-right: 9.04977% !important;
  }
  .mr-ml {
    margin-right: 11.31222% !important;
  }
  .mr-ls {
    margin-right: 13.57466% !important;
  }
  .mr-lm {
    margin-right: 15.8371% !important;
  }
  .mr-ll {
    margin-right: 18.09955% !important;
  }
  .mr-xl {
    margin-right: 22.62443% !important;
  }
}

/* display
---------------------------------------------------------------- */
.d-i {
  display: inline;
}
.d-ib {
  display: inline-block;
}
.d-b {
  display: block;
}

/* block
---------------------------------------------------------------- */
.d-block-pc {
  display: block;
}

@media only screen and (max-width: 768px) {
  .d-block-sp {
    display: block;
  }
  .d-block-pc {
    display: inline-block;
  }
}

/* style
---------------------------------------------------------------- */
.u-line {
  text-decoration: underline;
}
/* hover */
.hov-op1:hover {
  opacity: 1;
}

/* layout
---------------------------------------------------------------- */
/* 標準 */
.b-wrapper {
  margin-left: auto;
  margin-right: auto;
  max-width: calc(var(--contents-max-width) + 6%);
  padding: 0 3%;
  width: 100%;
}
/* 読みもの */
.b-wrapper-reading {
  margin-left: auto;
  margin-right: auto;
  max-width: calc(1000px + 6%);
  padding: 0 3%;
  width: 100%;
}
.b-contents {
  max-width: 800px;
  margin-left: auto;
  margin-right: auto;
}

.l-article-wrap {
  display: flex;
  grid-template-columns: 3.25fr 1fr;
  gap: 0;
}
.l-primary {
  width: 72%;
}
.l-secondary {
  width: 24%;
}

/* 子要素を親要素からはみ出させて画面いっぱいにする(はみださせる親要素のさらに親要素に overflow:hidden;を設定すること) */
.break-wrapper {
  margin-right: calc(50% - 50vw);
  margin-left: calc(50% - 50vw);
}

@media only screen and (max-width: 1024px) {
  .b-wrapper,
  .b-wrapper-reading {
    width: 100%;
  }
  .b-contents {
    max-width: 100%;
  }
  .l-article-wrap {
    display: block !important;
  }
  .l-primary {
    width: 100%;
  }
  .l-secondary {
    width: 100%;
    margin-left: 0;
    margin-top: var(--wrap-pd);
  }
}

/* flexbox
---------------------------------------------------------------- */
.flex-basic {
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
.flex-row-reverse {
  display: flex;
  flex-direction: row-reverse;
}
.flex-nowrap {
  display: flex;
  flex-wrap: nowrap;
}
.flex-wrap {
  display: flex;
  flex-wrap: wrap;
}
.flex-between {
  display: flex;
  justify-content: space-between;
}
.flex-around {
  display: flex;
  justify-content: space-around;
}
.flex-flexend {
  display: flex;
  justify-content: flex-end;
}
.flex-column {
  display: flex;
  flex-direction: column;
}

.flex-center {
  display: flex;
  justify-content: center;
  align-items: center;
}
.flex-h-center {
  display: flex;
  justify-content: center;
}
.flex-v-center {
  display: flex;
  align-items: center;
}

/* gap
---------------------------------------------------------------- */
.gap-0 {
  gap: var(--gap-0);
}
.gap-xs {
  gap: var(--gap-xs);
}
.gap-s {
  gap: var(--gap-s);
}
.gap-m {
  gap: var(--gap-m);
}
.gap-l {
  gap: var(--gap-l);
}
.gap-ll {
  gap: var(--gap-ll);
}

/* column
---------------------------------------------------------------- */
:root {
  /* gap */
  --row-gap: 2.1em;
  --col-gap: 2.1em;
}
.col-2-1,
.col-2-2,
.col-3-1,
.col-3-2,
.col-3-2-1,
.col-4-1,
.col-4-2,
.col-4-2-1,
.col-4-3-2,
.col-5-2,
.col-5-3,
.col-5-3-2,
.col-7to3,
.col-3to7,
.col-65to35,
.col-35to65,
.col-6to4,
.col-4to6,
.col-55to45,
.col-45to55 {
  width: 100%;
  height: auto;
}

/* flex-column
---------------------------------------------------------------- */
.flex-col {
  display: flex;
  flex-wrap: wrap;
  row-gap: var(--row-gap);
  column-gap: var(--col-gap);
}

:where(.flex-col.col-2-1, .flex-col.col-2-2) > .col-item {
  --col-num: 2;
  width: calc(calc(100% / var(--col-num)) - calc(var(--col-gap) / calc(var(--col-num) / calc(var(--col-num) - 1))));
}
:where(.flex-col.col-3-1, .flex-col.col-3-2, .flex-col.col-3-2-1) > .col-item {
  --col-num: 3;
  width: calc(calc(100% / var(--col-num)) - calc(var(--col-gap) / calc(var(--col-num) / calc(var(--col-num) - 1))));
}
:where(.flex-col.col-4-1, .flex-col.col-4-2, .flex-col.col-4-2-1, .flex-col.col-4-3-2) > .col-item {
  --col-num: 4;
  width: calc(calc(100% / var(--col-num)) - calc(var(--col-gap) / calc(var(--col-num) / calc(var(--col-num) - 1))));
}
:where(.flex-col.col-5-2, .flex-col.col-5-3, .flex-col.col-5-3-2) > .col-item {
  --col-num: 5;
  width: calc(calc(100% / var(--col-num)) - calc(var(--col-gap) / calc(var(--col-num) / calc(var(--col-num) - 1))));
}

.flex-col.col-7to3 > .col-item:first-child {
  width: 68%;
}
.flex-col.col-7to3 > .col-item:last-child {
  width: 28%;
}
.flex-col.col-3to7 > .col-item:first-child {
  width: 28%;
}
.flex-col.col-3to7 > .col-item:last-child {
  width: 68%;
}
.flex-col.col-65to35 > .col-item:first-child {
  width: 63%;
}
.flex-col.col-65to35 > .col-item:last-child {
  width: 33%;
}
.flex-col.col-35to65 > .col-item:first-child {
  width: 33%;
}
.flex-col.col-35to65 > .col-item:last-child {
  width: 63%;
}
.flex-col.col-6to4 > .col-item:first-child {
  width: 58%;
}
.flex-col.col-6to4 > .col-item:last-child {
  width: 38%;
}
.flex-col.col-4to6 > .col-item:first-child {
  width: 38%;
}
.flex-col.col-4to6 > .col-item:last-child {
  width: 58%;
}
.flex-col.col-55to45 > .col-item:first-child {
  width: 53%;
}
.flex-col.col-55to45 > .col-item:last-child {
  width: 43%;
}
.flex-col.col-45to55 > .col-item:first-child {
  width: 43%;
}
.flex-col.col-45to55 > .col-item:last-child {
  width: 53%;
}

.flex-col.col-7to3.flex-row-reverse > .col-item:first-child {
  width: 28%;
}
.flex-col.col-7to3.flex-row-reverse > .col-item:last-child {
  width: 68%;
}
.flex-col.col-3to7.flex-row-reverse > .col-item:first-child {
  width: 68%;
}
.flex-col.col-3to7.flex-row-reverse > .col-item:last-child {
  width: 28%;
}
.flex-col.col-65to35.flex-row-reverse > .col-item:first-child {
  width: 33%;
}
.flex-col.col-65to35.flex-row-reverse > .col-item:last-child {
  width: 63%;
}
.flex-col.col-35to65.flex-row-reverse > .col-item:first-child {
  width: 63%;
}
.flex-col.col-35to65.flex-row-reverse > .col-item:last-child {
  width: 33%;
}
.flex-col.col-6to4.flex-row-reverse > .col-item:first-child {
  width: 38%;
}
.flex-col.col-6to4.flex-row-reverse > .col-item:last-child {
  width: 58%;
}
.flex-col.col-4to6.flex-row-reverse > .col-item:first-child {
  width: 58%;
}
.flex-col.col-4to6.flex-row-reverse > .col-item:last-child {
  width: 38%;
}
.flex-col.col-55to45.flex-row-reverse > .col-item:first-child {
  width: 43%;
}
.flex-col.col-55to45.flex-row-reverse > .col-item:last-child {
  width: 53%;
}
.flex-col.col-45to55.flex-row-reverse > .col-item:first-child {
  width: 53%;
}
.flex-col.col-45to55.flex-row-reverse > .col-item:last-child {
  width: 43%;
}

@media only screen and (max-width: 1024px) {
  :where(.flex-col.col-3-2-1, .flex-col.col-4-2-1) > .col-item {
    --col-num: 2;
    width: calc(calc(100% / var(--col-num)) - calc(var(--col-gap) / calc(var(--col-num) / calc(var(--col-num) - 1))));
  }
  :where(.flex-col.col-4-3-2, .flex-col.col-5-3-2) > .col-item {
    --col-num: 3;
    width: calc(calc(100% / var(--col-num)) - calc(var(--col-gap) / calc(var(--col-num) / calc(var(--col-num) - 1))));
  }
}

@media only screen and (max-width: 599px) {
  :root {
    /* gap */
    --row-gap: 1.55em;
    --col-gap: 1.55em;
  }
  :where(.flex-col.col-2-1, .flex-col.col-3-1, .flex-col.col-3-2-1, .flex-col.col-4-1, .flex-col.col-4-2-1, .flex-col.col-5-1) > .col-item {
    --col-num: 1;
    width: 100%;
  }
  :where(.flex-col.col-2-2, .flex-col.col-3-2, .flex-col.col-4-2, .flex-col.col-4-3-2, .flex-col.col-5-3-2) > .col-item {
    --col-num: 2;
    width: calc(calc(100% / var(--col-num)) - calc(var(--col-gap) / calc(var(--col-num) / calc(var(--col-num) - 1))));
  }
}

/* grid-column
---------------------------------------------------------------- */
.grid-col {
  display: grid;
  row-gap: var(--row-gap);
  column-gap: var(--col-gap);
}
.grid-col.col-2-1,
.grid-col.col-2-2 {
  grid-template-columns: repeat(2, 1fr);
}
.grid-col.col-3-1,
.grid-col.col-3-2,
.grid-col.col-3-2-1 {
  grid-template-columns: repeat(3, 1fr);
}
.grid-col.col-4-1,
.grid-col.col-4-2,
.grid-col.col-4-2-1,
.grid-col.col-4-3-2 {
  grid-template-columns: repeat(4, 1fr);
}
.grid-col.col-5-2,
.grid-col.col-5-3 {
  grid-template-columns: repeat(5, 1fr);
}

.grid-col.col-7to3 {
  grid-template-columns: 2.3fr 1fr;
}
.grid-col.col-3to7 {
  grid-template-columns: 1fr 2.3fr;
}
.grid-col.col-65to35 {
  grid-template-columns: 1.8fr 1fr;
}
.grid-col.col-35to65 {
  grid-template-columns: 1fr 1.8fr;
}
.grid-col.col-6to4 {
  grid-template-columns: 1.5fr 1fr;
}
.grid-col.col-4to6 {
  grid-template-columns: 1fr 1.5fr;
}
.grid-col.col-55to45 {
  grid-template-columns: 1.2fr 1fr;
}
.grid-col.col-45to55 {
  grid-template-columns: 1fr 1.2fr;
}

/* gapなし */
.grid-gap-none {
  gap: 0;
}
.grid-gap-row-none {
  row-gap: 0;
}
.grid-gap-clm-none {
  column-gap: 0;
}
/* 左右逆 */
.grid-clm-reverse {
  direction: rtl;
}
.grid-clm-reverse .col-item {
  direction: ltr;
}
/* 中央 */
.grid-center {
  place-items: center;
} /* 縦横 */
.grid-h-center {
  justify-items: center;
} /* 横 */
.grid-v-center {
  align-items: center;
} /* 縦 */

@media only screen and (max-width: 1024px) {
  .grid-col.col-3-2-1,
  .grid-col.col-4-2-1 {
    grid-template-columns: repeat(2, 1fr);
  }
  .grid-col.col-4-3-2 {
    grid-template-columns: repeat(3, 1fr);
  }
}
@media only screen and (max-width: 599px) {
  .grid-col.col-2-1,
  .grid-col.col-3-1,
  .grid-col.col-4-1,
  .grid-col.col-4-2-1,
  .grid-col.col-3-2-1,
  .grid-col.col-7to3,
  .grid-col.col-3to7,
  .grid-col.col-6to4,
  .grid-col.col-4to6,
  .grid-col.col-35to65,
  .grid-col.col-65to35,
  .grid-col.col-55to45,
  .grid-col.col-45to55,
  .flex-col.col-7to3,
  .flex-col.col-3to7,
  .flex-col.col-6to4,
  .flex-col.col-4to6,
  .flex-col.col-35to65,
  .flex-col.col-65to35,
  .flex-col.col-55to45,
  .flex-col.col-45to55 {
    display: block;
  }
  .grid-col.col-2-1 > .col-item + .col-item,
  .grid-col.col-3-1 > .col-item + .col-item,
  .grid-col.col-4-1 > .col-item + .col-item,
  .grid-col.col-4-2-1 > .col-item + .col-item,
  .grid-col.col-3-2-1 > .col-item + .col-item,
  .grid-col.col-7to3 > .col-item + .col-item,
  .grid-col.col-3to7 > .col-item + .col-item,
  .grid-col.col-6to4 > .col-item + .col-item,
  .grid-col.col-4to6 > .col-item + .col-item,
  .grid-col.col-35to65 > .col-item + .col-item,
  .grid-col.col-65to35 > .col-item + .col-item,
  .grid-col.col-55to45 > .col-item + .col-item,
  .grid-col.col-45to55 > .col-item + .col-item,
  .flex-col.col-7to3 > .col-item + .col-item,
  .flex-col.col-3to7 > .col-item + .col-item,
  .flex-col.col-6to4 > .col-item + .col-item,
  .flex-col.col-4to6 > .col-item + .col-item,
  .flex-col.col-35to65 > .col-item + .col-item,
  .flex-col.col-65to35 > .col-item + .col-item,
  .flex-col.col-55to45 > .col-item + .col-item,
  .flex-col.col-45to55 > .col-item + .col-item {
    margin-top: 2rem;
  }
  .flex-col.col-7to3 > .col-item,
  .flex-col.col-3to7 > .col-item,
  .flex-col.col-6to4 > .col-item,
  .flex-col.col-4to6 > .col-item,
  .flex-col.col-35to65 > .col-item,
  .flex-col.col-65to35 > .col-item,
  .flex-col.col-55to45 > .col-item,
  .flex-col.col-45to55 > .col-item {
    width: 100% !important;
  }
  .grid-col.col-3-2,
  .grid-col.col-4-2,
  .grid-col.col-5-2,
  .grid-col.col-4-3-2 {
    grid-template-columns: repeat(2, 1fr);
  }
  .grid-col.col-5-3,
  .grid-col.col-6-3 {
    grid-template-columns: repeat(3, 1fr);
  }
}
