@charset "utf-8";

/* resset.dev • v5.0.2 */

/* # =================================================================
   # Global selectors
   # ================================================================= */

html {
  box-sizing: border-box;
  -webkit-text-size-adjust: 100%; /* Prevent adjustments of font size after orientation changes in iOS */
  word-break: normal;
  -moz-tab-size: 4;
  tab-size: 4;
}

*,
::before,
::after {
  background-repeat: no-repeat; /* Set `background-repeat: no-repeat` to all elements and pseudo elements */
  box-sizing: inherit;
}

::before,
::after {
  text-decoration: inherit; /* Inherit text-decoration and vertical align to ::before and ::after pseudo elements */
  vertical-align: inherit;
}

* {
  padding: 0; /* Reset `padding` and `margin` of all elements */
  margin: 0;
}

/* # =================================================================
     # General elements
     # ================================================================= */

hr {
  overflow: visible; /* Show the overflow in Edge and IE */
  height: 0; /* Add the correct box sizing in Firefox */
  color: inherit; /* Correct border color in Firefox. */
}

details,
main {
  display: block; /* Render the `main` element consistently in IE. */
}

summary {
  display: list-item; /* Add the correct display in all browsers */
}

small {
  font-size: 80%; /* Set font-size to 80% in `small` elements */
}

[hidden] {
  display: none; /* Add the correct display in IE */
}

abbr[title] {
  border-bottom: none; /* Remove the bottom border in Chrome 57 */
  /* Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari */
  text-decoration: underline;
  text-decoration: underline dotted;
}

a {
  background-color: transparent; /* Remove the gray background on active links in IE 10 */
}

a:active,
a:hover {
  outline-width: 0; /* Remove the outline when hovering in all browsers */
}

code,
kbd,
pre,
samp {
  font-family: monospace, monospace; /* Specify the font family of code elements */
}

pre {
  font-size: 1em; /* Correct the odd `em` font sizing in all browsers */
}

b,
strong {
  font-weight: bolder; /* Add the correct font weight in Chrome, Edge, and Safari */
}

/* https://gist.github.com/unruthless/413930 */
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

table {
  border-color: inherit; /* Correct border color in all Chrome, Edge, and Safari. */
  text-indent: 0; /* Remove text indentation in Chrome, Edge, and Safari */
}

iframe {
  border-style: none;
}

/* # =================================================================
     # Forms
     # ================================================================= */

input {
  border-radius: 0;
}

[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
  height: auto; /* Correct the cursor style of increment and decrement buttons in Chrome */
}

[type="search"] {
  -webkit-appearance: textfield; /* Correct the odd appearance in Chrome and Safari */
  appearance: textfield;
  outline-offset: -2px; /* Correct the outline style in Safari */
}

[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none; /* Remove the inner padding in Chrome and Safari on macOS */
}

textarea {
  overflow: auto; /* Internet Explorer 11+ */
  resize: vertical; /* Specify textarea resizability */
}

button,
input,
optgroup,
select,
textarea {
  font: inherit; /* Specify font inheritance of form elements */
}

optgroup {
  font-weight: bold; /* Restore the font weight unset by the previous rule */
}

button {
  overflow: visible; /* Address `overflow` set to `hidden` in IE 8/9/10/11 */
}

button,
select {
  text-transform: none; /* Firefox 40+, Internet Explorer 11- */
}

/* Apply cursor pointer to button elements */
button,
[type="button"],
[type="reset"],
[type="submit"],
[role="button"] {
  cursor: pointer;
}

/* Remove inner padding and border in Firefox 4+ */
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
  border-style: none;
  padding: 0;
}

/* Replace focus style removed in the border reset above */
button:-moz-focusring,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
  outline: 1px dotted ButtonText;
}

button,
  html [type='button'], /* Prevent a WebKit bug where (2) destroys native `audio` and `video`controls in Android 4 */
  [type='reset'],
  [type='submit'] {
  -webkit-appearance: button; /* Correct the inability to style clickable types in iOS */
  appearance: button;
}

/* Remove the default button styling in all browsers */
button,
input,
select,
textarea {
  background-color: transparent;
  border-style: none;
}

a:focus,
button:focus,
input:focus,
select:focus,
textarea:focus {
  outline-width: 0;
}

/* Style select like a standard input */
select {
  -moz-appearance: none; /* Firefox 36+ */
  -webkit-appearance: none; /* Chrome 41+ */
  appearance: none;
}

select::-ms-expand {
  display: none; /* Internet Explorer 11+ */
}

select::-ms-value {
  color: currentColor; /* Internet Explorer 11+ */
}

legend {
  border: 0; /* Correct `color` not being inherited in IE 8/9/10/11 */
  color: inherit; /* Correct the color inheritance from `fieldset` elements in IE */
  display: table; /* Correct the text wrapping in Edge and IE */
  max-width: 100%; /* Correct the text wrapping in Edge and IE */
  white-space: normal; /* Correct the text wrapping in Edge and IE */
  max-width: 100%; /* Correct the text wrapping in Edge 18- and IE */
}

::-webkit-file-upload-button {
  /* Correct the inability to style clickable types in iOS and Safari */
  -webkit-appearance: button;
  color: inherit;
  font: inherit; /* Change font properties to `inherit` in Chrome and Safari */
}

/* Replace pointer cursor in disabled elements */
[disabled] {
  cursor: default;
}

/* # =================================================================
     # Specify media element style
     # ================================================================= */

img {
  border-style: none; /* Remove border when inside `a` element in IE 8/9/10 */
}

/* Add the correct vertical alignment in Chrome, Firefox, and Opera */
progress {
  vertical-align: baseline;
}

/* # =================================================================
     # Accessibility
     # ================================================================= */

