/* ==========================================================================
   1. Variables & Base Settings (基本設定・変数)
   ========================================================================== */
:root {
  --base-size: 16px;
  --color-main: #1f2336;
  --color-bg-light: #eff4ff;
  --color-bg-article: #f8faff;
  --color-red: #d51d0c;
  --color-orange: #EB6100;
  --color-blue-dark: #071661;
  --color-white: #ffffff;
}

body {
  font-family: "Noto Sans JP", sans-serif;
  font-optical-sizing: auto;
  color: var(--color-main);
  width: 100% !important;
  margin: 0;
}

section {
  width: 100%;
}

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

#wrapper {
  background-color: var(--color-bg-light);
}

/* ==========================================================================
   2. Typography (Fonts & Weights)
   ========================================================================== */
h1 { font-size: clamp(calc(var(--base-size) * 2), 5vw, calc(var(--base-size) * 2.5)); }
h2 { font-size: clamp(calc(var(--base-size) * 1.375), 4vw, calc(var(--base-size) * 1.75)); }
h3 { font-size: clamp(calc(var(--base-size) * 1.25), 3vw, calc(var(--base-size) * 1.5)); line-height: 1.6; }
h4 { font-size: clamp(calc(var(--base-size) * 1.125), 2vw, calc(var(--base-size) * 1.25)); }
h5 { font-size: clamp(calc(var(--base-size) * 0.93), 1vw, var(--base-size)); }

p {
  font-size: clamp(15px, 1vw + 12px, var(--base-size));
  line-height: 1.7;
}

.bold { font-weight: bold; }
.text_orange { color: var(--color-orange); }
.text_red { color: var(--color-red); }

/* PC/SP 切り替え */
.pc { display: block !important; }
.sp { display: none !important; }

@media only screen and (max-width: 768px) {
  .pc { display: none !important; }
  .sp { display: block !important; }
}

/* ==========================================================================
   3. Main Layout (HTML構造順)
   ========================================================================== */

/* コンテンツ全体背景 */
.article_contents {
  display: flex;
  background-color: var(--color-bg-article);
  flex-direction: column;
  align-items: center;
}

/* 導入文 */
.introduction {
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  z-index: 5;
}
.introduction_text {
  width: 100%;
  max-width: 800px;
}
.introduction_text p {
  font-size: clamp(1rem, 1.25vw, 1.125rem);
  font-style: normal;
  font-weight: 500;
  line-height: 2;
  padding: 0 0 3rem 0;
}

/* 目次 */
.index {
  background-color: var(--color-white);
  border: solid 1px var(--color-main);
  border-radius: 10px;
  padding: 30px 50px;
}
.index p { font-style: normal; font-weight: 400; line-height: 2; }
.index h4 { color: var(--color-orange); font-family: "Jost"; font-style: normal; font-weight: 400; }
.index ul { font-size: clamp(1rem, 1.25vw, 1.125rem); font-weight: 500; margin: 0; padding: 0; list-style: disc; }
.index ul li { line-height: 2rem; }
.index a { text-decoration: none; color: inherit; }
.index a:hover { opacity: 0.5; }

/* 記事本文全体 */
.article {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 100%;
  padding: 0vh 4vw 0;
}
.article p { line-height: 2; }

/* 記事各ブロック */
.article01, .article02, .article03, .article04, .article05 {
  width: 100%;
  max-width: 1200px;
  display: flex;
  flex-direction: column;
  align-items: center;
  column-gap: 2em;
}

/* 見出しエリア */
.title-area { width: 100%; }

.title {
  padding: 0 0 1.5rem 0;
}

.title_orange {
  color: var(--color-white);
  font-weight: 500;
  font-feature-settings: "palt";
  background-color: var(--color-orange);
  margin: 0 0 0.65rem 0;
  padding: 12px 40px;
  width: fit-content;
}

/* 記事番号 */
p.number {
  font-family: "Jost", sans-serif;
  font-size: clamp(40px, 5.56vw, 80px);
  font-style: italic;
  font-weight: 300;
  line-height: 1.5;
}
.number_sign {
  font-family: "Jost", sans-serif;
  font-size: clamp(32px, 4.03vw, 58px);
  font-style: italic;
  font-weight: 300;
}

/* 写真とキャプション */
.photo_area {
  display: flex;
  flex-direction: column;
  row-gap: 0.5rem;
  width: 100%;
  padding: 0 0 2.5rem 0;
}
.annotation {
  font-size: clamp(14px, 1vw + 0.5rem, 16px);
}

/* 対談テキスト */
.text_area {
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: 800px;
  padding: 0 0 2rem 0;
}

.talk-row {
  display: flex;
  margin-bottom: 40px;
  align-items: flex-start;
}
.name {
  font-weight: bold;
  min-width: 4em;
  margin-right: 20px;
  flex-shrink: 0;
}
.content { flex-grow: 1; }
.content p { margin: 0 0 1.5em 0; }
.talk-row p:last-child { margin-bottom: 0; }

/* プロフィール */
.profile {
  display: flex;
  width: 100%;
  max-width: 800px;
  flex-direction: column;
  align-items: center;
  row-gap: 3em;
  padding-top: 4rem;
}
.profile_list {
  width: 100%;
  display: flex;
  flex-direction: row;
  align-items: center;
  column-gap: 2vw;
}
.profile_photo { width: 100%; max-width: 200px; }
.profile_text { display: flex; width: 100vw; flex-direction: column; }
.profile_name { font-size: 22px; font-weight: 500; }
.profile_name > span.suffix { font-size: 14px; margin-left: 5px; }
.company-info { font-size: 16px; font-weight: 500; }

