/* ========================================
  Partner Hero
========================================= */
.partner-hero {
  position: relative;

  min-height: 100vh;

  padding: 170px 0 110px;

  overflow: hidden;

  color: #fff;
  background-color: var(--deep-blue);
}

.partner-hero__bg {
  position: absolute;
  inset: 0;
}

.partner-hero__bg::after {
  content: "";

  position: absolute;
  inset: 0;

  background:
    linear-gradient(
      180deg,
      rgba(5, 20, 46, 0.62) 0%,
      rgba(5, 20, 46, 0.8) 60%,
      rgba(5, 20, 46, 0.96) 100%
    ),
    linear-gradient(
      90deg,
      rgba(6, 43, 99, 0.72),
      rgba(6, 43, 99, 0.18)
    );
}

.partner-hero__bg img {
  display: block;

  width: 100%;
  height: 100%;

  object-fit: cover;
}

.partner-hero__inner {
  position: relative;
  z-index: 2;

  display: flex;
  align-items: center;
  justify-content: center;

  min-height: calc(100vh - 280px);

  text-align: center;
}

.partner-hero__content {
  max-width: 980px;
}

.partner-hero__eyebrow {
  margin-bottom: 26px;

  color: #bcd8ff;

  font-size: 14px;
  font-weight: 900;

  letter-spacing: 0.2em;
  text-transform: uppercase;
}

.partner-hero__title {
  font-size: clamp(58px, 7.2vw, 108px);
  font-weight: 900;
  line-height: 0.98;

  letter-spacing: -0.075em;
}

.partner-hero__title span {
  color: #8fc1ff;
}

.partner-hero__text {
  max-width: 650px;

  margin: 34px auto 0;

  color: #dceaff;

  font-size: 18px;
  line-height: 1.8;
}

.partner-hero__cta {
  display: inline-flex;
  align-items: center;
  gap: 28px;

  margin-top: 46px;
  padding: 17px 22px 17px 26px;

  color: var(--deep-blue);

  font-size: 16px;
  font-weight: 900;

  border-radius: 999px;

  background-color: #fff;
}

.partner-hero__cta i {
  display: inline-flex;
  align-items: center;
  justify-content: center;

  width: 34px;
  height: 34px;

  color: #fff;

  font-style: normal;

  border-radius: 50%;

  background-color: var(--blue);
}


/* ========================================
  Hero Strip
========================================= */
.partner-hero__strip {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 3;

  overflow: hidden;

  border-top:
    1px solid
    rgba(255, 255, 255, 0.18);
}

.partner-hero__strip-track {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 28px;

  min-width: max-content;

  padding: 24px 30px;

  color: rgba(255, 255, 255, 0.8);

  font-size: 14px;
  font-weight: 700;
}

.partner-hero__strip-track i {
  width: 5px;
  height: 5px;

  border-radius: 50%;

  background-color: #8fc1ff;
}


/* ========================================
  Partner Type
========================================= */
.partner-type {
  background-color: #fff;
}

.partner-type__head {
  max-width: 900px;

  margin-bottom: 76px;
}

.partner-type__head h2 {
  font-size: 52px;
  font-weight: 900;
  line-height: 1.2;

  letter-spacing: -0.05em;
}


/* ========================================
  Type Layout
========================================= */
.partner-type__layout {
  display: flex;
  align-items: stretch;
  gap: 70px;
}

.partner-type__list {
  flex: 1 1 58%;

  border-top:
    1px solid
    var(--line);
}

.partner-type__item {
  display: flex;
  align-items: center;
  gap: 28px;

  width: 100%;

  padding: 28px 4px;

  color: var(--text);

  text-align: left;

  border: 0;
  border-bottom:
    1px solid
    var(--line);

  background: none;

  cursor: pointer;

  transition:
    padding-left 0.3s ease,
    color 0.3s ease;
}