/* Specify the progress cursor of updating elements */
[aria-busy="true"] {
  cursor: progress;
}

/* Specify the pointer cursor of trigger elements */
[aria-controls] {
  cursor: pointer;
}

/* Specify the unstyled cursor of disabled, not-editable, or otherwise inoperable elements */
[aria-disabled="true"] {
  cursor: default;
}

/*
--- -- - -- --- -- - -- --- -- - -- --- -- - -- ---
variabes
--- -- - -- --- -- - -- --- -- - -- --- -- - -- ---
*/

/* color */
:root {
  --main-color: #45ade5;
  --accent-color: #ffa01c;
  --background-color: #f2f2f2;
}

/* font */
:root {
  --font-family-base: "Noto Sans JP", sans-serif;
  --font-family-en: "Montserrat", sans-serif;

  /* px から rem 変換 */
  --px10: calc(10 / 16 * 1rem);
  --px11: calc(11 / 16 * 1rem);
  --px12: calc(12 / 16 * 1rem);
  --px13: calc(13 / 16 * 1rem);
  --px14: calc(14 / 16 * 1rem);
  --px15: calc(15 / 16 * 1rem);
  --px16: calc(16 / 16 * 1rem);
  --px17: calc(17 / 16 * 1rem);
  --px18: calc(18 / 16 * 1rem);
  --px19: calc(19 / 16 * 1rem);
  --px20: calc(20 / 16 * 1rem);
  --px21: calc(21 / 16 * 1rem);
  --px22: calc(22 / 16 * 1rem);
  --px23: calc(23 / 16 * 1rem);
  --px24: calc(24 / 16 * 1rem);
  --px25: calc(25 / 16 * 1rem);
  --px26: calc(26 / 16 * 1rem);
  --px27: calc(27 / 16 * 1rem);
  --px28: calc(28 / 16 * 1rem);
  --px29: calc(29 / 16 * 1rem);
  --px30: calc(30 / 16 * 1rem);
  --px31: calc(31 / 16 * 1rem);
  --px32: calc(32 / 16 * 1rem);
  --px33: calc(33 / 16 * 1rem);
  --px34: calc(34 / 16 * 1rem);
  --px35: calc(35 / 16 * 1rem);
  --px36: calc(36 / 16 * 1rem);
  --px37: calc(37 / 16 * 1rem);
  --px38: calc(38 / 16 * 1rem);
  --px39: calc(39 / 16 * 1rem);
  --px40: calc(40 / 16 * 1rem);
  --px41: calc(41 / 16 * 1rem);
  --px42: calc(42 / 16 * 1rem);
  --px43: calc(43 / 16 * 1rem);
  --px44: calc(44 / 16 * 1rem);
  --px45: calc(45 / 16 * 1rem);
  --px46: calc(46 / 16 * 1rem);
  --px47: calc(47 / 16 * 1rem);
  --px48: calc(48 / 16 * 1rem);
  --px49: calc(49 / 16 * 1rem);
  --px50: calc(50 / 16 * 1rem);
  --px51: calc(51 / 16 * 1rem);
  --px52: calc(52 / 16 * 1rem);
  --px53: calc(53 / 16 * 1rem);
  --px54: calc(54 / 16 * 1rem);
  --px55: calc(55 / 16 * 1rem);
  --px56: calc(56 / 16 * 1rem);
  --px57: calc(57 / 16 * 1rem);
  --px58: calc(58 / 16 * 1rem);
  --px59: calc(59 / 16 * 1rem);
  --px60: calc(60 / 16 * 1rem);
  --px66: calc(66 / 16 * 1rem);
}

/*
--- -- - -- --- -- - -- --- -- - -- --- -- - -- ---
base style
--- -- - -- --- -- - -- --- -- - -- --- -- - -- ---
*/

:root {
  font-family: var(--font-family-base);
  scroll-behavior: smooth;
}

ul,
ol {
  list-style-type: none;
}

a[href^="tel:"] {
  pointer-events: auto;
  cursor: pointer;

  @media (width >= 768px) {
    pointer-events: none;
    color: inherit;
  }
}

/*
--- -- - -- --- -- - -- --- -- - -- --- -- - -- ---
layout
--- -- - -- --- -- - -- --- -- - -- --- -- - -- ---
*/

.container {
  margin-inline: min(5.6%, 20px);

  @media (width >= 1024px) {
    margin-inline: none;
  }
}

.flex-container {
  @media (width >= 1024px) {
    display: flex;
  }
}

/* layout header */

.header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1200; /* オーバーレイ(1000台)より前面に */
  height: 56px;
  background-color: #fff;

  @media (width >= 768px) {
    height: 80px;
  }
}

.header__head {
  display: flex;
  align-items: center;
  width: 100%;
  padding-inline: 15px;
  position: relative;
  z-index: 1300; /* オーバーレイより前面に表示 */

  @media (width >= 768px) {
    padding-left: 16px;
    width: auto;
  }
  @media (width >= 900px) {
    padding-left: 24px;
  }
  @media (width >= 1024px) {
    padding-left: 38px;
  }
}

.header__heading-group {
  display: flex;
  align-items: center;
  text-decoration: none;
  color: inherit;
}

.header__logo-link {
  display: flex;
  align-items: center;
  width: 51px;

  @media (width >= 768px) {
    width: 60px;
  }

  @media (width >= 1024px) {
    width: 75px;
  }
}

.header__logo-img {
  width: 100%;
}

.header__heading {
  font-size: var(--px13);
  font-weight: 700;
  margin-left: 10px;

  @media (width >= 900px) {
    margin-left: 16px;
  }

  @media (width >= 1024px) {
    margin-left: 24px;
    font-size: var(--px16);
  }

  @media (width >= 1200px) {
    font-size: var(--px18);
  }
}

