
:root {
  --bg: #fbfaf8;
  --bg-grad: #ffffff;
  --surface: rgba(255,255,255,.94);
  --surface-2: #fbf9f5;
  --line: rgba(15,15,15,.065);
  --line-strong: rgba(15,15,15,.12);
  --text: #141414;
  --muted: #6a6761;
  --accent: #c92525;
  --accent-soft: rgba(201,37,37,.08);
  --shadow: 0 14px 34px rgba(20,20,20,.045);
}

/* フォント統一: M+ 1pサブセットの文字抜けを防ぐ */
body, h1, h2, h3, h4, h5, h6, p, a, li, th, td, span, div, input, textarea, button, select {
  font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Hiragino Sans', 'Hiragino Kaku Gothic ProN', '游ゴシック Medium', 'Yu Gothic Medium', 'Yu Gothic', meiryo, sans-serif !important;
}

html { scroll-behavior: smooth; }
body {
  overflow-x: clip;
  color: var(--text);
  background:
    radial-gradient(circle at 14% 10%, rgba(201,37,37,.035), transparent 22%),
    linear-gradient(180deg, var(--bg) 0%, var(--bg-grad) 42%, #f6f2ec 100%);
  letter-spacing: .01em;
}

a { color: var(--text); transition: color .22s ease, opacity .22s ease; }
a:hover { color: var(--accent); opacity: 1; }
p, li, th, td { color: var(--text); }

header {
  position: sticky !important;
  top: 0;
  z-index: 999;
  background: rgba(255,255,255,.90) !important;
  border-bottom: 1px solid var(--line);
  backdrop-filter: blur(14px);
}
header section { border-bottom: none !important; }
.block_header {
  width: min(1180px, calc(100% - 56px)) !important;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 22px;
  padding: 18px 0 12px !important;
  overflow: visible;
}
.block_header .logo { float: none !important; width: 220px !important; flex: 0 0 auto; }
.block_header .logo img { filter: drop-shadow(0 6px 12px rgba(0,0,0,.03)); }
.block_header .nav_global { float: none !important; align-items: center; }
.block_header .nav_global > li { float: none !important; }
.block_header .nav_global > li > a {
  padding: 16px 12px 10px !important;
  color: #77736f !important;
  border-bottom: 2px solid transparent;
  transition: color .2s ease, border-color .2s ease;
}
.block_header .nav_global > li > a span { color: var(--text); }
.block_header .nav_global > li.active > a,
.block_header .nav_global > li > a:hover {
  background: transparent !important;
  box-shadow: none !important;
  transform: none !important;
  color: var(--text) !important;
  border-color: var(--accent) !important;
}
.block_header .nav_global > li > .nav_global-sub {
  margin-top: 12px;
  background: rgba(255,255,255,.99) !important;
  border-top: 1px solid var(--line);
  box-shadow: 0 18px 36px rgba(0,0,0,.05);
}
.block_header .nav_global > li > .nav_global-sub > ul > li a {
  color: var(--text) !important;
  border-right-color: var(--line) !important;
}

.block_header,
.wrapper,
.content,
.area_business .inner,
.block_main .info_main,
footer .content {
  width: min(1100px, calc(100% - 56px)) !important;
  margin-left: auto !important;
  margin-right: auto !important;
}
.area_business,
.area_sub,
.area_recruit,
.area_related {
  margin-left: auto !important;
  margin-right: auto !important;
}

.block_main { height: auto !important; min-height: 760px; overflow: hidden; }
.block_main.is_top { min-height: 800px; }
.block_main .img_main {
  position: absolute !important;
  inset: 0;
  height: 100% !important;
  margin: 0 !important;
  overflow: hidden;
}
.block_main .img_main img {
  position: static !important;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block;
  margin: 0 !important;
  left: auto !important;
  min-height: 0 !important;
  max-width: none !important;
}
.block_main .img_main::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0.18) 0%, rgba(0,0,0,0.10) 50%, rgba(0,0,0,0.25) 100%);
  pointer-events: none;
}
.block_main .img_main.bg_red {
  background: #fff !important;
  height: 100% !important;
}
.block_main .img_main.bg_red::after { display: none !important; }
.block_main .info_main {
  position: relative;
  min-height: 760px;
}
.block_main:not(.is_top) .info_main {
  color: #fff !important;
}
.block_main.is_top .info_main {
  color: var(--text) !important;
}
.block_main .info_main .txt_main {
  position: absolute;
  top: 186px;
  right: 0;
  width: 46%;
  text-align: left !important;
}
.block_main .info_main .txt_main.sub {
  width: 72% !important;
  right: 0 !important;
  left: auto !important;
  top: 156px !important;
}
.block_main .info_main .txt_main .title_main {
  margin-bottom: 22px;
  font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Hiragino Sans', 'Yu Gothic', sans-serif !important;
  font-size: clamp(40px, 4.8vw, 64px) !important;
  font-weight: 650 !important;
  line-height: 1.16;
  letter-spacing: .11em !important;
}
.block_main.is_top .info_main .txt_main .title_main { color: var(--text); }
.block_main:not(.is_top) .info_main .txt_main .title_main {
  color: #fff !important;
  text-shadow: 0 1px 8px rgba(0,0,0,0.3);
}
.block_main .info_main .txt_main p {
  font-size: 15px;
  line-height: 2;
}
.block_main.is_top .info_main .txt_main p { color: var(--muted); }
.block_main:not(.is_top) .info_main .txt_main p {
  color: #fff !important;
  text-shadow: 0 1px 4px rgba(0,0,0,0.2);
}
.block_main .info_main .txt_main p.size_medium { font-size: 16px !important; }
.block_main .info_main .txt_main p.title_copy {
  margin-top: 24px;
  font-size: 17px !important;
  font-style: normal;
  letter-spacing: .16em;
}
.block_main.is_top .info_main .txt_main p.title_copy { color: var(--accent) !important; }
.block_main.is_top .info_main .txt_main p.title_copy:before { background: var(--line-strong) !important; }
.block_main:not(.is_top) .info_main .txt_main p.title_copy { display: none !important; }
.block_main .info_main .obj_main {
  top: 124px !important;
  left: 32px;
  right: auto;
  width: min(32vw, 380px) !important;
  opacity: .98;
  background: rgba(240, 240, 240, 0.5);
  padding: 16px;
  border-radius: 12px;
  filter: drop-shadow(0 16px 28px rgba(0,0,0,.05));
}