.partner-type__item > span {
  flex: 0 0 34px;

  color: #9ca3af;

  font-size: 14px;
  font-weight: 900;
}

.partner-type__item > div {
  flex: 1;
}

.partner-type__item small {
  display: block;

  margin-bottom: 7px;

  color: #9ca3af;

  font-size: 12px;
  font-weight: 900;

  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.partner-type__item strong {
  display: block;

  font-size: 28px;
  font-weight: 900;

  letter-spacing: -0.04em;
}

.partner-type__item i {
  font-size: 24px;
  font-style: normal;

  opacity: 0;

  transform: translateX(-10px);

  transition:
    opacity 0.3s ease,
    transform 0.3s ease;
}

.partner-type__item:hover,
.partner-type__item.is-active {
  padding-left: 18px;

  color: var(--blue);
}

.partner-type__item:hover i,
.partner-type__item.is-active i {
  opacity: 1;

  transform: translateX(0);
}


/* ========================================
  Type Preview
========================================= */
.partner-type__preview {
  flex: 1 1 42%;

  min-width: 0;
}

.partner-type__visual {
  position: relative;

  min-height: 500px;

  overflow: hidden;

  border-radius: 32px;

  background-color: var(--gray-bg);
}

.partner-type__visual img {
  position: absolute;
  inset: 0;

  width: 100%;
  height: 100%;

  object-fit: cover;

  opacity: 0;

  transform: scale(1.06);

  transition:
    opacity 0.5s ease,
    transform 0.7s ease;
}

.partner-type__visual img.is-active {
  opacity: 1;

  transform: scale(1);
}

.partner-type__descs {
  position: relative;

  min-height: 110px;

  margin-top: 22px;
}

.partner-type__desc {
  position: absolute;
  inset: 0;

  display: flex;
  gap: 24px;

  opacity: 0;

  transform: translateY(12px);

  transition:
    opacity 0.35s ease,
    transform 0.35s ease;
}

.partner-type__desc.is-active {
  opacity: 1;

  transform: translateY(0);
}

.partner-type__desc span {
  flex: 0 0 64px;

  color: var(--blue);

  font-size: 13px;
  font-weight: 900;
}

.partner-type__desc p {
  color: var(--muted);

  font-size: 16px;
  line-height: 1.75;
}


/* ========================================
  Sticky Stack
========================================= */
.partner-stack {
  position: relative;

  overflow: visible;

  background-color: #eef2f7;
}

.partner-stack__head {
  max-width: 900px;

  margin-bottom: 90px;
}

.partner-stack__head h2 {
  font-size: 54px;
  font-weight: 900;
  line-height: 1.18;

  letter-spacing: -0.055em;
}

.partner-stack__head h2 span {
  color: var(--blue);
}

.partner-stack__head > p:last-child {
  max-width: 650px;

  margin-top: 24px;

  color: var(--muted);

  font-size: 17px;
  line-height: 1.8;
}

.partner-stack__cards {
  width: min(
    calc(100% - 40px),
    1180px
  );

  margin: 0 auto;
}

.partner-stack__card {
  position: sticky;

  display: flex;
  align-items: flex-end;

  min-height: 520px;

  margin-bottom: 36px;
  padding: 50px;

  overflow: hidden;

  color: #fff;

  border-radius: 34px;

  box-shadow:
    0 28px 70px
    rgba(17, 24, 39, 0.16);
}

.partner-stack__card--01 {
  top: 110px;

  background-color: #0c3f90;
}

.partner-stack__card--02 {
  top: 130px;

  background-color: #12336b;
}

.partner-stack__card--03 {
  top: 150px;

  background-color: #102747;
}

.partner-stack__card--04 {
  top: 170px;

  margin-bottom: 0;

  background-color: #071a37;
}

.partner-stack__number {
  position: absolute;
  top: 42px;
  left: 50px;

  color: rgba(255, 255, 255, 0.72);

  font-size: 16px;
  font-weight: 900;
}

.partner-stack__body {
  position: relative;
  z-index: 2;

  max-width: 620px;
}

.partner-stack__body > p {
  margin-bottom: 14px;

  color: #8fc1ff;

  font-size: 13px;
  font-weight: 900;

  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.partner-stack__body h3 {
  font-size: 48px;
  font-weight: 900;
  line-height: 1.12;

  letter-spacing: -0.055em;
}

.partner-stack__body span {
  display: block;

  max-width: 520px;

  margin-top: 24px;

  color: #dceaff;

  font-size: 17px;
  line-height: 1.8;
}

.partner-stack__word {
  position: absolute;
  right: -18px;
  bottom: -28px;

  color: rgba(255, 255, 255, 0.055);

  font-size: clamp(70px, 11vw, 160px);
  font-weight: 900;
  line-height: 1;

  letter-spacing: -0.06em;

  white-space: nowrap;
}


/* ========================================
  Statement
========================================= */
.partner-statement {
  padding: 170px 0;

  overflow: hidden;

  background-color: #fff;
}

.partner-statement__eyebrow {
  color: var(--blue);

  font-size: 14px;
  font-weight: 900;

  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.partner-statement__copy {
  margin-top: 64px;
}

.partner-statement__copy p {
  font-size: clamp(52px, 7.3vw, 108px);
  font-weight: 900;
  line-height: 1.02;

  letter-spacing: -0.075em;
}

.partner-statement__copy .is-blue {
  color: var(--blue);
}

.partner-statement__meta {
  display: flex;
  justify-content: space-between;

  margin-top: 72px;
  padding-top: 22px;

  color: var(--muted);

  font-size: 13px;
  font-weight: 800;

  border-top:
    1px solid
    var(--line);
}


/* ========================================
  Partner Route
========================================= */
.partner-route {
  color: #fff;

  background-color: var(--deep-blue);
}

.partner-route .section-label {
  color: #bcd8ff;
}

.partner-route__head {
  max-width: 760px;

  margin-bottom: 90px;
}

.partner-route__head h2 {
  font-size: 48px;
  font-weight: 900;
  line-height: 1.2;

  letter-spacing: -0.05em;
}


/* ========================================
  Route List
========================================= */
.partner-route__list {
  position: relative;

  display: flex;
}

.partner-route__list::before {
  content: "";

  position: absolute;
  top: 7px;
  right: 0;
  left: 0;

  height: 1px;

  background-color:
    rgba(255, 255, 255, 0.24);
}

.partner-route__list li {
  position: relative;

  flex: 1;

  padding: 46px 32px 0 0;
}

.partner-route__dot {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 2;

  width: 15px;
  height: 15px;

  border:
    3px solid
    var(--deep-blue);

  border-radius: 50%;

  background-color: #8fc1ff;
}

.partner-route__list span {
  color: #8fc1ff;

  font-size: 14px;
  font-weight: 900;
}

.partner-route__list h3 {
  margin-top: 34px;

  font-size: 28px;
  font-weight: 900;
}

.partner-route__list p {
  max-width: 220px;

  margin-top: 12px;

  color: #dceaff;

  font-size: 15px;
  line-height: 1.7;
}


/* ========================================
  Partner Standard
========================================= */
.partner-standard {
  background-color: #fff;
}

.partner-standard__top {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 70px;

  margin-bottom: 76px;
}

.partner-standard__top > div {
  max-width: 760px;
}

.partner-standard__top h2 {
  font-size: 50px;
  font-weight: 900;
  line-height: 1.2;

  letter-spacing: -0.05em;
}

.partner-standard__top > p {
  max-width: 370px;

  color: var(--muted);

  font-size: 16px;
  line-height: 1.75;
}


/* ========================================
  Standard List
========================================= */
.partner-standard__list {
  border-top:
    1px solid
    var(--line);
}

.partner-standard__list article {
  display: flex;
  align-items: center;
  gap: 30px;

  padding: 32px 6px;

  border-bottom:
    1px solid
    var(--line);
}

.partner-standard__list span {
  flex: 0 0 50px;

  color: #9ca3af;

  font-size: 14px;
  font-weight: 900;
}

.partner-standard__list h3 {
  flex: 1;

  font-size: 28px;
  font-weight: 800;

  letter-spacing: -0.035em;
}

.partner-standard__list i {
  display: inline-flex;
  align-items: center;
  justify-content: center;

  width: 46px;
  height: 46px;

  color: #fff;

  font-size: 20px;
  font-style: normal;

  border-radius: 50%;

  background-color: var(--blue);
}


/* ========================================
  Partner FAQ
========================================= */
.partner-faq {
  background-color: #f4f6f9;
}

.partner-faq__head {
  max-width: 760px;

  margin: 0 auto 70px;

  text-align: center;
}

.partner-faq__head h2 {
  font-size: 50px;
  font-weight: 900;
  line-height: 1.2;

  letter-spacing: -0.05em;
}

.partner-faq__head > p:last-child {
  margin-top: 20px;

  color: var(--muted);

  font-size: 16px;
}

.partner-faq__list {
  max-width: 920px;

  margin: 0 auto;

  border-top:
    1px solid
    var(--line);
}

.partner-faq__list details {
  border-bottom:
    1px solid
    var(--line);
}

.partner-faq__list summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 30px;

  padding: 30px 4px;

  cursor: pointer;

  list-style: none;
}

.partner-faq__list summary::-webkit-details-marker {
  display: none;
}

.partner-faq__list summary span {
  font-size: 20px;
  font-weight: 800;
}

.partner-faq__list summary i {
  position: relative;

  flex: 0 0 32px;

  width: 32px;
  height: 32px;

  border:
    1px solid
    var(--line);

  border-radius: 50%;
}

.partner-faq__list summary i::before,
.partner-faq__list summary i::after {
  content: "";

  position: absolute;
  top: 50%;
  left: 50%;

  width: 12px;
  height: 2px;

  background-color: var(--text);

  transform:
    translate(-50%, -50%);

  transition:
    transform 0.3s ease;
}

.partner-faq__list summary i::after {
  transform:
    translate(-50%, -50%)
    rotate(90deg);
}

.partner-faq__list details[open]
summary i::after {
  transform:
    translate(-50%, -50%)
    rotate(0deg);
}

.partner-faq__answer {
  padding:
    0 60px 30px 4px;
}

.partner-faq__answer p {
  max-width: 700px;

  color: var(--muted);

  font-size: 16px;
  line-height: 1.8;
}


/* ========================================
  Partner Apply
========================================= */
.partner-apply {
  color: #fff;

  background-color: #071a37;
}

.partner-apply .inner {
  max-width: 1120px;
}

.partner-apply__hero {
  padding-bottom: 76px;

  text-align: center;

  border-bottom:
    1px solid
    rgba(255, 255, 255, 0.18);
}

.partner-apply__hero > p {
  color: #8fc1ff;

  font-size: 14px;
  font-weight: 900;

  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.partner-apply__hero h2 {
  margin-top: 24px;

  font-size: clamp(46px, 6vw, 82px);
  font-weight: 900;
  line-height: 1.05;

  letter-spacing: -0.065em;
}

.partner-apply__hero a {
  display: inline-block;

  margin-top: 34px;

  color: #fff;

  font-size: 24px;
  font-weight: 900;
}


/* ========================================
  Partner Form
========================================= */
.partner-form {
  margin-top: 70px;
}

.partner-form__row {
  display: flex;
  gap: 30px;
}

.partner-form__row + .partner-form__row {
  margin-top: 34px;
}

.partner-form__field {
  flex: 1;

  min-width: 0;
}

.partner-form > .partner-form__field {
  margin-top: 34px;
}

.partner-form__field label {
  display: block;

  margin-bottom: 10px;

  color: #bcd8ff;

  font-size: 14px;
  font-weight: 800;
}

.partner-form__field input,
.partner-form__field select,
.partner-form__field textarea {
  width: 100%;

  padding: 18px 0;

  color: #fff;

  font-size: 17px;

  border: 0;
  border-bottom:
    1px solid
    rgba(255, 255, 255, 0.3);

  border-radius: 0;

  outline: none;

  background-color: transparent;

  transition:
    border-color 0.25s ease;
}

.partner-form__field input::placeholder,
.partner-form__field textarea::placeholder {
  color:
    rgba(255, 255, 255, 0.45);
}

.partner-form__field select {
  color-scheme: dark;
}

.partner-form__field input:focus,
.partner-form__field select:focus,
.partner-form__field textarea:focus {
  border-bottom-color:
    #8fc1ff;
}

.partner-form__field textarea {
  resize: vertical;
}

.partner-form__submit {
  display: flex;
  align-items: center;
  justify-content: space-between;

  width: 100%;

  margin-top: 54px;
  padding: 24px 28px;

  color: var(--deep-blue);

  font-size: 18px;
  font-weight: 900;

  border: 0;
  border-radius: 16px;

  background-color: #fff;

  cursor: pointer;
}

.partner-form__submit i {
  font-size: 24px;
  font-style: normal;
}


/* ========================================
  Tablet
========================================= */
@media (max-width: 1024px) {

  /* ---------- Hero ---------- */
  .partner-hero__title {
    font-size: clamp(54px, 8vw, 80px);
  }


  /* ---------- Type ---------- */
  .partner-type__layout {
    gap: 40px;
  }

  .partner-type__visual {
    min-height: 440px;
  }


  /* ---------- Stack ---------- */
  .partner-stack__card {
    min-height: 460px;
  }


  /* ---------- Standard ---------- */
  .partner-standard__top {
    flex-direction: column;
    align-items: flex-start;

    gap: 28px;
  }

  .partner-standard__top > p {
    max-width: 620px;
  }

}


/* ========================================
  Mobile
========================================= */
@media (max-width: 768px) {

  /* ---------- Hero ---------- */
  .partner-hero {
    min-height: auto;

    padding:
      130px 0 110px;
  }

  .partner-hero__inner {
    min-height: auto;
  }

  .partner-hero__title {
    font-size: 44px;
    line-height: 1.06;
  }

  .partner-hero__title br {
    display: none;
  }

  .partner-hero__text {
    font-size: 16px;
  }

  .partner-hero__strip-track {
    justify-content: flex-start;

    padding:
      19px 20px;
  }


  /* ---------- Type ---------- */
  .partner-type__head {
    margin-bottom: 48px;
  }

  .partner-type__head h2 {
    font-size: 32px;
  }

  .partner-type__layout {
    flex-direction: column;

    gap: 36px;
  }

  .partner-type__list,
  .partner-type__preview {
    width: 100%;
  }

  .partner-type__item {
    gap: 16px;

    padding: 22px 0;
  }

  .partner-type__item:hover,
  .partner-type__item.is-active {
    padding-left: 10px;
  }

  .partner-type__item strong {
    font-size: 22px;
  }

  .partner-type__visual {
    min-height: 340px;

    border-radius: 24px;
  }


  /* ---------- Stack ---------- */
  .partner-stack__head {
    margin-bottom: 54px;
  }

  .partner-stack__head h2 {
    font-size: 34px;
  }

  .partner-stack__cards {
    width:
      calc(100% - 40px);
  }

  .partner-stack__card {
    min-height: 390px;

    padding: 34px 28px;

    border-radius: 26px;
  }

  .partner-stack__card--01 {
    top: 84px;
  }

  .partner-stack__card--02 {
    top: 100px;
  }

  .partner-stack__card--03 {
    top: 116px;
  }

  .partner-stack__card--04 {
    top: 132px;
  }

  .partner-stack__number {
    top: 28px;
    left: 28px;
  }

  .partner-stack__body h3 {
    font-size: 34px;
  }

  .partner-stack__body span {
    font-size: 15px;
  }


  /* ---------- Statement ---------- */
  .partner-statement {
    padding: 100px 0;
  }

  .partner-statement__copy {
    margin-top: 42px;
  }

  .partner-statement__copy p {
    font-size: 43px;
  }


  /* ---------- Route ---------- */
  .partner-route__head {
    margin-bottom: 54px;
  }

  .partner-route__head h2 {
    font-size: 32px;
  }

  .partner-route__list {
    flex-direction: column;

    padding-left: 22px;
  }

  .partner-route__list::before {
    top: 0;
    bottom: 0;
    left: 7px;

    width: 1px;
    height: auto;
  }

  .partner-route__list li {
    padding:
      0 0 44px 34px;
  }

  .partner-route__list li:last-child {
    padding-bottom: 0;
  }

  .partner-route__dot {
    top: 0;
    left: -22px;
  }

  .partner-route__list h3 {
    margin-top: 14px;

    font-size: 24px;
  }


  /* ---------- Standard ---------- */
  .partner-standard__top {
    margin-bottom: 48px;
  }

  .partner-standard__top h2 {
    font-size: 32px;
  }

  .partner-standard__list article {
    gap: 18px;

    padding: 24px 0;
  }

  .partner-standard__list span {
    flex-basis: 36px;
  }

  .partner-standard__list h3 {
    font-size: 21px;
  }

  .partner-standard__list i {
    width: 38px;
    height: 38px;
  }


  /* ---------- FAQ ---------- */
  .partner-faq__head {
    margin-bottom: 46px;
  }

  .partner-faq__head h2 {
    font-size: 32px;
  }

  .partner-faq__list summary {
    padding: 24px 0;
  }

  .partner-faq__list summary span {
    font-size: 17px;
  }


  /* ---------- Apply ---------- */
  .partner-apply__hero {
    padding-bottom: 54px;
  }

  .partner-apply__hero h2 {
    font-size: 40px;
  }

  .partner-form {
    margin-top: 54px;
  }

  .partner-form__row {
    flex-direction: column;

    gap: 28px;
  }

  .partner-form__row + .partner-form__row {
    margin-top: 28px;
  }

  .partner-form > .partner-form__field {
    margin-top: 28px;
  }

}


/* ========================================
  Small Mobile
========================================= */
@media (max-width: 420px) {

  .partner-hero__title {
    font-size: 36px;
  }

  .partner-type__head h2,
  .partner-stack__head h2,
  .partner-route__head h2,
  .partner-standard__top h2,
  .partner-faq__head h2 {
    font-size: 28px;
  }

  .partner-stack__cards {
    width:
      calc(100% - 30px);
  }

  .partner-stack__card {
    min-height: 350px;

    padding: 30px 22px;
  }

  .partner-stack__body h3 {
    font-size: 29px;
  }

  .partner-statement__copy p {
    font-size: 35px;
  }

  .partner-standard__list h3 {
    font-size: 18px;
  }

  .partner-standard__list i {
    flex: 0 0 34px;

    width: 34px;
    height: 34px;
  }

  .partner-apply__hero h2 {
    font-size: 34px;
  }

}


/* ========================================
  Touch Device
========================================= */
@media (hover: none) {

  .partner-type__item:hover {
    padding-left: 0;

    color: var(--text);
  }

  .partner-type__item.is-active {
    padding-left: 10px;

    color: var(--blue);
  }

}


/* ========================================
  Reduced Motion
========================================= */
@media (prefers-reduced-motion: reduce) {

  .partner-type__visual img,
  .partner-type__desc,
  .partner-type__item {
    transition: none;
  }

}