.header__nav-block {
  display: none;

  @media (width >= 768px) {
    display: flex;
    column-gap: 16px;
    height: 100%;
  }

  @media (width >= 900px) {
    column-gap: 40px;
  }
  @media (width >= 1024px) {
    column-gap: 54px;
  }
}

.header__gnav {
  display: flex;
  align-items: center;

  @media (width >= 1024px) {
    align-items: stretch;
  }
}

.header__gnav-list {
  display: flex;
  align-items: center;
}

.header__gnav-item {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100%;
}

.header__gnav-item a {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  padding-inline: 3px;
  width: 100%;
  height: 100%;
  text-decoration: none;
  font-size: var(--px12);
  font-weight: 700;
  color: inherit;

  @media (width >= 768px) {
    border-bottom: solid 4px transparent;
  }

  @media (width >= 840px) {
    padding-inline: 8px;
    font-size: var(--px12);
  }
  @media (width >= 900px) {
    font-size: var(--px13);
  }
  @media (width >= 940px) {
    padding-inline: 10px;
  }
  @media (width >= 1024px) {
    font-size: var(--px15);
  }
  @media (width >= 1064px) {
    padding-inline: 15px;
  }
}

.header__gnav-item a:hover {
  @media (width >= 768px) {
    border-bottom: solid 4px var(--main-color);
    transition: border-bottom 0.3s ease-out;
  }
}

.header__contact-list {
  display: flex;
  height: 100%;
}

.header__contact-item {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 152px;
  color: #fff;

  @media (width >= 900px) {
    width: 175px;
  }
  @media (width >= 1200px) {
    width: 185px;
  }
}

.header__tel-link {
  display: flex;
  flex-direction: column-reverse;
  justify-content: center;
  align-items: center;
  text-decoration: none;
  background-color: var(--main-color);
  color: inherit;
  width: 100%;
  height: 100%;

  @media (width >= 768px) {
    flex-direction: column;
  }
}

.header__tel-link:hover {
  background-color: color-mix(in srgb, var(--main-color) 85%, white 15%);
  transition: opacity 0.3s ease;
}

.header__tel-hours {
  /* font-size: calc(13 / 16 * 1rem); */
  font-size: var(--px14);
  font-weight: 700;
  letter-spacing: -0.02em;
  text-align: center;

  @media (width >= 768px) {
    font-size: var(--px10);
  }

  @media (width >= 900px) {
    font-size: var(--px12);
  }

  @media (width >= 1200px) {
    font-size: var(--px13);
  }
}

.header__tel-number {
  margin-top: 5px;
}

.header__tel-icon {
  position: relative;
  top: 1px;

  @media (width >= 768px) {
    top: 3px;
  }
}

.header__tel-text {
  margin-left: 2px;
  font-family: var(--font-family-en);
  font-size: var(--px16);
  font-weight: 700;

  @media (width >= 900px) {
    font-size: var(--px19);
  }
  @media (width >= 1200px) {
    font-size: var(--px21);
  }
}

.header__contact-link {
  display: inline-flex;
  justify-content: center;
  background-color: var(--accent-color);
  align-items: center;
  width: 100%;
  height: 100%;
  color: #ffffff;
  font-size: var(--px14);
  font-weight: 700;
  text-decoration: none;
  transition: background-color 0.3s ease;

  @media (width < 768px) {
    text-align: center;
    justify-content: space-between;
    padding-inline: 7.8%;
  }

  @media (width >= 900px) {
    font-size: var(--px16);
  }
}

.header__contact-link:hover {
  background-color: color-mix(in srgb, var(--accent-color) 85%, white 15%);
}

.header__contact-icon {
  @media (width < 480px) {
    margin-left: 0;
  }

  @media (480px <= width < 768px) {
    margin-left: auto;
    margin-right: 0.5em;
  }
}

.header__contact-arrow {
  @media (width < 480px) {
    margin-left: 0;
  }

  @media (480px <= width < 768px) {
    margin-left: auto;
  }
}

.header__contact-text {
  margin-left: 4px;
}

.header__toggle {
  display: block;
  margin-left: auto;
  position: relative;
  width: 32px;
  height: 16px;

  @media (width >= 768px) {
    display: none;
  }
}

/* ハンバーガー*/
.header__drawer-toggle {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  display: block;
  width: 50px; /* クリック領域（横） */
  height: 40px; /* クリック領域（縦） */
}

/* クリックはbuttonで受けるため、内包spanはイベントを透過 */
.header__drawer-toggle .header__icon-hamburger {
  pointer-events: none;
}

/* アイコンは32x16のまま、ボタン中央に配置（左右9px余白、上下7px余白） */
.header__drawer-toggle .header__icon-hamburger {
  width: 32px;
  left: 9px; /* (50 - 32) / 2 */
}
.header__drawer-toggle .header__icon-hamburger:nth-of-type(1) {
  top: 12px;
}
.header__drawer-toggle .header__icon-hamburger:nth-of-type(2) {
  top: 20px;
}
.header__drawer-toggle .header__icon-hamburger:nth-of-type(3) {
  top: 28px;
}

@media (width < 768px) {
  /* ドロワー開時のXアイコン位置も中央に補正 */
  .is-drawer-open .header__drawer-toggle .header__icon-hamburger:nth-of-type(1) {
    top: 20px;
  }
  .is-drawer-open .header__drawer-toggle .header__icon-hamburger:nth-of-type(3) {
    top: 20px;
  }
}

.header__icon-hamburger {
  display: block;
  position: absolute;
  left: 0;
  width: 100%;
  height: 2px;
  border-radius: 4px;
  background: #000;
  transition: 0.2s cubic-bezier(0.84, 0.03, 0.25, 1);
}

