/* ==============================================
   Design Tokens
   ============================================== */
:root {
  --clr-green: #01DB85;
  --clr-blue-dark: #0736E7;
  --clr-blue-mid: #0273FF;
  --clr-blue-light: #02D0F7;
  --clr-blue-navy: #0B2EA8;
  --clr-cyan: #00DDFF;
  --clr-white: #FFFFFF;
  --clr-text: #1A1A1A;

  /* unique card tag colors */
  --clr-tag-purple: #A855F7;
  --clr-tag-teal: #0EA5A0;
  --clr-tag-green: #16A34A;
  --clr-tag-indigo: #6033CC;
  --clr-tag-pink: #EC4899;
  --clr-tag-orange: #F97316;

  --ff-display: 'Dela Gothic One', sans-serif;
  --ff-base: 'Noto Sans JP', sans-serif;
  --fs-xs: 0.75rem;
  --fs-sm: 0.875rem;
  --fs-base: 1rem;
  --fs-md: 1.125rem;
  --fs-lg: 1.5rem;
  --fs-xl: 2rem;
  --fs-2xl: 2.5rem;
  --fs-3xl: 3.5rem;
  --fw-reg: 400;
  --fw-med: 500;
  --fw-bold: 700;
  --fw-blk: 900;

  --sp-8: 0.5rem;
  --sp-12: 0.75rem;
  --sp-16: 1rem;
  --sp-24: 1.5rem;
  --sp-32: 2rem;
  --sp-40: 2.5rem;
  --sp-48: 3rem;
  --sp-64: 4rem;
  --sp-80: 5rem;

  --w-inner: 960px;
  --r-sm: 6px;
  --r-md: 12px;
  --r-lg: 20px;
  --r-xl: 32px;
  --r-full: 9999px;
}

/* ==============================================
   Reset & Base
   ============================================== */
*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

body {
  font-family: var(--ff-base);
  font-weight: var(--fw-bold);
  color: var(--clr-text);
  line-height: 1.7;
  background: var(--clr-white);
  -webkit-font-smoothing: antialiased;
}

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

ul {
  list-style: none;
}

a {
  text-decoration: none;
}

figure {
  margin: 0;
}

mark {
  background: none;
  color: inherit;
}

/* ==============================================
   Hero
   ============================================== */
.hero {
  position: relative;
  overflow: hidden;
  min-height: 100vh;
  display: flex;
  align-items: flex-end;
}

.hero__bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 0;
}

.hero__content {
  position: relative;
  z-index: 1;
  padding: var(--sp-64) 5% 10%;
}

.hero__catch {
  font-family: var(--ff-display);
  font-weight: var(--fw-reg);
  display: flex;
  flex-direction: column;
  gap: var(--sp-8);
}

.hero__catch-line {
  display: block;
  font-size: 72px;
  color: var(--clr-blue-light);
  line-height: 1.2;
}

.hero__hl {
  color: var(--clr-white);
}

.hero__hl--accent {
  color: var(--clr-blue-dark);
  font-size: 96px;
  -webkit-text-stroke: 1.5px var(--clr-white);
  paint-order: stroke fill;
}

.hero__catch-line--sm {
  color: var(--clr-white);
}

/* ==============================================
   Question
   ============================================== */
.question {
  background: var(--clr-blue-dark);
  padding: var(--sp-80) var(--sp-48);
}

.question__inner {
  max-width: var(--w-inner);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 280px 1fr;
  align-items: center;
  gap: var(--sp-64);
}

.question__illust img {
  width: 100%;
  border-radius: 50%;
}

.question__list {
  display: flex;
  flex-direction: column;
  gap: var(--sp-8);
  margin-bottom: var(--sp-24);
}

.question__list li {
  font-family: var(--ff-display);
  font-weight: var(--fw-reg);
  font-size: 40px;
  color: var(--clr-white);
}

.question__sub {
  font-size: 36px;
  font-weight: var(--fw-bold);
  color: var(--clr-white);
  line-height: 1.9;
  margin-bottom: var(--sp-32);
}

.question__title {
  font-family: var(--ff-display);
  font-weight: var(--fw-reg);
  font-size: 64px;
  color: var(--clr-white);
  line-height: 1.3;
}

/* ==============================================
   Message
   ============================================== */
.message {
  background: var(--clr-blue-light);
  padding: var(--sp-80) var(--sp-48);
}

.message__inner {
  max-width: var(--w-inner);
  margin: 0 auto;
}

