@charset "utf-8";

@import url(./layout/_reset.css);

/* ============================================
  ページ固有トークン（digital-bingo-rally-2026）
  PC基準幅：1440px（Figma digital-bingo-rally-lp-pc）
  vw換算：px ÷ 1440 × 100
============================================ */
:root {
  /* color */
  --nokon: #204555;
  --blue01: #1c7e90;
  --navy_deep: #16333f;
  --gold: #dfca74;
  --gold_dark: #d2a843;
  --gold_light: #efe9b1;
  --blue_bg: #e1eef4;
  --cream: #fffcf2;
  --ink: #211815;
  --white: #fff;
  --accent_red: #d82e1f;
  --gradient_gold: linear-gradient(142deg, var(--gold_dark) 33.28%, var(--gold_light) 102.93%);

  /* font */
  --font_serif: "Noto Serif JP", serif;
  --font_sans: "Noto Sans JP", sans-serif;
  --font_en: "Roboto", sans-serif;
}

/* ============================================
  ベース
============================================ */

html {
  font-size: 62.5%;
  scroll-behavior: smooth;
}

body {
  background-color: var(--white);
  color: var(--ink);
  font-family: var(--font_sans);
  font-size: 1.6rem;
  font-weight: 400;
  line-height: 1.7em;
}

#wrapper {
  position: relative;
  overflow: hidden;
}

a {
  color: currentColor;
  transition: all 0.3s ease-out;
  &:hover {
    @media (hover: hover) {
      opacity: 0.8;
    }
  }
}

img {
  max-width: 100%;
  height: auto;
}

.hd_section {
  font-family: var(--font_serif);
  font-weight: 700;
  color: var(--nokon);
  text-align: center;
  line-height: 1.4em;
  font-size: clamp(2.4rem, 2.778vw, 4.0rem);
  word-break: keep-all;
  &.hd_section--white {
    color: var(--white);
  }
}

.btn_login {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background-color: var(--nokon);
  color: var(--white);
  font-family: var(--font_serif);
  font-weight: 700;
  text-align: center;
  white-space: nowrap;
  border-radius: 999px;
  font-size: clamp(1.3rem, 1.8vw, 2.2rem);
  @media (width <= 480px) {
    white-space: normal;
    text-align: center;
  }
  &:hover {
    @media (hover: hover) {
      opacity: 0.85;
    }
  }
}

/* ============================================
  hero
============================================ */
.area__hero {
  display: grid;
  grid-template-columns: 435fr 570fr 435fr;
  grid-template-areas: "left center right";
  align-items: stretch;
  @media (width <= 896px) {
    grid-template-columns: 1fr 1fr;
    grid-template-areas:
      "center center"
      "left right";
  }
}

.hero_col {
  position: relative;
  overflow: hidden;
  aspect-ratio: 435 / 680;
  @media (width <= 896px) {
    aspect-ratio: 195 / 305;
  }
  &.hero_col--left {
    grid-area: left;
  }
  &.hero_col--right {
    grid-area: right;
  }
  picture,
  img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
}

.hero_col--center {
  grid-area: center;
  container-type: inline-size;
  background-color: var(--blue01);
  background-image: url(../images/texture_panel_teal.png);
  background-size: cover;
  background-position: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1.25vw;
  padding: 3.889vw 2.778vw;
  text-align: center;
  @media (width <= 896px) {
    aspect-ratio: 1 / 1;
    height: auto;
    padding: 30px 27px;
    gap: 12px;
  }
}

.hero_center--logo {
  width: min(460px, 80%);
  @media (width <= 896px) {
    width: min(315px, 82%);
  }
}