.header__icon-hamburger:nth-of-type(1) {
  top: 0;
  width: 65%;
}

.header__icon-hamburger:nth-of-type(2) {
  top: 8px;
  width: 65%;
}

.header__icon-hamburger:nth-of-type(3) {
  top: 16px;
  width: 65%;
}

/* === SP Drawer (hamburger menu) ==================== */
@media (width < 768px) {
  /* カバー全体（オーバーレイ兼パネル） */
  .header__nav-block {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: block; /* SPではJSで開くまで不可視にする */
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.25s ease, visibility 0.25s ease;
  }

  /* 中身の白パネルは使わず、要素個別で白を持たせる（下部は透過） */
  .header__nav-block::before {
    content: "";
    position: absolute;
    /* inset: 0; */
    top: 56px;
    right: 0;
    left: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.5);
  }

  /* 開いた状態（JSでbodyなどに付与想定） */
  .is-drawer-open .header__nav-block {
    opacity: 1;
    visibility: visible;
  }

  /* 上部ロゴ／見出しと閉じるボタン行 */
  .header__head {
    position: relative;
    z-index: 1001; /* 白パネルより前に */
  }

  /* ハンバーガー → 閉じるアイコン */
  .is-drawer-open .header__icon-hamburger:nth-of-type(1) {
    top: 8px;
    transform: rotate(45deg);
    background: #000;
  }
  .is-drawer-open .header__icon-hamburger:nth-of-type(2) {
    opacity: 0;
  }
  .is-drawer-open .header__icon-hamburger:nth-of-type(3) {
    top: 8px;
    transform: rotate(-45deg);
    background: #000;
  }

  /* メニュー本体 */
  .header__gnav,
  .header__gnav-contact {
    position: relative;
    z-index: 1001;
  }

  .header__gnav {
    margin-top: 56px;

    @media (width >= 768px) {
      margin-top: 24px;
    }
  }

  .header__gnav-list {
    display: block;
    width: 100%;
    padding-inline: 20px;
    background: #fff; /* 上部メニューは白で塗りつぶす */
  }
  .header__gnav-item a {
    display: block;
    padding-block: 24px;
    border-top: 1px solid #e6e6e6;
    font-size: var(--px18);
    text-decoration: none;
    color: #000;
    text-align: center;

    @media (width >= 768px) {
      padding-block: 22px;
      font-size: var(--px20);
    }
  }

  .header__gnav-item a:hover span {
    text-decoration: underline;
  }

  .header__gnav-item:first-child a {
    @media (width < 768px) {
      border-top: 1px solid transparent;
    }
  }

  .header__gnav-item:last-child a {
    border-bottom: 1px solid #e6e6e6;
  }

  /* 連絡先ブロック（TEL／MAIL） */
  .header__gnav-contact {
    padding-top: 40px;
    padding-inline: 20px;
    background: #fff; /* 連絡先ブロックも白 */
    position: relative;
    padding-bottom: 30px; /* 白を30px分だけ下に延長 */

    @media (width >= 768px) {
      padding-top: 0;
      margin-top: 24px;
    }
  }
  .header__contact-list {
    display: block;
  }
  .header__contact-item {
    width: 100%;
    /* border-radius: 4px; */
    overflow: hidden;

    @media (width < 768px) {
      height: 83px;
    }
  }
  .header__contact-item.-is-tel {
    padding-block: 0;
  }
  .header__tel-number {
    display: flex;
    justify-content: center;
    align-items: center;
    column-gap: 8px;
  }
  .header__tel-text {
    font-size: var(--px26);

    @media (width >= 768px) {
      font-size: var(--px24);
    }
  }
  .header__contact-item.-is-mail {
    margin-top: 16px;
  }
}

/* ドロワー開放中は背面スクロール不可 */
body.is-drawer-open {
  overflow: hidden;
  height: 100%;
  touch-action: none;
}

/*
--- -- - -- --- -- - -- --- -- - -- --- -- - -- ---
project
--- -- - -- --- -- - -- --- -- - -- --- -- - -- ---
*/

/*
mv
*/
.mv {
  position: relative;

  margin-top: 56px;

  @media (width >= 768px) {
    margin-top: 80px;
  }
}

.mv__content-wrapper {
  position: absolute;
  top: 40px;
  right: 20px;
  left: 20px;
  bottom: 30px;
  margin-inline: auto;

  @media (width >= 768px) {
    position: absolute;
    top: 15.5%;
    left: 6.25%;
    margin-inline: 0;
    width: 55%;
  }
}

.mv__image {
  width: 100%;
}

.mv__text-balloon {
  width: 100%;
  max-width: 440px;

  @media (width >= 768px) {
    width: 66.8%;
    max-width: 529px;
  }
}

.mv__text-balloon img {
  width: 100%;
}

.mv__text-main {
  margin-top: 0px;
  line-height: 2;
  font-weight: 900;
}

.is-first-line {
  background-color: #fff;
  padding: 14px 6px 6px 10px;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone; /* Safari */
  line-height: 1.75;

  @media (1360px > width >= 768px) {
    font-size: 3.29vw;
  }

  @media (width >= 768px) {
    /* padding: 6px 0 6px 10px; */
    padding: 9px 0 9px 15px;
    line-height: 2;
  }

  @media (width >= 1360px) {
    font-size: var(--px45);
  }
}

.mv__text-main span .--small {
  font-size: var(--px25);

  @media (width >= 1024px) {
    margin-left: 7px;
  }

  @media (1360px > width >= 768px) {
    font-size: 3.29vw;
  }

  @media (width >= 1360px) {
    font-size: var(--px45);
  }
}