/* バナー・フッター */
.bnr_area {
  display: flex;
  width: 100%;
  flex-direction: column;
  align-items: center;
  padding: 10vh 0 0 0;
}
.bnr_area img { width: 30vw; }
.bnr_area a:hover { opacity: 0.5; }

.office_station {
  display: flex;
  width: 100%;
  height: auto;
  background-image: url(./footer.png);
  background-size: cover;
  background-repeat: no-repeat;
  background-position: center;
  flex-direction: column;
}
.office_station_contents {
  display: flex;
  flex-direction: column;
  align-items: center;
  row-gap: 5vh;
  padding: 8vh 0 12vh;
}
.os_logo { width: 20vw; }
.os_btnarea { display: flex; flex-direction: row; align-items: center; row-gap: 5vh; column-gap: 2vw; }
.os_btn {
  color: var(--color-blue-dark);
  background-color: var(--color-white);
  border: 1px solid var(--color-blue-dark);
  border-radius: 30px;
  box-sizing: border-box;
  padding: 3% 4%;
  width: 19.5vw;
  display: flex;
  justify-content: center;
  align-items: center;
  text-decoration: none;
}
.os_btn:hover { color: var(--color-white); background-color: var(--color-blue-dark); border: 1px solid var(--color-blue-dark); }

.operating_company { display: flex; flex-direction: column; align-items: center; row-gap: 10%; }
.operating_company_logo { width: 15vw; }
.operating_company a { text-decoration: none; }
.operating_company a:hover { opacity: 0.5; }

/* ==========================================================================
   4. Mobile Adjustments (スマホ対応)
   ========================================================================== */
@media only screen and (max-width: 768px) {
  .introduction { padding: 0 0 8vh 0; position: relative; }
  .introduction_text { padding: 4vh 4vw 0; position: static; bottom: 0; }
  
  .article { padding: 0 4% 0; }
  .article01, .article02, .article03 { align-items: flex-start; }
  
  .title { padding: 0; }
  .title_orange { padding: 6px 15px !important; margin: 0 0 0.65rem 0; width: fit-content; }
  
  .photo_area { padding: 1rem 0 2rem 0 !important; display: flex; width: 100%; }
  
  .talk-row { flex-direction: row; }
  .name { min-width: 3em; margin-right: 0px; margin-bottom: 8px; }
  .text_area { padding: 0; }

  .profile_list { flex-direction: column; padding: 0 0 4vw; }
  .profile_photo { width: 100vw; padding: 0 4vw; }
  .profile_text { width: 100vw; padding: 4vw 4vw 0; }
  
  .bnr_area img { width: 80vw; }
  
  .office_station { background-image: url(./footer_sp.png); background-size: contain; background-position: bottom; }
  .office_station_contents { padding: 12vh 0 28vh 0; }
  .os_logo { width: 50vw; }
  .os_btn { width: 37.5vw; padding: 3% 4%; }
  .operating_company_logo { width: 50vw; }
}

/* ==========================================================================
   5. Legacy / Unused Styles (保持用・下部記載)
   ========================================================================== */

/* 元のCSSにあり、現状のHTMLに直接指定がないもの */
.container {
  max-width: 1200px; margin: 0 auto; width: 100%;
  display: flex; justify-content: space-between; align-items: center; padding: 0 50px; z-index: 10;
}
.hero-content { color: #ffffff; flex: 1; padding: 0; }
.profile-group { margin-bottom: 30px; }
.profile-item { margin-bottom: 20px; }
.person-name { font-size: 32px; font-weight: bold; }
.suffix { font-size: 18px; margin-left: 5px; }
.title-group { display: flex; flex-direction: column; align-items: flex-start; gap: 15px; }
.hero-title-box { background-color: #ffffff; color: #d51d0c; padding: 10px 30px; font-size: 36px; font-weight: bold; display: inline-block; }
.title_red { color: #ffffff; font-weight: 500; font-feature-settings: "palt"; background-color: #d51d0c; margin: 0 0 0.65rem 0; padding: 12px 40px; width: fit-content; }
.bottom-arc { position: relative; width: 100%; z-index: 5; }
.bottom-arc_bt { position: absolute; bottom: -150px; left: 50%; transform: translateX(-50%); width: 100%; height: 300px; background-color: #f8faff; border-radius: 0 0 50% 50%; z-index: 5; }
.pd_b3re { padding-bottom: 3rem !important; }
.hide01 { display: block; }
.hide02 { display: none; }

@media only screen and (max-width: 768px) {
  .mainvisual { padding: 2vw; }
  .hero-content { color: #ffffff; flex: 1; padding: 0; }
  .person-name { font-size: 24px; font-weight: bold; }
  .suffix { font-size: 16px; margin-left: 5px; }
  .hero-title-box { background-color: #ffffff; color: #d51d0c; padding: 10px 30px; font-size: 24px; font-weight: bold; display: inline-block; }
  .profile-group { margin-bottom: 380px; }
  .title_red { padding: 6px 15px !important; width: fit-content; }
  .name-badge01 { position: absolute; bottom: -20px; right: 30px; left: auto; color: #071661; padding: 8px 15px; }
  .movie_contents a { width: 170px; height: auto; box-sizing: border-box; }
}