.hero_center--copy {
  color: var(--white);
  p {
    font-family: var(--font_serif);
    line-height: 1.4em;
  }
}
.hero_center--copy_sub {
  font-weight: 500;
  letter-spacing: 0.04em;
  font-size: clamp(1.4rem, 3.8cqw, 2.2rem);
  @media (width <= 896px) {
    font-size: clamp(1.2rem, 3.9cqw, 1.5rem);
  }
}
.hero_center--copy_mid {
  font-weight: 900;
  letter-spacing: 0.01em;
  font-size: clamp(1.8rem, 5.2cqw, 3.0rem);
  @media (width <= 896px) {
    font-size: clamp(1.6rem, 5.2cqw, 2.0rem);
  }
}
.hero_center--copy_main {
  font-weight: 900;
  letter-spacing: 0.02em;
  font-size: clamp(2.4rem, 8cqw, 4.6rem);
  @media (width <= 896px) {
    font-size: clamp(2.0rem, 8.2cqw, 3.2rem);
  }
}

.hero_center--dates {
  color: var(--white);
}
.hero_dates--main {
  font-family: var(--font_serif);
  font-weight: 700;
  b,
  strong {
    font-size: clamp(2.0rem, 7cqw, 4.0rem);
  }
  span {
    font-size: clamp(1.4rem, 4.1cqw, 2.4rem);
  }
  @media (width <= 896px) {
    b,
    strong {
      font-size: clamp(1.8rem, 6.9cqw, 2.7rem);
    }
    span {
      font-size: clamp(1.2rem, 4.1cqw, 1.6rem);
    }
  }
}
.hero_dates--note {
  font-family: var(--font_serif);
  font-weight: 500;
  color: #d9dedb;
  font-size: clamp(1.2rem, 2.8cqw, 1.6rem);
  padding-top: 0.4em;
  @media (width <= 896px) {
    font-size: clamp(1.1rem, 3.6cqw, 1.4rem);
  }
}

/* ============================================
  section common
============================================ */
.area__prizes,
.area__steps,
.area__campaign,
.area__footer {
  padding: 5.556vw 3.472vw;
  @media (width <= 896px) {
    padding: 50px 20px;
  }
  @media (width <= 480px) {
    padding: 40px 16px;
  }
}

.width_content {
  max-width: 1340px;
  width: 100%;
  margin: 0 auto;
}

/* ============================================
  prizes
============================================ */
.area__prizes {
  background-color: var(--cream);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2.778vw;
  @media (width <= 896px) {
    gap: 30px;
  }
}

.list_prize {
  display: flex;
  gap: 1.667vw;
  width: 100%;
  max-width: 1340px;
  @media (width <= 896px) {
    flex-direction: column;
    gap: 20px;
  }
}

.item_prize {
  container-type: inline-size;
  flex: 1 0 0;
  min-width: 0;
  position: relative;
  border-radius: 20px;
  overflow: hidden;
  background-color: var(--blue01);
  background-image: url(../images/texture_panel_teal.png);
  background-size: cover;
  background-position: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 14px;
  padding: 36px 24px;
  text-align: center;
  @media (width <= 896px) {
    flex: 1 1 auto;
  }
}

.badge_circle {
  flex-shrink: 0;
  width: 100px;
  height: 100px;
  border-radius: 50%;
  background-image: var(--gradient_gold);
  color: var(--nokon);
  font-family: var(--font_en);
  font-weight: 900;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  line-height: 1;
  b,
  strong {
    font-size: clamp(2.4rem, 15cqw, 5.1rem);
    line-height: 1;
  }
  span {
    font-size: clamp(1.1rem, 6.3cqw, 2.16rem);
    letter-spacing: 0.02em;
  }
}

.item_prize--catch {
  font-family: var(--font_serif);
  font-weight: 700;
  color: var(--gold);
  line-height: 1.3em;
  font-size: clamp(1.3rem, 4.6cqw, 2.2rem);
  b,
  strong {
    font-size: 1.45em;
  }
}
.item_prize--amount {
  font-family: var(--font_serif);
  font-weight: 900;
  color: var(--white);
  line-height: 1;
  font-size: clamp(2.2rem, 9.5cqw, 5.2rem);
  span {
    font-size: 0.7em;
  }
}
.item_prize--label {
  font-family: var(--font_serif);
  font-weight: 700;
  color: var(--white);
  font-size: clamp(1.5rem, 5.8cqw, 2.8rem);
}