.mv__text-main .is-second-line {
  background-color: #fff;
  padding: 2px 0 5px 10px;
  padding-right: 0.5em;
  letter-spacing: 0.1em;
  font-size: var(--px25);

  @media (1360px > width >= 768px) {
    font-size: 3.29vw;
  }

  @media (width >= 1024px) {
    padding: 9px 18px 9px 15px;
  }

  @media (width >= 1360px) {
    font-size: var(--px45);
  }
}

.mv__text-main strong {
  /* 左(#E6624D) → 右(#FFA01C) の線形グラデーション */
  background: linear-gradient(90deg, #e6624d 0%, #ffa01c 100%);

  /* 文字で背景を切り抜く */
  -webkit-background-clip: text; /* Safari/Chrome */
  background-clip: text; /* Firefox など */

  /* 文字自体は透明にして、背景を見せる */
  color: transparent; /* Firefox */
  -webkit-text-fill-color: transparent; /* Safari/Chrome */

  /* テキスト幅に背景を合わせる（行幅いっぱいに広がらないように） */
  display: inline-block;

  font-size: var(--px29);

  box-decoration-break: clone;
  -webkit-box-decoration-break: clone; /* Safari */

  @media (1360px > width >= 768px) {
    font-size: 3.75vw;
  }

  @media (width >= 1360px) {
    font-size: var(--px51);
  }
}

.mv__points {
  display: flex;
  column-gap: 7px;

  @media (width < 768px) {
    position: absolute;
    justify-content: space-between;
    bottom: 0;
    width: 100%;
  }

  @media (width >= 768px) {
    margin-top: 30px;
    column-gap: 15px;
  }
  @media (width >= 900px) {
    margin-top: 36px;
    column-gap: 15px;
  }

  @media (width >= 1024px) {
    margin-top: 48px;
    column-gap: 15px;
  }
}
.mv__points-item {
  position: relative;
  padding-top: 20px;
  padding-bottom: 16px;
  width: 33.333%;
  background-color: var(--main-color);
  border-radius: 10px;
  color: #ffffff;
  text-align: center;

  @media (width >= 768px) {
    padding-top: 40px;
    padding-bottom: 16px;
    width: 210px;
  }
  @media (width >= 900px) {
    padding-top: 54px;
    padding-bottom: 16px;
  }
  @media (width >= 1024px) {
    padding-top: 68px;
    padding-bottom: 32px;
  }
}

.mv__points-icon {
  position: absolute;
  top: -24px;
  left: 50%;
  transform: translateX(-50%);
  width: 44px;

  @media (width >= 768px) {
    width: 60px;
  }
  @media (width >= 900px) {
    width: 75px;
  }
  @media (width >= 1024px) {
    width: 90px;
  }
}

.mv__points-icon img {
  width: 100%;
}

.mv__points-sub {
  font-size: var(--px13);
  font-weight: 700;
  letter-spacing: 0.1em;

  @media (width >= 768px) {
    font-size: var(--px14);
  }

  @media (width >= 900px) {
    font-size: var(--px16);
  }

  @media (width >= 1024px) {
    font-size: var(--px18);
  }
}

.mv__points-main {
  font-size: var(--px16);
  color: #ffff5a;
  font-weight: 700;
  letter-spacing: 0.1em;

  @media (width >= 768px) {
    font-size: var(--px19);
  }
  @media (width >= 968px) {
    font-size: var(--px22);
  }

  @media (width >= 1024px) {
    font-size: var(--px30);
  }
}

/* 3つのポイント */
.points {
  padding-top: 60px;
  padding-bottom: 80px;
  background-color: var(--background-color);

  @media (width >= 1024px) {
    padding-top: 100px;
    padding-bottom: 80px;
  }
}

.points .section-head {
  width: fit-content;
  margin-inline: auto;
  text-align: center;
}

.points__heading-balloon {
  display: block;
  width: fit-content;
  margin-inline: auto;
  padding: 9px 24px 19px;
  clip-path: polygon(0 0, 100% 0, 100% calc(100% - 11px), 51.5% calc(100% - 11px), 50% 100%, 48.5% calc(100% - 11px), 0 calc(100% - 11px));
  background-color: var(--main-color);
  font-size: var(--px20);
  color: #ffffff;

  @media (width < 480px) {
    margin-inline: 0;
    width: 100%;
  }
}

.points__heading-exlg {
  font-size: var(--px66);
  color: var(--accent-color);
  letter-spacing: 0.08em;
  line-height: 1;
}

.points__heading-normal {
  font-size: var(--px35);
  letter-spacing: 0.1em;
}

.points .section-lead {
  margin-top: 20px;
  font-size: var(--px18);
  font-weight: 700;
  line-height: 2;

  @media (width <= 768px) {
    text-align: left;
  }

  @media (width >= 1024px) {
    margin-top: 22px;
  }
}

.points__list {
  @media (width >= 1024px) {
    margin-top: 40px;
    display: flex;
    column-gap: 21px;
    max-width: 1088px;
    margin-inline: auto;
  }
}

.points__item {
  padding: 24px;
  background-color: #fff;
  box-shadow: 0 4px 4px 0 rgba(0 0 0 / 0.1);

  @media (width < 1024px) {
    margin-top: 20px;
  }

  @media (width >= 1024px) {
    padding: 28px;
    width: 33%;
  }
}

.points__item-image {
  width: 100%;
}

.points__item-body {
  margin-top: 8px;
}

.points__item-heading {
  display: flex;
  align-items: flex-start; /* 1行目上端揃え */
  margin: 0 0 12px;
  font-size: var(--px22);
  font-weight: 700;
  line-height: 1.6;
}

.item-heading__icon {
  flex-shrink: 0;
  width: 1.2em;
  height: 1.2em;
  margin-top: 6px;
  margin-right: 0.5em;
  display: flex;
  align-items: flex-start;
}

.item-heading__icon img {
  width: 100%;
  height: auto;
  display: block;
}

/* 複数行になっても1行目と揃える */
.item-heading__text {
  display: block;
}

.item-heading__text strong {
  color: var(--main-color);
}

.points__item-text {
  font-size: var(--px16);
  font-weight: 500;
  line-height: 1.75;
}

/* 「代理店教育基盤ソリューション」の特徴 */
.features {
  position: relative;
  padding-bottom: 80px;

  @media (width >= 1024px) {
    padding-bottom: 87px;
  }
}

.features::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 0;
  z-index: -1;
  width: 100%;
  height: 426px;
  transform: translateX(-50%);
  background-color: var(--main-color);
}