.flex { align-items: stretch !important; gap: 28px; }
.block_intro {
  width: 54%;
  margin-right: 0 !important;
  padding-top: 32px !important;
  text-align: left;
}
.block_intro .title_intro {
  margin-bottom: 22px;
  font-size: clamp(28px, 3vw, 38px) !important;
  line-height: 1.34;
  border-bottom: none !important;
  position: relative;
  padding-bottom: 14px;
}
.block_intro .title_intro:after {
  content: '';
  position: absolute;
  left: 0;
  bottom: 0;
  width: 88px;
  height: 1px;
  background: rgba(20,20,20,.2);
}
.info_intro {
  width: 46%;
  margin-top: 32px !important;
  padding: 26px 28px !important;
  border: 1px solid var(--line) !important;
  border-radius: 14px;
  background: rgba(255,255,255,.92);
  box-shadow: var(--shadow);
}
.info_intro .title_head {
  margin-bottom: 6px !important;
  padding: 0 !important;
  border: none !important;
  font-size: 18px !important;
  text-align: left !important;
}
.list_press { list-style: none; margin-top: 12px; }
.list_press li { border-bottom: 1px solid var(--line); }
.list_press li a { display: flex; align-items: flex-start; gap: 16px; padding: 14px 0; text-decoration: none; }
.list_press li a time { min-width: 100px; color: var(--accent); font-weight: 600; }
.list_press li a p { margin: 0; color: var(--text); }