.message__title {
  font-family: var(--ff-display);
  font-weight: var(--fw-reg);
  font-size: 40px;
  color: var(--clr-blue-navy);
  line-height: 1.6;
  margin-bottom: var(--sp-40);
}

.message__hl {
  background: var(--clr-green);
  color: var(--clr-white);
  padding: 0 4px;
}

.message__body {
  display: flex;
  flex-direction: column;
  gap: var(--sp-20);
  font-size: 24px;
  color: var(--clr-white);
  line-height: 2;
  margin-bottom: var(--sp-48);
}

.message__mark {
  background: var(--clr-blue-dark);
  color: var(--clr-white);
  padding: 0 var(--sp-8);
}

.message__question {
  font-family: var(--ff-display);
  font-weight: var(--fw-reg);
  font-size: var(--fs-xl);
  color: var(--clr-blue-navy);
  line-height: 1.6;
}

/* ==============================================
   General
   ============================================== */
.general {
  background: linear-gradient(180deg, var(--clr-blue-dark) 0%, #daeeff 100%);
  padding: var(--sp-80) var(--sp-48);
}

.general__inner {
  max-width: 1300px;
  margin: 0 auto;
  text-align: center;
}

.general__lead {
  text-align: center;
  font-size: var(--fs-base);
  font-weight: var(--fw-bold);
  color: var(--clr-white);
  margin-bottom: var(--sp-16);
}

.general__title {
  font-family: var(--ff-display);
  font-weight: var(--fw-reg);
  font-size: var(--fs-3xl);
  display: inline-block;
  background: var(--clr-white);
  color: var(--clr-blue-dark);
  padding: var(--sp-8) var(--sp-24);
  margin-bottom: var(--sp-40);
  line-height: 1.2;
}

.general__body {
  display: flex;
  flex-direction: column;
  gap: var(--sp-24);
  font-size: var(--fs-base);
  color: var(--clr-white);
  line-height: 2;
  text-align: center;
  margin-bottom: var(--sp-64);
}

.general__mark {
  background: var(--clr-white);
  color: var(--clr-blue-dark);
  padding: 0 var(--sp-8);
}

.general__compare-title {
  font-family: var(--ff-display);
  font-weight: var(--fw-reg);
  font-size: var(--fs-xl);
  color: var(--clr-white);
  text-align: center;
  margin-bottom: var(--sp-40);
}

.general__compare {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--sp-32);
}

.general__card {
  border-radius: var(--r-xl);
  padding: var(--sp-48) var(--sp-40);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--sp-24);
  text-align: center;
}

.general__card--light {
  background: var(--clr-white);
  color: var(--clr-blue-dark);
}

.general__card--dark {
  background: var(--clr-blue-navy);
  color: var(--clr-white);
}

.general__card-group {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--sp-16);
}

.general__card-name {
  font-family: var(--ff-display);
  font-weight: var(--fw-reg);
  font-size: var(--fs-xl);
  color: var(--clr-white);
  text-align: center;
}

.general__card-content {
  font-size: 40px;
  font-weight: var(--fw-bold);
  line-height: 1.8;
}

.general__plus {
  color: var(--clr-cyan);
}

.general__card-badge {
  display: inline-block;
  position: relative;
  font-size: 40px;
  font-weight: var(--fw-bold);
  padding: var(--sp-12) var(--sp-32);
  border-radius: var(--r-md);
}

.general__card-badge::before {
  content: '';
  position: absolute;
  top: -12px;
  left: 50%;
  transform: translateX(-50%);
  border-left: 10px solid transparent;
  border-right: 10px solid transparent;
}

.general__card-badge--outline {
  background: var(--clr-blue-dark);
  color: var(--clr-white);
}

.general__card-badge--outline::before {
  border-bottom: 12px solid var(--clr-blue-dark);
}

.general__card-badge--filled {
  background: var(--clr-white);
  color: var(--clr-blue-dark);
}

.general__card-badge--filled::before {
  border-bottom: 12px solid var(--clr-white);
}

/* ==============================================
   Unique
   ============================================== */
.unique {
  background: var(--clr-blue-light);
  padding: var(--sp-80) var(--sp-48);
}

.unique__inner {
  max-width: var(--w-inner);
  margin: 0 auto;
  text-align: center;
}

.unique__kicker {
  font-family: var(--ff-display);
  font-weight: var(--fw-reg);
  font-size: 64px;
  color: var(--clr-blue-dark);
  margin-bottom: var(--sp-16);
}