.features .section-head {
  text-align: center;
}

.features .section-heading {
  padding-top: 80px;
  font-size: var(--px26);
  font-weight: 700;
  color: #ffffff;

  @media (width >= 1024px) {
    padding-top: 97px;
    font-size: var(--px34);
  }
}

.features .section-heading::after {
  display: block;
  content: "";
  margin-top: 40px;
  margin-inline: auto;
  width: 45px;
  height: 4px;
  background-color: #ffffff;
}

.features__list {
  max-width: 1088px;
  margin: 0 auto;
  padding-top: 22px;

  @media (width >= 1024px) {
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap;
  }
}

.features__item {
  margin-top: 20px;
  padding: 44px 14px 24px;
  background-color: #fff;
  text-align: center;

  @media (width < 1024px) {
    box-shadow: 4px 6px 10px rgba(0, 0, 0, 0.1), -4px 6px 10px rgba(0, 0, 0, 0.1);
  }

  @media (width >= 1024px) {
    height: 26.25rem;
  }
}

@media (width >= 1024px) {
  .features__item {
    margin-top: 40px;
    width: 33.3333%;
    height: 29rem;
    padding: 52px 36px;
    border-left: 1px solid #b7b7b7;
    box-shadow: 4px 6px 10px rgba(0, 0, 0, 0.1);
  }

  .features__item:nth-child(3n + 1) {
    border-left: none;
    box-shadow: -4px 6px 10px rgba(0, 0, 0, 0.1);
  }

  .features__item:nth-child(7) {
    box-shadow: 4px 6px 10px rgba(0, 0, 0, 0.1), -4px 6px 10px rgba(0, 0, 0, 0.1);
  }
}

.features__item-body {
  margin-top: 16px;
}

.features__item-heading {
  font-size: var(--px20);
  font-weight: 700;
  line-height: 1.25;
}

.features__item-text {
  margin-top: 16px;
  text-align: left;
  font-size: var(--px16);
  line-height: 1.75;
}

/* 「代理店教育基盤ソリューション」の利用シーン */
.scenes {
  padding-top: 80px;
  padding-bottom: 100px;
  background-color: var(--background-color);

  @media (width >= 1024px) {
    padding-top: 89px;
  }
}

.scenes .section-head {
  text-align: center;
}

.scenes .section-heading {
  font-size: var(--px26);
  font-weight: 700;
  color: #000000;

  @media (width >= 1024px) {
    font-size: var(--px34);
  }
}

.scenes .section-heading::after {
  display: block;
  content: "";
  margin-top: 44px;
  margin-inline: auto;
  width: 45px;
  height: 4px;
  background-color: #000000;
}

.scenes .section-lead {
  margin-top: 40px;
  font-size: var(--px18);
  font-weight: 700;
  line-height: 2;

  @media (width < 768px) {
    text-align: left;
  }

  @media (width >= 1024px) {
    margin-top: 60px;
  }
}

.scenes__list {
  max-width: 1088px;
  margin-inline: auto;
  padding-top: 67px;

  @media (width >= 1024px) {
    width: calc(100% - 40px);
    max-width: 1088px;
    margin-inline: auto;
    padding-top: 13px;
  }
}

.scenes__item {
  display: block;
  position: relative;

  @media (width >= 1024px) {
    display: flex;
    height: 460px;
    margin-top: 85px;
  }
}

.scenes__item::before {
  position: absolute;
  bottom: -30px;
  content: "";
  width: 300px;
  height: 150px;
  background-image: url(../images/bg_scene_dot.svg);
  background-size: auto;
  background-repeat: no-repeat;

  @media (width >= 640px) {
    width: 512px;
  }

  @media (width >= 768px) {
    width: 640px;
  }

  @media (width >= 900px) {
    width: 786px;
  }

  @media (width >= 1024px) {
    bottom: 0px;
  }
}

.scenes__item:nth-child(odd)::before {
  right: 15px;

  @media (width >= 1024px) {
    left: 5%;
    right: auto;
  }
}

.scenes__item:nth-child(even)::before {
  left: 15px;

  @media (width >= 1024px) {
    right: 5%;
    left: auto;
  }
}

.scenes__item:nth-child(1) {
  @media (width >= 1024px) {
    margin-top: 80px;
  }
}

.scenes__item:nth-child(n + 2) {
  margin-top: 80px;

  @media (width >= 1024px) {
    margin-top: 115px;
  }
}

.scenes__item:nth-child(2n) {
  flex-direction: row-reverse;
}

.scenes__item-content {
  background-color: #fff;
  padding: 0 25px;
  z-index: 1;

  @media (width < 1024px) {
    margin-inline: min(5.6%, 20px);
    position: relative;
    margin-top: -40px;
  }

  @media (width >= 1024px) {
    margin-top: 40px;
    margin-inine: 0;
    padding: 0 4.6%;
    width: 50.6%;
    height: 349px;
    align-self: flex-start;
  }
}

.scenes__item:nth-child(2) .scenes__item-content {
  @media (width >= 1024px) {
    position: relative;
    top: -20px;
    height: 394px;
  }
}

