/* ================================================================ 
   Global Plus LP – Scoped Overrides 
   ================================================================ */

.gp {
  /* --- 0) テーマノブ --- */
  --brand-navy: #141f58;
  --color-bg: #ffffff;
  --color-bg-alt: #f7f7fb;
  --color-border: #e8eaf2;
  --color-text: #333;
  --color-text-light: #6b7280;
  --color-heading: #111827;
  --gp-accent: #131b2d;
  --gp-accent-weak: #2f3546;
  --gp-radius: 14px;
  --gp-shadow: 0 11px 26px rgba(17,24,39,.08);
  --gp-warm: #ffffff;

  /* --- 1) ヘッダー管理変数 --- */
  --header-scale: 1;
}

/* ============================================= 
   1. ヘッダー・ナビゲーション 
   ============================================= */

.gp .site-header {
  position: fixed; top: 0; left: 0; width: 100%; z-index: 1000;
  background: rgba(255,255,255,.94);
  backdrop-filter: saturate(120%) blur(8px);
  padding: calc(12px * var(--header-scale)) 0;
  transition: padding 0.3s ease, background-color 0.3s ease;
}

.gp .site-header.is-scrolled {
  --header-scale: 0.8;
  background: rgba(255,255,255,.9);
  box-shadow: 0 2px 10px rgba(0,0,0,0.05);
}

.gp .site-header .container {
  display: flex; justify-content: space-between; align-items: center; padding: 0 24px;
  gap: 16px;
}

.gp .site-header .logo img {
  height: calc(75px * var(--header-scale));
  transition: height 0.3s ease;
}

/* LP用：中央メニュー非表示 */
.gp .nav-links, .gp .menu-toggle { display: none !important; }
.gp .site-header .cta-button { margin-left: auto; }

/* ヘッダーCTAボタン（各デバイスサイズ維持） */
.gp .site-header .cta-button {
  background-color: var(--brand-navy);
  color: #fff; text-decoration: none;
  font-family: var(--font-action); font-weight: 700; letter-spacing: 0.08em;
  border-radius: 999px;
  padding: 0.35rem 1rem; font-size: 0.7rem;
  transition: transform 0.25s ease, box-shadow 0.25s ease, opacity 0.25s ease;
}
.gp .site-header .cta-button:hover {
  opacity: 0.92; transform: translateY(-1px);
  box-shadow: 0 6px 16px rgba(15, 23, 42, 0.18);
}

@media (min-width: 640px) {
  .gp .site-header .logo img { 
    height: calc(68px * var(--header-scale)); 
  }
  .gp .site-header .cta-button { 
    padding: 7px 16px; 
    font-size: 0.8rem; 
  }
}
@media (min-width: 1024px) {
  .gp .site-header .logo img { 
    height: calc(75px * var(--header-scale)); 
  }
  .gp .site-header .cta-button { 
    padding: 8px 20px; 
    font-size: 0.9rem; 
  }
}
@media (max-width: 640px) {
.gp .site-header .logo img { 
  height: calc(58px * var(--header-scale)); 
}
.gp .site-header .cta-button { 
  padding: 6px 14px; 
  font-size: 0.75rem; 
  box-shadow: 0 3px 10px rgba(15,23,42,.15);
}
}

/* ============================================= 
   2. ヒーロー・お知らせ 
   ============================================= */

.gp .hero.hero--gp {
  background: linear-gradient(180deg, rgba(30,42,120,.28), rgba(30,42,120,.18)), url('/globalplus/assets/gp-hero.jpg') center/cover no-repeat;
  min-height: clamp(420px, 70vh, 88vh);
  display: flex; align-items: center; justify-content: center;
  padding: clamp(100px, 13.5vh, 165px) 24px;
}
@media (max-width: 640px) { .gp .hero.hero--gp { padding: 72px 20px; } }

.gp .hero .hero-content { display: flex; flex-direction: column; align-items: center; gap: 0.9rem; text-align: center; }
.gp .hero .hero-content h1 { font-size: clamp(1.1rem, 5.3vw, 2.75rem); line-height: 1.3; letter-spacing: .023em; font-weight: 380; margin-bottom: 0.8rem; }
.gp .hero-tagline { font-size: clamp(1rem, 3vw, 1.2rem); line-height: 1.65; letter-spacing: .02em; opacity: 0.85; max-width: 34rem; }
.gp .hero-tagline .jp-small { font-size: 0.88em; letter-spacing: .04em; font-weight: 400; }
.gp .hero-note { font-size: clamp(0.85rem, 2.8vw, 0.95rem); line-height: 1.65; opacity: 0.85; max-width: 32rem; margin-bottom: 0.75rem; }