.box_note {
  text-align: center;
}

.txt_note {
  font-size: clamp(1.4rem, 1.04vw, 1.5rem);
  color: var(--ink);
  text-align: left;
  li {
    display: inline-block;
    text-align: left;
  }
}

/* ============================================
  steps
============================================ */
.area__steps {
  background-color: var(--blue_bg);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2.778vw;
  @media (width <= 896px) {
    gap: 24px;
  }
}

.box_notice {
  border: 1px solid var(--blue01);
  color: var(--blue01);
  font-family: var(--font_sans);
  font-weight: 700;
  text-align: center;
  padding: 10px 24px;
  font-size: clamp(1.4rem, 1.25vw, 1.8rem);
}

.list_step {
  display: flex;
  gap: 1.667vw;
  width: 100%;
  max-width: 1340px;
  align-items: stretch;
  @media (width <= 896px) {
    flex-direction: column;
    gap: 20px;
  }
}

.item_step {
  container-type: inline-size;
  flex: 1 0 0;
  min-width: 0;
  background-color: var(--white);
  border: 5px solid var(--blue01);
  border-radius: 20px;
  padding: 26px;
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.step_head {
  display: flex;
  gap: 17px;
  align-items: flex-start;
}

.badge_circle--step {
  border-radius: 16px;
  gap: 2px;
  b,
  strong {
    font-size: clamp(2.4rem, 15cqw, 5.1rem);
  }
  span {
    font-size: clamp(1.1rem, 6cqw, 2.16rem);
  }
}

.step_body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 13px;
}

.step_body--ttl {
  font-family: var(--font_sans);
  font-weight: 900;
  color: var(--nokon);
  text-align: center;
  width: 100%;
  font-size: clamp(1.6rem, 8.5cqw, 2.6rem);
  word-break: keep-all;
}

.step_icon {
  width: 100%;
  max-width: 173px;
  margin: 0 auto;
  img {
    display: block;
    width: 100%;
    height: auto;
  }
}

.step_text {
  font-family: var(--font_sans);
  text-align: justify;
  p {
    font-weight: 700;
    color: var(--ink);
    font-size: clamp(1.5rem, 6.5cqw, 2.0rem);
    line-height: 1.4em;
  }
  p + p {
    font-weight: 400;
    font-size: clamp(1.2rem, 4.8cqw, 1.5rem);
    padding-top: 8px;
  }
}

.cta_button {
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: var(--nokon);
  color: var(--white);
  border-radius: 28px;
  width: 100%;
  box-sizing: border-box;
  padding: 14px 16px;
  font-family: var(--font_serif);
  font-weight: 700;
  text-align: center;
  font-size: clamp(1.1rem, 5cqw, 1.5rem);
  word-break: keep-all;
  line-height: 1.4em;
  &:hover {
    @media (hover: hover) {
      opacity: 0.85;
    }
  }
}

.box_stampnote {
  container-type: inline-size;
  width: 100%;
  max-width: 1340px;
  box-sizing: border-box;
  background-color: var(--white);
  border: 1px solid var(--blue01);
  border-radius: 20px;
  padding: 3.472vw;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px 32px;
  @media (width <= 896px) {
    grid-template-columns: 1fr;
    padding: 24px 20px;
    gap: 20px;
  }
}