.scenes-heading {
  position: relative;
  top: -36px;
}

.scenes-heading__serial {
  display: flex;
  align-items: flex-start;
  font-family: var(--font-family-en);
  color: var(--main-color);
}

.scenes-heading__number {
  font-size: calc(85 / 16 * 1rem);
  font-weight: 700;
  line-height: 0.75;
}

.scenes-heading__text {
  position: relative;
  margin-left: 6px;
  font-size: var(--px16);
  font-weight: 400;
  line-height: 1;

  @media (width >= 1024px) {
    top: 8px;
  }
}

.scenes-heading__main {
  display: inline-block;
  margin-top: 20px;
  font-size: var(--px24);
  font-weight: 700;
  line-height: 2;

  @media (width >= 1024px) {
    font-size: var(--px28);
    margin-top: 34px;
    line-height: 1.8;
    letter-spacing: 0.06em;
  }
}
.scenes-heading__strong {
  padding: 0.1em 0.25em;
  background-color: var(--main-color);
  color: #ffffff;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone; /* Safari */
}

.scenes-heading__main.-strong-wrap {
  @media (800px <= width < 1024px) {
    display: none;
  }
}

.scenes-heading__main.-strong-nowrap {
  @media (800px > width) {
    display: none;
  }

  @media (1024px <= width) {
    display: none;
  }
}

.scenes__text {
  position: relative;
  top: -24px;
  font-size: var(--px16);
  font-weight: 500;
  line-height: 1.75;
}

.scenes__figure {
  @media (width >= 1024px) {
    position: absolute;
    right: 0;
    width: 57.1%;
  }
}

.scenes__item:nth-child(2n) .scenes__figure {
  @media (width >= 1024px) {
    left: 0;
  }
}

.scenes__image {
  width: 100%;
}

/* 「代理店教育基盤ソリューション」の主な機能 */
.functions {
  position: relative;
  padding-bottom: 80px;

  @media (width >= 1024px) {
    padding-bottom: 89px;
  }
}

.functions::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 0;
  z-index: -1;
  width: 100%;
  height: 350px;
  transform: translateX(-50%);
  background-color: var(--main-color);

  @media (width >= 1024px) {
    height: 426px;
  }
}

.functions .section-head {
  background-color: var(--main-color);
  text-align: center;
}

.functions .section-heading {
  padding-top: 80px;
  font-size: var(--px26);
  font-weight: 700;
  color: #ffffff;

  @media (width >= 1024px) {
    padding-top: 96px;
    font-size: var(--px34);
  }
}

.functions .section-heading::after {
  display: block;
  content: "";
  margin-top: 44px;
  margin-inline: auto;
  width: 45px;
  height: 4px;
  background-color: #ffffff;
}

.functions__list {
  max-width: 1088px;
  margin: 40px auto 0;
  background-color: #fff;

  @media (width >= 1024px) {
    display: flex;
    margin: 109px auto 0;
    flex-wrap: wrap;
    row-gap: 48px;
  }
}

.functions__item {
  position: relative;
  background-color: #fff;
  z-index: 1;
  transition: 0.4s 0.1s cubic-bezier(0.84, 0.03, 0.25, 1);

  @media (width < 1024px) {
    box-shadow: 4px 6px 20px rgba(0, 0, 0, 0.1), -4px 6px 20px rgba(0, 0, 0, 0.1);
  }

  @media (width >= 1024px) {
    width: 33.3333%;
    height: 428px;
    box-shadow: 0 6px 10px rgba(0, 0, 0, 0.1);
  }
}

.functions__item:not(:first-child) {
  @media (width < 1024px) {
    margin-top: 20px;
  }
}

.functions__item:nth-child(3n + 1) {
  @media (width >= 1024px) {
    box-shadow: -4px 6px 10px rgba(0, 0, 0, 0.1);
  }
}

.functions__item:nth-child(3n + 3) {
  @media (width >= 1024px) {
    box-shadow: 4px 6px 10px rgba(0, 0, 0, 0.1);
  }
}

.functions__item:not(:nth-child(3n + 1)) {
  @media (width >= 1024px) {
    border-left: 1px solid #b7b7b7;
  }
}

.functions__item-image {
  width: 100%;
}

.functions__item-body {
  margin-top: 20px;
  margin-inline: 19px;

  @media (width < 1024px) {
    padding-bottom: 28px;
  }

  @media (width >= 1024px) {
    margin-top: 12px;
    margin-inline: 23px;
  }
}

.functions__item-heading {
  font-size: var(--px24);
}

.functions__item-list {
  margin-top: 18px;

  @media (width >= 1024px) {
    margin-top: 23px;
  }
}

.functions__item-item {
  display: flex;
  font-size: var(--px16);
  font-weight: 700;
  line-height: 1.3;
}

.functions__item-item:not(:first-child) {
  margin-top: 10px;
}

.functions__list-marker {
  position: relative;
  top: 6px;
}

.functions__list-text {
  margin-left: 6px;
}

/* お問い合わせ */
.contact {
  padding-top: 60px;
  padding-bottom: 58px;
  background-color: var(--accent-color);
  color: #ffffff;
  text-align: center;

  @media (width >= 1024px) {
    padding-top: 80px;
    padding-bottom: 80px;
  }
}

.contact .section-heading {
  font-size: var(--px26);
  font-weight: 700;

  @media (width >= 1024px) {
    font-size: var(--px34);
  }
}

.contact__text {
  margin-top: 28px;
  text-align: center;
  font-size: var(--px16);
}

.contact__links {
  margin-top: 26px;
  margin-inline: auto;

  @media (width >= 768px) {
    display: flex;
    justify-content: center;
    align-items: center;
    column-gap: 30px;
    margin-top: 31px;
  }
}