.title_head {
  margin-bottom: 26px !important;
  padding: 0 0 0 16px !important;
  font-size: clamp(26px, 3vw, 38px) !important;
  border-left: 4px solid var(--accent) !important;
}
.title_sub { color: var(--text); border-bottom-color: var(--line-strong); }

.area_business { margin-top: 96px !important; padding: 0 0 80px !important; background: transparent !important; }
.area_business .inner { position: relative; padding-top: 32px; }
.area_business h2 { top: 126px !important; font-size: 54px !important; color: rgba(0,0,0,.05) !important; }
.area_business .obj_vr_world { width: 640px; padding: 28px 0 48px !important; }
.area_business .business_list li,
.business_section,
.area_sub .content,
.area_related .content,
.area_sub > section .block_column,
.area_sub > section .block_movie,
.list_feature li {
  background: var(--surface) !important;
  border: 1px solid var(--line) !important;
  border-radius: 14px !important;
  box-shadow: var(--shadow) !important;
}
.area_sub > section,
.area_related,
.area_recruit { background: transparent !important; }
.area_sub .content,
.area_related .content { padding: 36px 32px !important; }
.business_section img,
.area_business .business_card img,
img.tw-rounded-lg { border-radius: 12px !important; }
.business_section h3,
.area_business .business_card h3 { font-size: 26px !important; font-weight: 600; letter-spacing: .04em; }
.list_feature li span { border-radius: 14px; color: var(--accent); }

.btn_outline,
a.tw-inline-block,
footer .btn_mail {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  width: auto !important;
  min-height: 48px;
  padding: 0 22px !important;
  border-radius: 999px !important;
  border: 1px solid var(--line-strong) !important;
  background: rgba(255,255,255,.96) !important;
  color: var(--text) !important;
  box-shadow: none !important;
  text-decoration: none !important;
}
.btn_outline span:after,
footer .btn_mail span:after { display: none !important; }
.btn_outline:hover,
a.tw-inline-block:hover,
footer .btn_mail:hover { border-color: var(--accent) !important; color: var(--accent) !important; transform: none !important; }

.area_recruit .inner { max-width: 760px !important; padding: 24px 24px 10px !important; }
.area_recruit .title_head { border-left: none !important; padding-left: 0 !important; }

.area_related .list_related li div:before,
.area_related .list_related li div:after,
.area_related .list_related li div span:before,
.area_related .list_related li div span:after { border-color: var(--line-strong) !important; }

table { background: var(--surface); border-radius: 14px; overflow: hidden; }
th, td { border-color: var(--line) !important; }
th { background: var(--surface-2) !important; }