.stampnote_block {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.stampnote_hd {
  display: inline-block;
  width: 100%;
  text-align: center;
  align-self: flex-start;
  border: 1px solid var(--nokon);
  border-radius: 999px;
  color: var(--nokon);
  font-family: var(--font_sans);
  font-weight: 700;
  line-height: 1;
  padding: 8px 20px;
  font-size: clamp(1.3rem, 3.5cqw, 1.6rem);
}

.stampnote_list {
  display: flex;
  flex-direction: column;
  gap: 16px;
  li {
    display: flex;
      flex-direction: column;
    align-items: baseline;
    gap: 5px;
    @media (width <= 480px) {
      gap: 4px;
    }
  }
}

.stampnote_tag {
  flex-shrink: 0;
  background-color: var(--blue01);
  color: var(--white);
  font-family: var(--font_sans);
  font-weight: 700;
  text-align: center;
  border-radius: 6px;
  padding: 5px 10px;
  line-height: 1.3;
  font-size: clamp(1.2rem, 3cqw, 1.4rem);
  letter-spacing: 0.05em;
  width: 100%;
  max-width: 110px;
}

.stampnote_text {
  font-family: var(--font_sans);
  font-weight: 700;
  color: var(--ink);
  line-height: 1.6em;
  font-size: clamp(1.4rem, 3.6cqw, 1.8rem);
}
.stampnote_text--small {
  font-weight: 400;
  font-size: clamp(1.2rem, 3cqw, 1.4rem);
}

.stampnote_notes {
  display: flex;
  flex-direction: column;
  gap: 6px;
  li {
    font-family: var(--font_sans);
    font-weight: 700;
    color: var(--ink);
    line-height: 1.6em;
    font-size: clamp(1.4rem, 3.6cqw, 1.6rem);
    padding-left: 1.2em;
    position: relative;
    &::before {
      content: "●";
      position: absolute;
      left: 0;
      top: 0;
    }
  }
  &.stampnote_notes--sub {
    gap: 1px;
    padding-top: 4px;
    li {
      font-weight: 400;
      color: var(--blue01);
      font-size: clamp(1.3rem, 2.8cqw, 1.3rem);
      padding-inline: 1em 0;
      text-indent: -1em;
      &::before {
        content: "";
      }
    }
  }
}

.c_accent {
  color: var(--accent_red);
  font-weight: 700;
}

.stampnote_example {
  display: flex;
  flex-direction: column;
  gap: 8px;
  li {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 4px 12px;
    font-family: var(--font_sans);
    color: var(--ink);
    line-height: 1.6em;
    font-size: clamp(1.3rem, 3.2cqw, 1.5rem);
  }
}
.stampnote_example--case {
  font-weight: 700;
}
.stampnote_example--result {
  i {
    font-style: normal;
    color: var(--blue01);
    padding: 0 0.4em;
  }
}

.stampnote_footnote {
  grid-column: 1 / -1;
  font-family: var(--font_sans);
  color: var(--ink);
  font-size: clamp(1.3rem, 2.8cqw, 1.3rem);
  padding-block: 14px 0;
  padding-inline: 1em 0;
  text-indent: -1em;
  border-top: 1px dashed #ccc;
  line-height: 1.4em;
}

/* ============================================
  double campaign
============================================ */
.area__campaign {
  background-color: var(--navy_deep);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2.778vw;
  @media (width <= 896px) {
    gap: 30px;
  }
}

.campaign_head {
  text-align: center;
  p {
    line-height: 1.3em;
  }
}
.campaign_head--sub {
  font-family: var(--font_serif);
  font-weight: 700;
  color: var(--gold);
  font-size: clamp(2.0rem, 2.5vw, 3.6rem);
}
.campaign_head--main {
  font-family: var(--font_serif);
  font-weight: 700;
  color: var(--white);
  font-size: clamp(2.2rem, 2.38vw + 1.306rem, 4.5rem);
  word-break: keep-all;
  line-height: 1.2em;
  padding-block: 0.3em 0;
}

.list_campaign {
  display: flex;
  gap: 2.778vw;
  width: 100%;
  max-width: 1340px;
  @media (width <= 896px) {
    flex-direction: column;
    gap: 24px;
  }
}

.item_campaign {
  container-type: inline-size;
  flex: 1 0 0;
  min-width: 0;
  background-color: var(--white);
  border-radius: 12px;
  overflow: hidden;
  @media (width <= 896px) {
    flex: 1 1 auto;
  }
}

.campaign_photo {
  position: relative;
  aspect-ratio: 650 / 360;
  img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
}

.badge_square {
  position: absolute;
  left: 24px;
  top: 24px;
  width: 26%;
  min-width: 90px;
  aspect-ratio: 1 / 1;
  border-radius: 50%;
  background-image: var(--gradient_gold);
  color: var(--nokon);
  font-family: var(--font_sans);
  font-weight: 700;
  text-align: center;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  line-height: 1.1;
  font-size: clamp(1.1rem, 9cqw, 1.8rem);
  @media (width <= 896px) {
    left: 16px;
    top: 16px;
    font-size: clamp(0.80rem, 4.2cqw, 1.8rem);
  }
  b {
    font-family: var(--font_en);
    font-weight: 900;
    font-size: clamp(2.0rem, 18cqw, 3.6rem);
    @media (width <= 896px) {
      font-size: clamp(1.5rem, 6.5cqw, 3.6rem);
    }
  }
}

.newline {
  display: inline-block;
}

.campaign_text {
  padding: 1.8vw 2.8vw 2.8vw;
  font-family: var(--font_serif);
  font-weight: 700;
  @media (width <= 896px) {
    padding: 14px 16px 24px;
  }
}
.campaign_text--sub {
  color: var(--nokon);
  font-size: clamp(1.5rem, 5.5cqw, 2.0rem);
  @media (width <= 896px) {
    font-size: clamp(1.5rem, 4.5cqw, 2.0rem);
  }
}
.campaign_text--main {
  color: #333;
  font-size: clamp(2.0rem, 8.5cqw, 3.5rem);
  padding-top: 1vw;
  word-break: keep-all;
  @media (width <= 480px) {
    font-size: clamp(1.5rem, 8.5cqw, 2.3rem);
  }
}

.list_info {
  display: flex;
  width: 100%;
  max-width: 1340px;
  @media (width <= 896px) {
    flex-direction: column;
    gap: 24px;
  }
}

.item_info {
  flex: 1 0 0;
  min-width: 0;
  padding: 20px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  @media (width <= 896px) {
    padding: 0;
  }
}
.item_info--ttl {
  font-family: var(--font_sans);
  font-weight: 500;
  color: var(--gold);
  font-size: clamp(1.6rem, 1.528vw, 2.2rem);
  border-bottom: 1px solid var(--gold);
  padding-bottom: 12px;
}
.item_info--txt {
  font-family: var(--font_sans);
  color: var(--white);
  line-height: 1.5em;
  font-size: clamp(1.4rem, 1.25vw, 1.8rem);
}

.box_cta {
  width: 100%;
  max-width: 1340px;
  background-color: var(--gold);
  border-radius: 12px;
  padding: 40px 32px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
  @media (width <= 480px) {
    padding: 30px 20px;
  }
}
.box_cta--txt {
  font-family: var(--font_sans);
  font-weight: 700;
  color: var(--nokon);
  text-align: center;
  font-size: clamp(1.3rem, 1.25vw, 1.8rem);
  line-height: 1.4em;
  word-break: keep-all;
}
.box_cta .btn_login {
  padding: 22px 50px;
  width: auto;
  @media (width <= 896px) {
    padding: 16px 20px;
  }
}

.cta_kome {
  display: block;
  font-size: clamp(1.3rem, 1.25vw, 1.5rem);
  text-align: left;
  padding-inline: 1em 0;
  padding-block: 5px 0;
  text-indent: -1em;
  word-break: normal;
}


/* ============================================
  footer
============================================ */
.area__footer {
  background-color: var(--cream);
  display: flex;
  justify-content: center;
}
.logo_footer {
  width: 200px;
}