.contact__link-tel,
.contact__link-mail {
  text-decoration: none;
  color: #ffffff;

  @media (width >= 768px) {
    width: 320px;
    height: 88px;
  }

  @media (width >= 1024px) {
    width: 460px;
    height: 74px;
  }
}

.contact__link-tel {
  display: block;
  align-items: center;
  padding: 14px 20px;
  border: 1px solid #ffffff;
  transition: background-color 0.3s ease-out, color 0.3s ease-out;
  /* 電話番号リンクに関する設定はbaseに属性セレクタで記述しました*/

  @media (width >= 1024px) {
    display: flex;
    justify-content: space-between;
    flex-direction: row;
  }
}

.contact__link-tel:hover {
  background-color: #ffaa2f;

  transition: background-color 0.3s ease-out, color 0.3s ease-out;
}

.contact__tel-number {
  font-family: var(--font-family-en);
  font-size: var(--px26);
  font-weight: 700;
  vertical-align: middle;
}

.contact__tel-number::before {
  content: "";
  display: inline-block;
  margin-right: 10px;
  width: 18px;
  height: 22px;
  background-image: url(../images/icon_tel.svg);
  background-size: contain;
  background-repeat: no-repeat;
}

.contact__tel-hours {
  display: inline-block;
  font-size: var(--px14);
  font-weight: 700;
}

.contact__link-mail {
  display: flex;
  justify-content: space-between;
  align-items: center;
  column-gap: 12px;
  margin-top: 20px;
  padding-block: 18px;
  padding-inline: 26px;
  background-color: #000;
  transition: background-color 0.3s ease-out, left 0.5s ease-out;

  @media (width >= 480px) {
    justify-content: center;
  }

  @media (width >= 768px) {
    margin-top: 0;
  }
}

.contact__link-mail:hover {
  background-color: #222;
  transition: background-color 0.3s ease-out;
}

.contact__link-mail:hover .conatct__mail-arrow {
  top: -3px;
  left: 5px;
  transition: left 0.3s ease-out;
}

.contact__mail-icon {
  margin-right: 10px;
}

.conatct__mail-arrow {
  position: relative;
  top: -3px;
  left: 0;
  transition: left 0.3s ease-out;
}

.contact__mail-text {
  font-size: var(--px16);
  font-weight: 700;

  @media (width >= 1024px) {
    position: relative;
    top: -2px;
  }
}

/* footer */
.footer {
  padding-top: 70px;
  padding-bottom: 35px;

  background-color: #000000;
  color: #ffffff;
}

.footer .container {
  @media (width >= 1024px) {
    width: 95%;
    max-width: 1090px;
    margin-inline: auto;
    text-align: left;
  }
}

.footer__figure {
  text-align: center;

  @media (width >= 1024px) {
    text-align: left;
  }
}

.footer .flex-container {
  @media (width >= 1024px) {
    padding-bottom: 12px;
    justify-content: space-between;
    align-items: flex-start;
  }
}

.footer__company-info {
  margin-top: 38px;
  font-size: var(--px16);

  @media (width >= 1024px) {
    margin-top: 38px;
  }
}

.footer__company-name {
  color: inherit;
}

.footer__company-name:hover {
  text-decoration: none;
}

.footer__company-address {
  margin-top: 16px;
  font-style: normal;
  line-height: 1.6;
}

.footer__company-tel {
  margin-top: 5px;
  letter-spacing: 0.05em;

  @media (width >= 1024px) {
    margin-top: 8px;
  }
}

.footer__company-tel a {
  text-decoration: none;
  color: inherit;
}

.footer__policy {
  margin-top: 50px;

  @media (width >= 1024px) {
    display: flex;
    flex-direction: column-reverse;
    margin-top: 0;
  }
}

.footer__policy-text {
  text-align: right;

  @media (width >= 1024px) {
    margin-top: 15px;
  }
}

.footer__policy-text a {
  font-size: var(--px16);
  color: inherit;
  text-underline-offset: 4px;
}

.footer__policy-text a::after {
  content: "";
  display: inline-block;
  width: 24px;
  height: 18px;
  margin-left: 10px;
  background-image: url(../images/icon_external-link.svg);
  background-size: contain;
  background-repeat: no-repeat;
}

.footer__policy-text a:hover {
  text-decoration: none;
}

.footer__policy-banner {
  margin-top: 22px;
  text-align: right;
}

.footer__policy-banner img:nth-child(1) {
  width: 40px;
  height: 52px;

  @media (width >= 1024px) {
    width: 54px;
    height: 71px;
  }
}

.footer__policy-banner img:nth-child(2) {
  margin-left: 8px;

  width: 110px;
  height: 52px;

  @media (width >= 1024px) {
    margin-left: 18px;

    width: 150px;
    height: 71px;
  }
}

.footer__copyright {
  display: block;
  margin-top: 18px;
  padding-top: 20px;
  border-top: 1px solid #fff;
  text-align: center;
  font-size: var(--px16);
  color: #808080;
  line-height: 1.6;
}

/*
--- -- - -- --- -- - -- --- -- - -- --- -- - -- ---
UTILITY
--- -- - -- --- -- - -- --- -- - -- --- -- - -- ---
*/

/* hide */
.u-sp-hide {
  display: none;
  @media (width >= 768px) {
    display: block;
  }
}

.u-sptab-hide {
  display: none;
  @media (width >= 1024px) {
    display: block;
  }
}

.u-tabpc-hide {
  display: block;
  @media (width >= 768px) {
    display: none;
  }
}

.u-pc-hide {
  display: block;
  @media (width >= 1024px) {
    display: none;
  }
}

/* 改行制御 */
.u-nowrap {
  white-space: nowrap;
}