footer { background: #171717 !important; margin-top: 72px; }
footer section { padding: 48px 0 !important; }
footer .title_block-footer,
footer .address,
footer .subtitle_block-footer,
footer .nav_link-footer a,
footer .copyright { color: #fff !important; }
footer .subtitle_block-footer { border-left-color: var(--accent) !important; }
footer .btn_mail { background: transparent !important; color: #fff !important; border-color: rgba(255,255,255,.18) !important; }
footer .btn_mail:hover { border-color: rgba(255,255,255,.65) !important; color: #fff !important; }
footer .copyright { background: rgba(255,255,255,.05) !important; }

/* =========================================
   PC: ≥769px
   ========================================= */
@media screen and (min-width: 769px) {
  /* ナビ */
  .block_header .nav_global { display: flex !important; }

  /* --- サブページヒーロー: 中央配置 --- */
  .block_main:not(.is_top) { min-height: 380px !important; }
  .block_main:not(.is_top) .img_main,
  .block_main:not(.is_top) .bg_red,
  .block_main:not(.is_top) .info_main {
    min-height: 380px !important;
    height: 380px !important;
  }
  .block_main:not(.is_top) .info_main .txt_main,
  .block_main:not(.is_top) .info_main .txt_main.sub {
    top: 50% !important;
    left: 50% !important;
    right: auto !important;
    transform: translate(-50%, -50%) !important;
    width: min(80%, 860px) !important;
    text-align: center !important;
  }
  .block_main:not(.is_top) .info_main .txt_main p {
    text-align: center !important;
  }

  /* --- 単独 block_intro (flex外): 全体センタリング --- */
  section > .block_intro {
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding-top: 48px !important;
    text-align: center !important;
  }
  section > .block_intro > .title_intro {
    display: block !important;
    text-align: center !important;
    border-bottom: 1px solid rgba(20,20,20,.12) !important;
    padding-bottom: 14px !important;
    margin-bottom: 28px !important;
  }
  section > .block_intro > .title_intro:after {
    display: none !important;
  }
  /* title_head内も中央寄せ */
  section > .block_intro > .title_head {
    display: block !important;
    width: fit-content !important;
    margin-left: auto !important;
    margin-right: auto !important;
    text-align: left !important;
  }
  /* 本文: max-width + 中央配置、テキストは左寄せ */
  section > .block_intro > p,
  section > .block_intro > ul,
  section > .block_intro > ol {
    max-width: 760px !important;
    margin-left: auto !important;
    margin-right: auto !important;
    text-align: left !important;
  }

  /* --- flex内 block_intro (TOPページ): 2カラム維持 --- */
  .flex > .block_intro {
    width: 54% !important;
    text-align: left !important;
  }
  .flex > .block_intro > .title_intro {
    display: inline-block !important;
    text-align: left !important;
    border-bottom: none !important;
  }
  .flex > .block_intro > .title_intro:after {
    display: block !important;
  }
  .flex > .block_intro > p,
  .flex > .block_intro > ul {
    max-width: none !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }

  /* --- title_head全般: 中央寄せ (赤バー付き) --- */
  .content .title_head,
  .content section > .title_head,
  .area_business .inner .title_head,
  .area_sub .content .title_head,
  .area_recruit .title_head {
    display: block !important;
    width: fit-content !important;
    margin-left: auto !important;
    margin-right: auto !important;
  }
}

/* サブページナビ非表示 */
.nav_global-sub { display: none !important; }

/* サブページヒーロー直後の余白 */
.block_main:not(.is_top) + .wrapper { padding-top: 0 !important; }

/* recruit / footer 微調整 */
.area_recruit { padding-top: 0 !important; padding-bottom: 0 !important; }
.area_recruit .inner { padding: 8px 24px 0 !important; }
footer { margin-top: 24px !important; }
footer section { padding: 32px 0 !important; }

/* =========================================
   COMPANY ページ固有: 余白を詰めてファーストビューに収める
   ========================================= */
body.company .block_main:not(.is_top) { min-height: 560px !important; }
body.company .block_main:not(.is_top) .img_main,
body.company .block_main:not(.is_top) .bg_red,
body.company .block_main:not(.is_top) .info_main { min-height: 560px !important; height: 560px !important; }
body.company .block_main:not(.is_top) .info_main .txt_main p.size_medium { font-size: 15px !important; line-height: 1.8 !important; }
body.company .wrapper { padding-top: 0 !important; }
body.company .area_business { margin-top: 0 !important; padding-top: 12px !important; padding-bottom: 12px !important; }
body.company .content { padding-top: 0 !important; }
body.company .content > section > .block_intro { padding-top: 12px !important; margin-bottom: 0 !important; }
body.company .content > section > .block_intro > .title_head { margin-bottom: 12px !important; }
body.company .content > section > .clear { padding-top: 0 !important; }
body.company .content > section > .clear > .title_head { margin-bottom: 12px !important; margin-top: 0 !important; }

/* テック・マエストロ プロフィールカード */
.wrapper .content .block_intro .maestro-cards p,
.block_intro .maestro-cards p { text-align: center !important; max-width: none !important; }
.wrapper .content .block_intro .maestro-cards .maestro-bio,
.block_intro .maestro-cards .maestro-bio { text-align: left !important; }

/* =========================================
   TABLET: ≤960px
   ========================================= */
@media screen and (max-width: 960px) {
  .block_header,
  .wrapper,
  .content,
  .area_business .inner,
  .block_main .info_main,
  footer .content { width: min(100%, calc(100% - 28px)) !important; }
  .block_main,
  .block_main.is_top,
  .block_main .info_main { min-height: auto !important; }
  .block_main .info_main { padding: 92px 0 40px; }
  .block_main .info_main .txt_main,
  .block_main .info_main .txt_main.sub {
    position: relative !important;
    top: auto !important;
    left: auto !important;
    right: auto !important;
    transform: none !important;
    width: 100% !important;
  }
  .block_main .info_main .obj_main {
    position: relative !important;
    top: auto !important;
    left: auto !important;
    right: auto !important;
    width: min(100%, 460px) !important;
    margin: 32px auto 0;
    display: block;
  }
  .flex { display: block !important; }
  .block_intro,
  .info_intro { width: 100% !important; }
  .area_business h2 { position: relative !important; top: auto !important; left: auto !important; margin-bottom: 20px; font-size: 42px !important; }
  .area_business .obj_vr_world { width: 100%; padding: 18px 0 24px !important; }
}

/* =========================================
   MOBILE: ≤768px
   ========================================= */
@media screen and (max-width: 768px) {
  header { background: rgba(255,255,255,.98) !important; }
  .btn_hamburger span { background: var(--text) !important; }
  .block_header { width: calc(100% - 24px) !important; padding: 14px 0 !important; }
  .block_header .nav_global { background: rgba(255,255,255,.99) !important; }
  .block_header .nav_global > li { border-bottom: 1px solid var(--line) !important; }
  .block_header .nav_global > li > a { padding: 16px 6px !important; border-bottom: none !important; }

  /* hero */
  .block_main { max-width: 100vw !important; }
  .block_main .info_main {
    width: calc(100% - 24px) !important;
    max-width: calc(100% - 24px) !important;
    padding-top: 60px !important;
    box-sizing: border-box !important;
    overflow: visible !important;
  }
  .block_main .info_main .txt_main,
  .block_main .info_main .txt_main.sub {
    position: relative !important;
    top: auto !important; left: auto !important; right: auto !important;
    transform: none !important;
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    text-align: left !important;
    word-break: break-word !important;
    overflow-wrap: break-word !important;
  }
  .block_main .info_main .txt_main .title_main { font-size: clamp(26px, 7vw, 36px) !important; letter-spacing: .04em !important; }
  .block_main .info_main .txt_main p.size_medium { font-size: 14px !important; line-height: 1.8 !important; margin: 0 !important; }
  .block_main .info_main .txt_main p.title_copy {
    display: block !important;
    white-space: normal !important;
    font-size: 13px !important;
    text-align: right !important;
  }
  .block_main .info_main .txt_main p.title_copy::before { display: none !important; }
  .block_main .info_main .txt_main.sub p { margin: 0 !important; }
  .block_main:not(.is_top) { min-height: auto !important; }
  .block_main:not(.is_top) .img_main,
  .block_main:not(.is_top) .bg_red,
  .block_main:not(.is_top) .info_main { min-height: auto !important; height: auto !important; padding-bottom: 32px !important; }
  .block_main:not(.is_top) .info_main .txt_main,
  .block_main:not(.is_top) .info_main .txt_main.sub { padding: 20px 0 0 !important; }

  /* コンテンツ */
  section > .block_intro {
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding-top: 20px !important;
  }
  section > .block_intro > .title_intro {
    text-align: left !important;
    border-bottom: none !important;
  }
  section > .block_intro > .title_intro:after { display: block !important; }
  section > .block_intro > p,
  section > .block_intro > ul,
  section > .block_intro > ol {
    max-width: none !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
  .content .title_head,
  .area_business .inner .title_head {
    width: auto !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
  .block_intro .title_intro { font-size: clamp(20px, 5.5vw, 28px) !important; }
  .title_head { font-size: clamp(18px, 5vw, 26px) !important; }
  .list_press li a { flex-direction: column; gap: 8px; }
  .area_sub .content,
  .area_related .content { padding: 24px 18px !important; }
  .btn_outline,
  a.tw-inline-block,
  footer .btn_mail { width: 100% !important; }
}