.unique__title {
  font-family: var(--ff-display);
  font-weight: var(--fw-reg);
  font-size: var(--fs-3xl);
  display: inline-block;
  background: var(--clr-white);
  color: var(--clr-blue-dark);
  padding: var(--sp-8) var(--sp-24);
  margin-bottom: var(--sp-64);
  line-height: 1.2;
}

.unique__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--sp-32);
  margin-bottom: var(--sp-64);
}

.unique__card {
  background: var(--clr-white);
  border-radius: var(--r-xl);
  padding: var(--sp-32);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--sp-16);
}

.unique__school {
  font-family: var(--ff-display);
  font-weight: var(--fw-reg);
  font-size: var(--fs-md);
  color: var(--clr-blue-dark);
  align-self: flex-start;
  text-align: left;
}

.unique__tag {
  color: var(--clr-white);
  font-size: var(--fs-base);
  font-weight: var(--fw-bold);
  padding: var(--sp-16) var(--sp-24);
  background: var(--clr-blue-dark);
  align-self: stretch;
  text-align: center;
}

.unique__icon {
  width: 200px;
  height: 200px;
}

.unique__icon img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.unique__desc {
  font-size: var(--fs-sm);
  font-weight: var(--fw-blk);
  color: var(--clr-blue-dark);
  line-height: 1.9;
  align-self: stretch;
  text-align: left;
  margin: 0 var(--sp-8);
}

.unique__cta {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--sp-16);
}

.unique__cta-label {
  font-size: var(--fs-md);
  font-weight: var(--fw-bold);
  color: var(--clr-white);
}

.unique__cta-btn {
  display: inline-block;
  background: var(--clr-green);
  color: var(--clr-white);
  font-size: var(--fs-base);
  font-family: var(--ff-display);
  font-weight: var(--fw-reg);
  padding: var(--sp-16) var(--sp-48);
  border-radius: var(--r-full);
  box-shadow: 0 4px 0 var(--clr-blue-dark);
  transition: opacity 0.25s ease;
}

.unique__cta-btn:hover {
  opacity: 0.8;
}
/* ==============================================
   Mobile (<=768px)
   ============================================== */
@media (max-width: 768px) {
  .hero__catch-line {
    font-size: clamp(30px, 6vw, 48px);
  }

  .hero__hl--accent {
    font-size: clamp(46px, 8vw, 60px);
    -webkit-text-stroke: 1px var(--clr-white);
  }

  .question {
    padding: var(--sp-48) var(--sp-24);
  }

  .question__inner {
    grid-template-columns: 1fr;
    gap: var(--sp-24);
    text-align: center;
  }

  .question__illust {
    width: 140px;
    margin: 0 auto;
  }

  .question__list {
    align-items: center;
  }

  .question__list li {
    font-size: 22px;
  }

  .question__sub {
    font-size: 16px;
    margin-bottom: var(--sp-16);
  }

  .question__title {
    font-size: 28px;
  }

  .message {
    padding: var(--sp-48) var(--sp-24);
  }

  .message__title {
    font-size: 22px;
    margin-bottom: var(--sp-24);
  }

  .message__body {
    font-size: 15px;
    gap: var(--sp-16);
    margin-bottom: var(--sp-24);
  }

  .message__question {
    font-size: 18px;
  }

  .general {
    padding: var(--sp-48) var(--sp-24);
  }

  .general__title {
    font-size: 1.75rem;
    padding: var(--sp-8) var(--sp-16);
  }

  .general__compare-title {
    font-size: 18px;
    margin-bottom: var(--sp-24);
  }

  .general__compare {
    grid-template-columns: 1fr;
    gap: var(--sp-16);
  }

  .general__card {
    padding: var(--sp-24) var(--sp-16);
    gap: var(--sp-12);
  }

  .general__card-content {
    font-size: 18px;
    line-height: 1.6;
  }

  .general__card-badge {
    font-size: 16px;
    padding: var(--sp-8) var(--sp-16);
  }

  .unique {
    padding: var(--sp-48) var(--sp-24);
  }

  .unique__kicker {
    font-size: 28px;
  }

  .unique__title {
    font-size: 1.75rem;
    margin-bottom: var(--sp-32);
    white-space: nowrap;
  }

  .unique__grid {
    grid-template-columns: 1fr;
    gap: var(--sp-16);
    margin-bottom: var(--sp-32);
  }

  .unique__icon {
    width: 120px;
    height: 120px;
  }

  .unique__desc {
    font-size: 13px;
    font-weight: var(--fw-bold);
  }
}