/* Announcement Bar */
.gp .announcement-bar { margin-top: calc(75px * var(--header-scale)); background: var(--brand-navy); padding: .5rem 0; box-shadow: 0 2px 10px rgba(17,24,39,.04); margin-top: 0; }
.gp .announcement-bar .container { display: flex; align-items: center; justify-content: center; gap: .5rem; flex-wrap: nowrap; }
.gp .announcement-bar .badge { flex: 0 0 auto; padding: .32rem .6rem; border-radius: 999px; background:#ffffff; color:#3f3f3f; font-weight: 700; font-size: clamp(.8rem, 1vw, 1.1rem); letter-spacing: 0.02em;; line-height: 1; }
.gp .announcement-bar p { flex: 0 1 auto; text-align: center; min-width: 0; margin: 0; font-size: clamp(.9rem, 2vw, .98rem); line-height: 1.5; color:#ffffff; text-wrap: balance; letter-spacing: .01em; }

@media (max-width: 639px) { .gp .announcement-bar .container { justify-content: flex-start; flex:1 1 auto; text-align: left; } }
@media (max-width: 359px) { .gp .announcement-bar .badge { font-size: .78rem; padding: .26rem .55rem; } .gp .announcement-bar p { font-size: .95rem; } }
@media (min-width: 640px) { .gp .announcement-bar { padding: .8rem 0; } .gp .announcement-bar .badge { font-size: .85rem; padding: .32rem .75rem; } .gp .announcement-bar p { font-size: 1.02rem; } }

/* ============================================= 
   3. セクション共通・テキスト系 
   ============================================= */

.gp .section { padding: clamp(48px, 7vw, 96px) 0; }
.gp .section--alt { background: var(--color-bg-alt); }

.gp .section__title {
  font-size: clamp(1.6rem, 3.8vw, 2.1rem); font-weight: 500; line-height: 1.5;
  text-align: center; margin-bottom: 1.2rem; color: var(--color-heading); letter-spacing:.01em;
}
@media (max-width: 640px) { .gp .section__title { margin-bottom: .8rem; } }

.gp .section__lead { font-size: 1rem; line-height: 1.8; max-width: 720px; margin: 0 auto; text-align: center; color: var(--color-text); }
.gp .section__lead .sub { display: block; margin-top: .4rem; font-size: .92rem; color: var(--color-text-light); }

.about-text { max-width: 720px; margin: 0 auto; text-align: center; }
.about-text h2 { font-size: clamp(1.45rem, 3.5vw, 2.0rem); line-height: 1.75; margin: 1.3rem 0; }
.about-text p { font-size: 1rem; line-height: 1.75; margin: 1.25rem 0; }

/* ============================================= 
   4. 各コンテンツセクション 
   ============================================= */

/* First Program */
.gp .section-first-program { padding-left: clamp(48px, 8vw, 120px); padding-right: clamp(48px, 8vw, 120px); }
.gp .start { background: var(--color-bg); }
.gp .start-stack { display: flex; flex-direction: column; align-items: center; text-align: center; }
.gp .start-kicker { font-size: .85rem; letter-spacing: .16em; font-weight: 700; color: var(--brand-navy); opacity: .85; margin-bottom: .55rem; }
.gp .start-main { font-size: clamp(1.45rem, 3.5vw, 2.0rem); line-height: 1.55; font-weight: 500; margin: 0 0 1.6rem; }
.gp .start-definition { max-width: 720px; text-align: left; font-size: 1rem; line-height: 1.9; margin: 0 0 2rem; color: var(--color-text); }
.gp .start-features { list-style: none; padding: 0; margin: 0; max-width: 520px; text-align: left; }
.gp .start-features li { display: flex; gap: .6rem; margin-bottom: .9rem; line-height: 1.7; }
.gp .start-features .check { color: var(--brand-navy); font-weight: 800; }
.gp .note-small { margin-top: 1.2rem; font-size: 0.8rem; line-height: 1.4; color: var(--color-text-light); text-align: center; }

/* Early Bird Impact */
.gp-earlybird-impact { background: var(--color-bg-alt); padding: clamp(96px, 12vh, 140px) 0; }
.impact-title { text-align: center; font-size: clamp(1.6rem, 3.6vw, 2.5rem); line-height: 1.45; margin-bottom: 1.2rem; }
.impact-em { color: var(--brand-navy); letter-spacing: .065em; }
.impact-lead { max-width: 760px; margin: 0 auto 3rem; text-align: left; line-height: 1.9; opacity: .95; }
.impact-cards { max-width: 760px; margin: 0 auto; }
.impact-card { padding: 2.4rem 2.6rem; background: linear-gradient(180deg, #fff8d3, #ffffff); border: 1px solid #f1d48a; border-radius: 20px; box-shadow: 0 16px 40px rgba(17,24,39,.1); }
.impact-card-title { margin: 0 0 1.4rem; font-size: 1.05rem; letter-spacing: .06em; }
.impact-card-title span { font-size: 0.85rem; }
.impact-list { list-style: none; padding: 0; margin: 0; }
.impact-list li { position: relative; padding-left: 1.5em; margin-bottom: .9rem; line-height: 1.7; }
.impact-list li::before { content: "✓"; position: absolute; left: 0; top: .1em; font-weight: 700; color: var(--brand-navy); }
@media (max-width: 768px) { .impact-card { padding: 2rem 1.8rem; } }

/* Pricing Section */
.pricing { background: #fafbfc; padding-bottom: 0; }
.price-early { background: linear-gradient( 180deg, #fff8d3, #fffcee ); border-radius: 18px; padding: 1.4rem 1.2rem; margin: 0 auto 1rem; box-shadow: 0 8px 28px rgba(0,0,0,.06); }
.early-period { font-size: 0.82rem; font-weight: 500; letter-spacing: .08em; opacity: .85; }
.early-label { font-size: 1.05rem; font-weight: 600; margin: .2rem 0 .6rem; }
.early-amount { font-size: 1.7rem; font-weight: 700; }
.early-amount span { font-size: 0.85rem; font-weight: 400; }

/* Target Section */
.gp .section-target { background: var(--color-bg); color: var(--color-text); }
.gp .section-target .target__title { color: var(--color-heading); font-size: clamp(1.5rem, 3.8vw, 2.0rem); }
.gp .target-list { list-style: none; margin: 1.25rem 0 0; padding: 0; display: grid; gap: 1.25rem; grid-template-columns: 1fr; }
@media (min-width: 640px) { .gp .target-list { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .gp .target-list { grid-template-columns: repeat(3, 1fr); } }

.gp .target-card { background: #fff; border: 1px solid var(--color-border); border-radius: var(--gp-radius); padding: 1rem 1.25rem; box-shadow: var(--gp-shadow); transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease; }
.gp .target-card:hover { transform: translateY(-2px); box-shadow: 0 10px 28px rgba(17,24,39,.14); }
.gp .target-card__head { display: flex; align-items: center; gap: .5rem; margin-bottom: .25rem; }
.gp .target-card__title { font-size: 1rem; margin: 0; }
.gp .target-card p { font-size: 0.95rem; margin: 0; color: var(--color-text); }
.gp .target-card__image { width: 100%; aspect-ratio: 30 / 28; overflow: hidden; border-radius: var(--gp-radius); margin: 0.6rem 0 0.8rem; }
.gp .target-card__image img { width: 100%; height: 100%; object-fit: cover; display: block; }
.gp .target-note { margin-top: 1.6rem; font-size: .85rem; line-height: 1.6; color: #5a5a5a; text-align: center; }
.gp .target-note strong { color: var(--color-text); font-weight: 600; }
.gp .bullet { display: inline-flex; width: 22px; height: 22px; align-items: center; justify-content: center; border-radius: 999px; background: var(--gp-accent); color: #fff; font-weight: 700; }

/* FAQ Section */
.gp .faq { background: var(--color-bg-alt); }
.gp .faq-list { width:100%; max-width:720px; margin-top:2rem; display:flex; flex-direction:column; gap:1rem; }
.gp .faq-item { border:1px solid #e8eaf2; border-radius:12px; background:#fff; overflow:hidden; }
.gp .faq-question { list-style:none; -webkit-appearance:none; appearance:none; outline:none; border:0; background:transparent; display:flex; align-items:center; justify-content:space-between; width:100%; box-sizing:border-box; padding:1rem 1.25rem; font-weight:700; font-size:1rem; cursor:pointer; }
.gp .faq-question::-webkit-details-marker { display:none; }
.gp .faq-question::after { content:"▶"; font-size:.95rem; line-height:1; transition:transform .2s ease, opacity .2s ease; opacity:.85; }
.gp .faq-item[open] > .faq-question::after { content:"▼"; opacity:1; }
.gp .faq-item[open] > .faq-question { border-bottom:1px solid #e8eaf2; }
.gp .faq-answer { padding: .6rem 1.25rem 1rem; color:#444; font-size:.98rem; line-height:1.7; }

/* ============================================= 
   5. プラン・カード・フォーム 
   ============================================= */

/* Plans Grid */
.gp .plans-grid { display: grid; grid-template-columns: 1fr; gap: clamp(22px, 2.5vw, 28px); margin: clamp(17px, 2.2vw, 24px) auto 0; max-width: 520px; }
.gp .plan { border: none; border-radius: var(--gp-radius); background: linear-gradient(to bottom right, rgba(30,42,120,.085), rgba(30,42,120,0)); box-shadow: var(--gp-shadow); position: relative; padding: 0.5rem 0.95rem; overflow: hidden; }
.gp .plan__head { padding: 0.8rem 1.2rem 0.6rem; border-bottom: 1px solid var(--color-border); background: transparent; }
.gp .plan__title { margin: 0; font-size: 1.28rem; font-weight: 800; letter-spacing: .015em; }
.gp .plan__tagline { margin: .3rem 0 0; color: var(--color-text-light); font-size: .9rem; }
.gp .plan__body { padding: 0.85rem; }
.gp .plan__price { margin: .3rem 0 .6rem; color: var(--color-text-light); font-size: .9rem; }
.gp .plan__price span { font-size: 1.4rem; color: var(--color-heading); font-weight: 700; }

/* --- プラン特徴リスト：構造リセット --- */
.gp .plan__features {
  list-style: none;
  padding: 0;
  margin: 0 0 1.2rem;
}

.gp .plan__features li {
  position: relative;
  padding-left: 1.8em; /* アイコン分の余白 */
  margin-bottom: 1rem; /* 項目ごとの余白を少し詰める */
  line-height: 1.5;    /* 全体の行間を調整 */
}

/* アイコン共通：位置の絶対固定 */
.gp .plan__features li::before {
  position: absolute;
  left: 0;
  top: 0;
  width: 1.2em;
  text-align: center;
  font-weight: 700;
  /* 1行目の高さに合わせる */
  height: 1.5; 
  display: flex;
  justify-content: center;
}

/* --- 【種別】アクティブ（✓） --- */
.gp .plan__features li.feature--active::before {
  content: "✓";
  color: var(--brand-navy);
  font-size: 1.0em;
}

/* --- 【種別】予定（＋） --- */
.gp .plan__features li.feature--upcoming::before {
  content: "＋";
  color: #cfb118;
  font-size: 1.05em;
  /* ✓と中心を合わせるための微調整 */
  margin-left: -0.08em; 
}

/* テキスト：余計なblock指定を削除 */
.gp .plan__features strong {
  font-weight: 600;
  color: var(--color-heading);
}

.gp .plan__features .feature-desc {
  font-size: 0.88em;
  color: var(--color-text-light);
  /* 説明文を少しだけタイトルに近づける */
  display: inline-block;
  margin-top: 0.1rem;
}
.gp .feature--upcoming strong {
  color: #4a4a4a;
}
.gp .plan__features .feature-desc {
  display: block;
  font-size: 0.88em;
  color: var(--color-text-light);
  line-height: 1.5;
  margin-top: 0.1rem;
}
/* upcoming（予定）項目の文字色を少しマイルドに */
.gp .feature--upcoming .feature-title {
  color: #4a4a4a;
}
.gp .feature--upcoming .feature-desc {
  opacity: 0.88;
}

/* --- その他補足・CTA --- */
.gp .plan__note {
  font-size: 0.8rem;
  color: var(--color-text-light);
  line-height: 1.6;
}

.gp .plan__cta {
  display: flex;
  justify-content: center;
  margin-top: 1.5rem;
}

/* Buttons & CTA */
.gp .btn-lp { display:inline-block; padding:8.5px 20px; border-radius:999px; border:1px solid var(--brand-navy); background:var(--brand-navy); color:#fff; text-decoration:none; font-family: var(--font-action); font-weight: 670; letter-spacing: .06em; transition: all .25s ease; }
.gp .btn-lp:hover { background-color: var(--brand-navy); border-color: var(--brand-navy); transform: translateY(-1px); box-shadow: 0 6px 16px rgba(15,23,42,.18); opacity: .92; }
.gp .btn-lp--ghost { background:#fff; color:var(--brand-navy); border-color:var(--brand-navy); }
.gp .btn-lp--ghost:hover { background:rgba(38,46,107,.06); }
.gp .btn-lp--block { display:block; text-align:center; }

.gp .site-header .cta-button {
  background: transparent;
  color: var(--brand-navy);
  border: 1px solid var(--brand-navy);
}
.gp .site-header .cta-button:hover {
  background: rgba(20,31,88,.06);
}

/* Waitlist Form */
.gp #pre-register .container { display: flex; flex-direction: column; align-items: center; }
.gp .contact-form { width: 100%; max-width: 680px; }
.gp .contact-form__input, .gp .contact-form__textarea { border-color: var(--color-border); box-shadow: 0 0 0 3px rgba(0,0,0,.03); }
.gp .contact-form__button { border-radius: 999px; border-color: var(--gp-accent); background: var(--gp-accent); font-family: var(--font-action); font-weight: 700; transition: all .25s ease; }
.gp .contact-form__button:hover { background: var(--gp-accent-weak); border-color: var(--gp-accent-weak); }

/* ============================================= 
   6. フッター 
   ============================================= */

.gp-footer { background: #fafbff; font-size:clamp(0.78rem, 0.9vw, 0.94rem); padding: 32px 0 20px; border-top: 1px solid #e8eaf2; }
.gp-footer__inner { max-width: 1100px; margin: 0 auto; padding: 0 24px; box-sizing: border-box; overflow-x: hidden; }
.gp-footer__grid { display: grid; grid-template-columns: 1.35fr 1fr 1fr 1fr; gap: clamp(24px, 4vw, 40px); align-items: start; }
.gp-footer__brand { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; padding-left: 0; text-align: center; }
.gp-footer__logo { width: min(200px, 100vw); height: auto; }
.gp-footer__nav ul, .gp-footer__legal ul { list-style: none; padding: 0; margin: 0; }
.gp-footer__nav li, .gp-footer__legal li { font-size: 0.93em; line-height: 1.6; margin-bottom: 0.5rem; }
.gp-footer__nav h4, .gp-footer__legal h4 { margin: 0 0 0.75rem; font-size: clamp(0.88rem, 1vw, 0.97rem); font-weight: 600; color: #111827; letter-spacing: .04em; }
.gp-footer__nav a, .gp-footer__legal a { white-space: normal; color: #4b5563; text-decoration: none; }
.gp-footer a:hover { color: #1e2a78; text-decoration: underline; }
.gp-footer__copy { margin-top: 20px; padding-top: 8.5px; padding-bottom: 2px; border-top: 1px solid rgba(154, 160, 173, 0.25); text-align: center; }
.gp-footer__copy small { display: block; margin: 0; line-height: 1.3; color: #9aa0ad; font-size: 0.65rem; }

@media (max-width: 768px) {
  .gp-footer__grid { grid-template-columns: 1fr; gap: 24px; text-align: center; }
}

/* === Hero CTA only === */
.gp .hero .btn-lp{
  background: rgba(255,255,255,.08);
  border:1.5px solid rgba(255,255,255,.9);
  color:#fff;
  backdrop-filter: blur(4px);
}

.gp .hero .btn-lp:hover{
  background: rgba(255,255,255,.18);
  border:1.5px solid #182461ec;
  color:#182461ec;
}

/* === Hero CTA layout fix === */
.gp .hero .lp-cta-row{
  display:flex;
  flex-direction:column;   /* ← 縦並び */
  align-items:center;
  gap:22px;
}