:root {
  --ink: #111816;
  --muted: #5f6966;
  --line: #d8dedb;
  --paper: #ffffff;
  --soft: #f3f6f5;
  --teal: #1996a5;
  --teal-mid: #1996a5;
  --teal-light: #1996a5;
  --dark: #081310;
  --header-h: 92px;
  --container: 1600px;
  --gutter: clamp(24px, 3.5vw, 64px);
  --page-edge: max(var(--gutter), calc((100% - var(--container)) / 2 + var(--gutter)));
  --section-y: clamp(72px, 8vw, 116px);
  --display: "Century Gothic", "Hiragino Kaku Gothic ProN", "Yu Gothic", sans-serif;
  --body: "Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--body);
  font-size: 16px;
  line-height: 1.75;
  -webkit-font-smoothing: antialiased;
}
body.nav-open { overflow: hidden; }
img, video { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }
h1, h2, h3, p { margin-top: 0; }
h1, h2, h3 { font-family: var(--display); letter-spacing: -.045em; }
/* 見出しの折り返し。日本語では text-wrap:pretty が効かないため balance を使い、
   あわせて禁則を厳格化して行末・行頭の不自然な分断を抑える。 */
h1, h2, h3, h4 { text-wrap: balance; line-break: strict; word-break: normal; }

.wrap { width: min(100%, var(--container)); margin-inline: auto; padding-inline: var(--gutter); }
.eyebrow, .section-code, .kicker {
  display: block;
  margin-bottom: 18px;
  color: var(--teal);
  font: 700 11px/1.4 var(--display);
  letter-spacing: .16em;
  text-transform: uppercase;
}
.lead { max-width: 1040px; color: var(--muted); font-size: clamp(16px, 1.5vw, 19px); line-height: 2; }

/* Header */
header {
  position: fixed;
  inset: 0 0 auto;
  z-index: 100;
  height: var(--header-h);
  background: #ffffff;
  border-bottom: 1px solid rgba(17,24,22,.12);
  transition: box-shadow .2s ease, background-color .2s ease;
}
header.is-scrolled { box-shadow: 0 8px 24px rgba(8,19,16,.08); }
header .wrap { display: flex; align-items: center; justify-content: space-between; height: 100%; }
.site-logo {
  position: relative;
  display: block;
  flex: 0 0 auto;
  width: clamp(141px, 11.2vw, 162px);
  height: clamp(49px, 3.9vw, 57px);
  overflow: hidden;
}
.site-logo img {
  position: absolute;
  top: -34.7%;
  left: -10.4%;
  display: block;
  width: 117%;
  max-width: none;
  height: auto;
}
.site-logo .logo-light { display: none; }
header nav { display: flex; align-items: center; gap: clamp(18px, 2.2vw, 34px); height: 100%; }
header nav > a {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  gap: 4px;
  min-height: 52px;
  color: var(--ink);
  line-height: 1.1;
}
.nav-ja { font-size: 12px; font-weight: 700; white-space: nowrap; }
.nav-en { color: #67716e; font: 500 10px/1.2 var(--display); letter-spacing: .08em; white-space: nowrap; }
header nav > a:not(.nav-contact)::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 2px;
  width: 100%;
  height: 2px;
  background: var(--teal-mid);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .2s ease;
}
header nav > a:hover::after,
header nav > a[aria-current="page"]::after { transform: scaleX(1); }
.nav-contact {
  min-width: 128px;
  padding: 13px 20px;
  border: 1px solid var(--ink);
  align-items: center;
  text-align: center;
  transition: background-color .2s ease, color .2s ease;
}
.nav-contact:hover { background: var(--ink); color: #fff; }
.nav-contact:hover .nav-en { color: rgba(255,255,255,.72); }
.nav-toggle { display: none; width: 44px; height: 44px; padding: 0; border: 1px solid var(--ink); background: transparent; }
.nav-toggle span { display: block; width: 19px; height: 1px; margin: 4px auto; background: var(--ink); }

/* Home */
.career-hero { position: relative; min-height: 720px; height: 100svh; overflow: hidden; color: #fff; }
.career-hero .fv-bg-videos { position: absolute; inset: 0; width: 100%; height: 100%; }
.career-hero .fv-bg-videos video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% calc(38% + var(--parallax, 0) * 22%); will-change: object-position; opacity: 0; transition: opacity 1.1s ease; }
.career-hero .fv-bg-videos video.is-active { opacity: 1; }
.career-hero-shade { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(0,0,0,.72), rgba(0,0,0,.18) 68%, rgba(0,0,0,.08)), linear-gradient(0deg, rgba(0,0,0,.5), transparent 54%); }
/* モバイルではコピーが全幅になり、横方向グラデーションの薄い側（右）に文字が乗る。
   実測で白文字の最悪コントラストが1.3:1まで落ちていたため、縦方向主体の濃いシェードへ差し替える。 */
@media (max-width: 700px) {
  .career-hero-shade {
    background: linear-gradient(0deg, rgba(0,0,0,.80) 0%, rgba(0,0,0,.56) 44%, rgba(0,0,0,.26) 78%, rgba(0,0,0,.14) 100%);
  }
  .subpage-redesign .pagehero-visual .pagehero-shade {
    background: linear-gradient(0deg, rgba(4,13,12,.84) 0%, rgba(4,13,12,.60) 46%, rgba(4,13,12,.28) 80%, rgba(4,13,12,.14) 100%);
  }
}
.career-hero-copy { position: absolute; left: var(--page-edge); bottom: clamp(140px, 17vh, 190px); z-index: 2; max-width: min(1080px, calc(100vw - var(--page-edge) * 2)); text-shadow: 0 2px 24px rgba(0,0,0,.34); }
.career-hero .section-code { color: rgba(255,255,255,.78); }
.career-hero h1 { margin-bottom: 24px; font-size: clamp(44px, 5.9vw, 86px); line-height: 1.16; color: #fff; }
.career-hero-copy > p:last-child { font-size: clamp(15px, 1.3vw, 18px); line-height: 1.9; }
.hero-actions { position: absolute; right: 0; bottom: 0; z-index: 3; display: grid; grid-template-columns: repeat(2, minmax(220px, 280px)); }
.hero-actions a { display: flex; justify-content: space-between; padding: 24px; border-top: 1px solid rgba(255,255,255,.55); border-left: 1px solid rgba(255,255,255,.55); background: rgba(0,0,0,.12); }

.editorial-intro, .illustration-flow, .field-section { display: grid; grid-template-columns: 160px 1fr; background: #fff; }
.section-label { padding: var(--section-y) 28px; border-right: 1px solid var(--line); color: var(--muted); font: 700 10px/1.35 var(--display); letter-spacing: .13em; }
.section-label span { display: block; margin-bottom: 8px; }
.editorial-body, .field-content { padding: var(--section-y) var(--gutter); }
.editorial-body h2, .field-title h2 { max-width: 1120px; margin-bottom: 48px; font-size: clamp(40px, 5vw, 68px); line-height: 1.22; }
.large-copy { max-width: 860px; margin-left: auto; color: var(--muted); font-size: 18px; line-height: 2; }

/* 左ラベル固定(sticky)+右カラムスクロール(pattern-c2 #approachと同じ機構)。
   section-label + 160px/1frグリッドを使う全セクション(01〜06)で統一して適用する。 */
.editorial-intro, .product-story, .field-section, .evidence-film, .home-partnership, .home-founder-story { align-items: start; }
.editorial-intro .section-label,
.product-story .section-label,
.field-section .section-label,
.evidence-film .section-label,
.home-partnership .section-label,
.home-founder-story .section-label {
  position: sticky;
  top: calc(var(--header-h) + 32px);
  align-self: start;
}
.approach-steps { display: flex; flex-direction: column; gap: clamp(48px, 6vw, 88px); margin-top: 56px; }
.approach-step-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr); gap: clamp(32px, 5vw, 72px); align-items: center; }
.approach-step-row.reverse { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); }
.approach-step-row.reverse .illustration-media { order: 2; }
.approach-step-row .illustration-media { height: clamp(260px, 26vw, 360px); border: 1px solid var(--line); }

/* セクション幅いっぱいの写真+テキストオーバーレイ(左側の余白に文字を重ねる版)。画像はスクロールに連動したパララックス(object-positionを縦にパン)。 */
.approach-step-photo { position: relative; width: 100%; overflow: hidden; }
.approach-step-photo img { display: block; width: 100%; height: clamp(420px, 46vw, 680px); object-fit: cover; object-position: 62% calc(40% + var(--parallax, 0) * 20%); will-change: object-position; }
.approach-step-photo .illustration-text {
  position: absolute;
  left: 0;
  top: 0;
  height: 100%;
  width: min(880px, 66%);
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 0;
  background: linear-gradient(
    90deg,
    rgba(255, 255, 255, .99) 0%,
    rgba(255, 255, 255, .98) 56%,
    rgba(255, 255, 255, .86) 74%,
    rgba(255, 255, 255, 0) 100%
  );
}
/* 文字は必ずグラデーションの不透明域（〜56%）の内側に収める。
   幅は文字送りから逆算: 本文15pxで1行約32字、見出し32pxで約15字。 */
.approach-step-photo .illustration-text h3,
.approach-step-photo .illustration-text p {
  max-width: min(480px, 54%);
  line-break: strict;
  word-break: normal;
}
.approach-step-photo .illustration-text h3 { font-size: clamp(24px, 2.2vw, 32px); text-wrap: balance; }
.approach-step-photo .illustration-text p { font-size: 15px; line-height: 1.85; text-wrap: pretty; }
@media (max-width: 700px) {
  .approach-step-photo .illustration-text { position: static; width: 100%; padding: 24px 0 0; background: none; }
  .approach-step-photo .illustration-text h3,
  .approach-step-photo .illustration-text p { max-width: none; }
  .approach-step-photo img { height: 320px; object-position: 62% center; }
}
@media (max-width: 900px) {
  .editorial-intro .section-label { position: static; }
  .approach-step-row, .approach-step-row.reverse { grid-template-columns: 1fr; }
  .approach-step-row.reverse .illustration-media { order: 0; }
}

.illustration-flow { background: #eef3f1; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.illustration-main { min-width: 0; padding: var(--section-y) var(--gutter); }
.illustration-copy { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(280px, .65fr); gap: clamp(38px, 7vw, 120px); align-items: end; margin-bottom: 58px; }
.illustration-copy .kicker { grid-column: 1 / -1; margin-bottom: -18px; }
.illustration-copy h2 { margin-bottom: 0; font-size: clamp(38px, 4.8vw, 68px); line-height: 1.22; }
.illustration-copy > p:last-child { margin-bottom: 8px; color: var(--muted); }
.illustration-sequence { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border: 1px solid var(--line); background: #fff; }
.illustration-step { position: relative; min-width: 0; border-right: 1px solid var(--line); }
.illustration-step:last-child { border-right: 0; }
.illustration-step:not(:last-child)::after { content: "→"; position: absolute; z-index: 2; top: 44%; right: -17px; display: grid; place-items: center; width: 34px; height: 34px; border: 1px solid var(--line); border-radius: 50%; background: #fff; color: var(--teal); font-size: 16px; }
.illustration-media { height: clamp(300px, 30vw, 470px); overflow: hidden; background: linear-gradient(180deg, #f7f9f8, #edf3f0); }
.illustration-media img { width: 100%; height: 100%; padding: 7% 5% 0; object-fit: contain; object-position: center bottom; }
.illustration-step:nth-child(2) .illustration-media img { padding-inline: 2%; }
.illustration-text { padding: 28px 28px 36px; }
.illustration-text > span, .pain-copy > span { color: var(--teal); font: 700 10px/1.2 var(--display); letter-spacing: .14em; }
.illustration-text h3 { margin: 16px 0 10px; font-size: clamp(20px, 1.8vw, 26px); line-height: 1.42; }
.illustration-text p { margin-bottom: 0; color: var(--muted); font-size: 14px; }

.home-scroll-story { position: relative; height: 160vh; background: var(--dark); }
.scroll-story-sticky { position: sticky; top: 0; height: 100vh; overflow: hidden; }
.scroll-story video { position: absolute; inset: -4%; width: 108%; height: 108%; max-width: none; object-fit: cover; transform: translate3d(0, calc((var(--story-progress, .5) - .5) * -6%), 0) scale(1.03); }
.scroll-story-shade { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,.08), rgba(0,0,0,.72)); }
.scroll-story-copy { position: absolute; left: var(--page-edge); bottom: 10vh; color: #fff; }
.scroll-story-copy h2 { margin: 0; color: #fff; font-size: clamp(42px, 6vw, 84px); line-height: 1.18; }

.evidence-film { background: var(--paper); color: var(--ink); border-bottom: 1px solid var(--line); }
.product-story { background: var(--paper); color: var(--ink); display: grid; grid-template-columns: 160px 1fr; border-bottom: 1px solid var(--line); }
.product-main { min-width: 0; }
.product-heading { padding: var(--section-y) var(--gutter) 72px; }
.product-heading h2 { margin: 0 0 24px; line-height: 1; }
.product-heading h2 img { display: block; height: clamp(48px, 7vw, 96px); width: auto; }
.product-heading p:last-child { max-width: 900px; color: var(--muted); }
.story-grid { display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid var(--line); }
.story-panel { border-right: 1px solid var(--line); }
.story-panel:last-child { border-right: 0; }
.story-media { aspect-ratio: 4/3; overflow: hidden; background: #eef1ef; }
.story-media img { width: 100%; height: 100%; object-fit: cover; }
.story-media:not(.screen) img { object-position: 50% calc(35% + var(--parallax, 0) * 30%); will-change: object-position; }
.story-media.install img { object-position: center; }
.story-media.screen img { object-fit: contain; padding: 1%; }
.story-text { padding: 28px 28px 44px; }
.story-text > span { color: var(--teal-light); font: 700 10px/1.2 var(--display); letter-spacing: .14em; }
.story-text h3 { margin: 16px 0 8px; color: var(--ink); font-size: 22px; }
.story-text p { margin-bottom: 0; color: var(--muted); }
/* PRODUCT 3カード: 見出しが1行でも2行でも、ラベル・見出し・本文の行位置を3枚で揃える。
   親グリッドが行を持ち、各カードと.story-textがsubgridでその行を共有する。 */
.product-benefits { grid-template-rows: auto 1fr auto auto auto; min-height: 430px; }
.product-benefits .story-panel {
  display: grid;
  grid-row: 1 / -1;
  grid-template-rows: subgrid;
  min-height: 430px;
  background: linear-gradient(180deg, #fff, #f3f6f4);
}
.product-benefits .benefit-number { grid-row: 1; padding: 34px 28px 0; color: rgba(25,150,165,.17); font: 500 clamp(80px, 8vw, 132px)/1 var(--display); letter-spacing: -.06em; }
.product-benefits .story-text {
  grid-row: 3 / -1;
  display: grid;
  grid-template-rows: subgrid;
  padding-top: 20px;
}
.product-benefits .story-text > span { color: var(--teal); }
.product-benefits .story-text h3 {
  font-size: clamp(22px, 2vw, 30px);
  line-height: 1.4;
  text-wrap: balance;
  line-break: strict;
  word-break: normal;
}
/* 見出しを文節単位で折り返す。文言は変えず、句の途中で切れるのを防ぐ。
   max-width:100% は、文節単体でも収まらない極端な幅で溢れさせないための保険。 */
.nobr-phrase { display: inline-block; max-width: 100%; font: inherit; color: inherit; letter-spacing: inherit; }
/* subgrid非対応ブラウザ向け: 見出し2行分を確保して行位置を揃える */
@supports not (grid-template-rows: subgrid) {
  .product-benefits { grid-template-rows: none; }
  .product-benefits .story-panel { display: flex; grid-row: auto; flex-direction: column; justify-content: space-between; }
  .product-benefits .story-text { display: block; grid-row: auto; }
  .product-benefits .story-text h3 { min-height: 2.8em; }
}

body.hide-provisional-partnership [data-provisional-partnership] { display: none !important; }

.field-title { margin-bottom: 72px; }
.pain-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-bottom: 78px; border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.pain-card { min-width: 0; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); background: #fff; }
.pain-media { height: clamp(280px, 25vw, 390px); overflow: hidden; background: #eef3f1; }
.pain-media img { width: 100%; height: 100%; padding: 4% 4% 0; object-fit: contain; object-position: center bottom; }
.pain-copy { padding: 26px 26px 34px; }
.pain-copy h3 { margin: 15px 0 10px; font-size: clamp(21px, 2vw, 28px); line-height: 1.4; }
.pain-copy p { margin-bottom: 0; color: var(--muted); font-size: 14px; }
.field-row { display: grid; grid-template-columns: .8fr 1.2fr; gap: clamp(36px, 6vw, 90px); align-items: center; padding: 42px 0; border-top: 1px solid var(--line); }
.field-row.reverse { grid-template-columns: 1.2fr .8fr; }
.field-row.reverse .field-copy { order: 2; }
.field-row img { width: 100%; height: clamp(340px, 34vw, 500px); object-fit: cover; background: var(--soft); }
.field-copy span { color: var(--teal); font: 700 10px var(--display); letter-spacing: .14em; }
.field-copy h3 { margin: 20px 0 14px; font-size: clamp(26px, 2.6vw, 36px); line-height: 1.4; }
.field-copy p { color: var(--muted); }

.evidence-film { display: grid; grid-template-columns: 160px 1fr; }
.evidence-main { padding: var(--section-y) var(--gutter); }
.film-copy h2 { margin-bottom: 54px; color: #fff; font-size: clamp(44px, 5.8vw, 78px); line-height: 1.18; }
.film-grid { display: grid; grid-template-columns: 1.2fr .8fr; gap: 2px; }
.film-grid video { width: 100%; height: min(56vh, 560px); object-fit: cover; }
.film-grid video:last-child { display: none; }
.metric-row { display: grid; grid-template-columns: repeat(3, 1fr); margin-top: 2px; border: 1px solid rgba(255,255,255,.16); }
.metric-row > div { padding: 34px; border-right: 1px solid rgba(255,255,255,.16); }
.metric-row > div:last-child { border-right: 0; }
.metric-row strong { display: block; font-size: clamp(22px, 2.4vw, 34px); }
.metric-row span { color: rgba(255,255,255,.58); font-size: 12px; }
.outline-link { display: flex; justify-content: space-between; width: min(100%, 520px); margin: 44px 0 0 auto; padding: 20px 22px; border: 1px solid var(--ink); }
.press-highlight { display: grid; grid-template-columns: 190px minmax(0, 1fr) 220px; gap: clamp(28px, 4vw, 64px); align-items: start; margin-top: 44px; padding: clamp(28px, 3vw, 44px); border: 1px solid var(--line); }
.press-meta { color: var(--muted); font: 700 10px/1.5 var(--display); letter-spacing: .12em; }
.press-meta span, .press-meta time { display: block; }
.press-meta time { margin-top: 10px; letter-spacing: .04em; }
.press-source { margin-bottom: 16px; color: var(--teal-light); font: 700 11px/1.4 var(--display); letter-spacing: .12em; }
.press-copy h3 { margin-bottom: 14px; color: var(--ink); font-size: clamp(24px, 2.5vw, 36px); line-height: 1.45; }
.press-copy > p:last-child { margin-bottom: 0; color: var(--muted); }
.press-highlight > a { display: flex; justify-content: space-between; gap: 18px; align-self: end; padding: 16px 0 10px; border-bottom: 1px solid var(--ink); font: 700 12px/1.4 var(--display); }
.evidence-case { margin-top: clamp(64px, 8vw, 104px); }
.evidence-case h2 { max-width: 1120px; margin-bottom: 42px; font-size: clamp(34px, 4.3vw, 58px); line-height: 1.25; }
.evidence-case .stat-grid { background: var(--paper); color: var(--ink); border: 1px solid var(--line); }
.evidence-case .stat { border-right: 1px solid var(--line); }
.evidence-case .stat .label { color: var(--muted); }
.evidence-case .case-note.light { max-width: 100%; margin-left: 0; text-align: left; }

.home-partnership { display: grid; grid-template-columns: 160px 1fr; background: #fff; border-bottom: 1px solid var(--line); scroll-margin-top: var(--header-h); }
.partnership-main { min-width: 0; padding: var(--section-y) var(--gutter); }
.partnership-lockup { display: flex; gap: clamp(16px, 2.4vw, 34px); align-items: center; margin-bottom: clamp(46px, 6vw, 82px); color: var(--ink); font-family: var(--display); }
.toto-logo { display: block; height: clamp(32px, 4.6vw, 70px); width: auto; max-width: none; }
.toilabs-logo { display: block; height: clamp(40px, 6vw, 88px); width: auto; max-width: none; }
.partnership-cross { color: var(--teal); font-size: clamp(22px, 3vw, 44px); font-weight: 400; }
.partnership-detail { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(360px, .9fr); gap: clamp(42px, 7vw, 110px); align-items: end; }
.partnership-heading { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(300px, .7fr); gap: clamp(42px, 7vw, 110px); align-items: end; }
.partnership-detail h2 { max-width: 1100px; margin-bottom: 0; font-size: clamp(38px, 4.8vw, 68px); line-height: 1.22; }
.partnership-heading h2 { max-width: 900px; margin-bottom: 0; font-size: clamp(30px, 3.4vw, 48px); line-height: 1.3; }
.partnership-heading > div:last-child > p { margin-bottom: 28px; color: var(--muted); font-size: 16px; line-height: 2; }
.partnership-heading .text-link { margin-top: 0; }
.partnership-points { display: grid; grid-template-columns: repeat(3, 1fr); margin-top: clamp(44px, 6vw, 76px); border-top: 1px solid var(--ink); border-bottom: 1px solid var(--line); }
.partnership-points > div { min-width: 0; padding: 28px 26px; border-right: 1px solid var(--line); }
.partnership-points > div:first-child { padding-left: 0; }
.partnership-points > div:last-child { padding-right: 0; border-right: 0; }
.partnership-points span { display: block; margin-bottom: 12px; color: var(--teal); font: 700 10px/1.3 var(--display); letter-spacing: .13em; }
.partnership-points strong { display: block; font-size: clamp(17px, 1.7vw, 24px); line-height: 1.45; }

.home-founder-story { display: grid; grid-template-columns: 160px 1fr; background: var(--soft); border-bottom: 1px solid var(--line); }
.founder-story-main { min-width: 0; padding: var(--section-y) var(--gutter); }
.founder-story-main > h2 { max-width: 1240px; margin-bottom: 52px; font-size: clamp(42px, 5.2vw, 72px); line-height: 1.2; }
.founder-story-grid { display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(360px, .92fr); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.founder-portrait {
  min-width: 0;
  margin: 0;
  padding: clamp(28px, 3vw, 48px) clamp(28px, 3vw, 48px) clamp(28px, 3vw, 48px) 0;
  border-right: 1px solid var(--line);
}
.founder-portrait img { display: block; width: 100%; aspect-ratio: 3 / 2; object-fit: cover; object-position: 50% calc(35% + var(--parallax, 0) * 22%); will-change: object-position; }
.founder-message {
  display: flex;
  flex-direction: column;
  align-self: center;
  margin: clamp(28px, 2.4vw, 40px) 0 clamp(28px, 2.4vw, 40px) clamp(28px, 2.4vw, 40px);
  padding: clamp(32px, 3vw, 48px);
  border-left: 3px solid var(--teal-mid);
  background: #fff;
}
.founder-message blockquote { margin: 0; font-size: 16px; line-height: 1.9; }
.founder-message blockquote p { margin: 0; }
.founder-message blockquote p + p { margin-top: 16px; }
.founder-message > .founder-credit { margin: 24px 0 0; color: var(--muted); font-size: 13px; }

/* Subpages */
.subpage-redesign main { padding-top: var(--header-h); }
.pagehero { background: #fff; border-bottom: 1px solid var(--line); }
.pagehero .wrap { padding-top: clamp(74px, 8vw, 110px); padding-bottom: clamp(58px, 7vw, 94px); }
.pagehero h1 { max-width: 1320px; margin-bottom: 0; font-size: clamp(44px, 6.2vw, 86px); line-height: 1.18; }
.sub-visual { position: relative; height: clamp(360px, 52vw, 690px); overflow: hidden; background: var(--dark); color: #fff; }
.sub-visual img, .sub-visual video { width: 100%; height: 100%; object-fit: cover; object-position: 50% calc(35% + var(--parallax, 0) * 22%); will-change: object-position; }
.sub-visual::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,.04), rgba(0,0,0,.58)); }
.sub-visual-copy { position: absolute; z-index: 2; left: var(--page-edge); bottom: clamp(32px, 6vw, 78px); max-width: 1200px; }
.sub-visual-copy span { font: 700 11px var(--display); letter-spacing: .15em; }
.sub-visual-copy h2 { margin: 18px 0 0; color: #fff; font-size: clamp(36px, 5vw, 68px); line-height: 1.2; }
.content-section { padding-block: var(--section-y); background: #fff; border-bottom: 1px solid var(--line); scroll-margin-top: var(--header-h); }
.content-section.alt { background: var(--soft); }
.content-section.dark { background: var(--dark); color: #fff; }
.case-results-section { position: relative; overflow: hidden; }
.case-results-section .case-results-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% calc(40% + var(--parallax, 0) * 20%); will-change: object-position; opacity: .42; }
.case-results-section::before { content: ""; position: absolute; inset: 0; background: rgba(6,9,8,.68); }
.case-results-section .wrap { position: relative; z-index: 2; }
.case-results-section .eyebrow { color: #fff; }
.case-video-link { margin: 28px 0 0; border-bottom-color: #fff !important; color: #fff; }
.case-video-link:hover { border-bottom-color: var(--teal) !important; }
.case-video-link .video-note { font-size: 11px; font-weight: 400; color: rgba(255,255,255,.65); letter-spacing: .02em; transition: color .2s ease; }
.case-video-link:hover .video-note { color: var(--teal); }
.case-results-section .case-stat-grid { background: transparent; border-top: 1px solid rgba(255,255,255,.35); border-bottom: 1px solid rgba(255,255,255,.35); }
.case-results-section .case-stat-grid .stat { border-right-color: rgba(255,255,255,.35); }
.case-results-section .case-stat-grid .stat .num { color: #fff; }
.case-results-section .case-stat-grid .stat .label { color: rgba(255,255,255,.75); }
.partner-logos { display: flex; flex-wrap: wrap; align-items: center; gap: clamp(28px, 4vw, 56px); margin: 8px 0 24px; }
.partner-logos img { display: block; height: clamp(34px, 4.2vw, 54px); width: auto; }
.content-section h2 { max-width: 1240px; margin-bottom: 42px; font-size: clamp(34px, 4.3vw, 58px); line-height: 1.25; }
.content-section.dark h2 { color: #fff; }
.sensing-photo-section { position: relative; overflow: hidden; display: flex; align-items: center; min-height: clamp(440px, 48vw, 660px); }
.sensing-photo-section .sensing-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 20% calc(50% + var(--parallax, 0) * 18%); will-change: object-position; }
.sensing-photo-section::before { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(90deg, rgba(255,255,255,.96) 0%, rgba(255,255,255,.93) 46%, rgba(255,255,255,.45) 66%, rgba(255,255,255,0) 80%); }
.sensing-photo-section .wrap { position: relative; z-index: 2; }
.sensing-photo-section h2, .sensing-photo-section .lead, .sensing-photo-section .spec { max-width: min(560px, 40vw); }
.grid2, .grid3 { display: grid; border-top: 1px solid var(--line); }
.grid2 { grid-template-columns: 1.1fr .9fr; }
.grid3 { grid-template-columns: repeat(3, 1fr); }
.grid2 > *, .grid3 > * { min-width: 0; padding: 40px 34px; border-right: 1px solid var(--line); }
.grid2 > *:first-child, .grid3 > *:first-child { padding-left: 0; }
.grid2 > *:last-child, .grid3 > *:last-child { padding-right: 0; border-right: 0; }
.card h3 { margin-bottom: 14px; font-size: 22px; line-height: 1.45; }
.card p, .spec { color: var(--muted); }
.spec { padding-left: 1.2em; }
.spec li { margin-bottom: 10px; }
.card-photo { position: relative; overflow: hidden; min-height: 360px; }
.card-photo .card-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 68% calc(35% + var(--parallax, 0) * 25%); will-change: object-position; }
.card-photo:has(.card-content)::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(10,14,13,.32), rgba(10,14,13,.78)); }
.card-photo .card-content { position: relative; z-index: 2; }
.card-photo .eyebrow { color: rgba(255,255,255,.75); }
.card-photo h3 { color: #fff; }
.card-photo .spec { color: rgba(255,255,255,.85); }
.card-photo .spec strong { color: #fff; }
.media-card { padding: 0 !important; overflow: hidden; }
.media-card img { width: 100%; height: 100%; min-height: 380px; object-fit: contain; padding: 7%; background: #eef1ef; }
.obs-grid { display: grid; grid-template-columns: repeat(2, 1fr); border: 1px solid var(--line); border-bottom: 0; }
.obs-grid div { padding: 18px 22px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.obs-grid div:nth-child(even) { border-right: 0; }
.notice { margin-top: 30px; padding: 22px 24px; border-left: 3px solid var(--teal); background: var(--soft); color: var(--muted); font-size: 13px; }
.legal-notice-section { padding: 40px 0; background: #fff; }
.legal-notice-section .notice { margin-top: 0; }
.table-scroll { overflow-x: auto; border: 1px solid var(--line); }
.info { width: 100%; min-width: 720px; border-collapse: collapse; }
.info th, .info td { padding: 21px 22px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
.info th { width: 25%; background: var(--soft); }
.info tr:last-child th, .info tr:last-child td { border-bottom: 0; }
/* 600px以下は2カラム表を縦積みにする。min-width:720pxのままだと375pxで表内が横スクロールになる。 */
@media (max-width: 600px) {
  .table-scroll { overflow-x: visible; }
  .info { min-width: 0; }
  .info, .info tbody, .info tr, .info th, .info td { display: block; width: auto; }
  .info tr { border-bottom: 1px solid var(--line); }
  .info tr:last-child { border-bottom: 0; }
  .info th {
    padding: 15px 18px 0;
    border-bottom: 0;
    background: none;
    color: var(--muted);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .04em;
  }
  .info td { padding: 5px 18px 16px; border-bottom: 0; }
}
.stat-grid { display: grid; grid-template-columns: repeat(3, 1fr); background: var(--dark); color: #fff; }
.stat { padding: 34px; border-right: 1px solid rgba(255,255,255,.18); }
.stat:last-child { border-right: 0; }
.stat .num { display: block; margin-bottom: 8px; font: 700 clamp(24px, 3vw, 42px)/1.1 var(--display); }
.stat .label { color: rgba(255,255,255,.62); font-size: 13px; }
.quote { width: 100%; max-width: none; padding: 40px; border-left: 3px solid var(--teal-mid); background: #fff; }
.quote p { font-size: 16px; line-height: 1.9; }
.quote .who { color: var(--muted); font-size: 13px; }
.quote .founder-disease-note,
.subpage-redesign .quote .founder-disease-note {
  margin: 26px 0 18px;
  color: #7a8481;
  font-size: 12px;
  line-height: 1.75;
}
.media-coverage { background: #f7faf9; }
.media-coverage-heading { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(360px, .9fr); gap: clamp(42px, 7vw, 110px); align-items: end; margin-bottom: 54px; }
.media-coverage-heading h2 { margin-bottom: 0; }
.media-publication { margin-bottom: 18px; color: var(--teal); font: 700 11px/1.4 var(--display); letter-spacing: .12em; }
.media-coverage-heading .lead { margin: 0 0 6px; }
.media-points { display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid var(--ink); border-bottom: 1px solid var(--line); }
.media-points article { min-width: 0; padding: 34px; border-right: 1px solid var(--line); }
.media-points article:first-child { padding-left: 0; }
.media-points article:last-child { padding-right: 0; border-right: 0; }
.media-points span { color: var(--teal); font: 700 10px/1.3 var(--display); letter-spacing: .12em; }
.media-points h3 { margin: 16px 0 12px; font-size: clamp(21px, 2vw, 28px); line-height: 1.45; }
.media-points p { margin-bottom: 0; color: var(--muted); font-size: 14px; }
.media-citation { max-width: 1080px; margin: 24px auto 0 0; text-align: left; color: var(--muted); font-size: 11px; line-height: 1.8; }
.case-note { margin: 24px 0 0; color: rgba(255,255,255,.58); font-size: 11px; line-height: 1.8; }
.case-note.light { max-width: 1080px; margin-left: 0; color: var(--muted); text-align: left; }
.research-section { background: #eef3f1; }
.research-heading { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(360px, .9fr); gap: clamp(42px, 7vw, 110px); align-items: end; margin-bottom: 54px; }
.research-heading h2 { margin-bottom: 0; }
.research-heading .lead { margin-bottom: 6px; }
.research-grid, .support-grid { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--ink); border-bottom: 1px solid var(--line); }
.research-grid article, .support-grid article { min-width: 0; padding: 34px 28px; border-right: 1px solid var(--line); }
.research-grid article:first-child, .support-grid article:first-child { padding-left: 0; }
.research-grid article:last-child, .support-grid article:last-child { padding-right: 0; border-right: 0; }
.research-grid span, .support-grid span { color: var(--teal); font: 700 10px/1.3 var(--display); letter-spacing: .12em; }
.research-grid h3, .support-grid h3 { margin: 16px 0 12px; font-size: clamp(20px, 1.8vw, 26px); line-height: 1.45; }
.research-grid p, .support-grid p { margin-bottom: 0; color: var(--muted); font-size: 14px; }
.text-link { display: flex; justify-content: space-between; gap: 28px; width: min(100%, 560px); margin: 40px 0 0 auto; padding: 18px 0 12px; border-bottom: 1px solid var(--ink); font: 700 13px/1.4 var(--display); letter-spacing: .04em; }
.trial-support { background: #f7faf9; padding-top: 0; }
.trial-support-hero { position: relative; overflow: hidden; display: flex; align-items: center; min-height: clamp(300px, 32vw, 440px); margin-bottom: 56px; }
.trial-support-hero .trial-support-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 22% calc(45% + var(--parallax, 0) * 18%); will-change: object-position; }
.trial-support-hero::before { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(90deg, rgba(247,250,249,.96) 0%, rgba(247,250,249,.9) 32%, rgba(247,250,249,.35) 55%, rgba(247,250,249,0) 72%); }
.trial-support-hero .wrap { position: relative; z-index: 2; }
.trial-support-hero h2 { max-width: 900px; margin-bottom: 0; }
.toto-partnership { background: #fff; scroll-margin-top: var(--header-h); }
.toto-partnership .partnership-lockup { margin: 36px 0 clamp(46px, 6vw, 76px); }
.partnership-detail { align-items: start; }
.partnership-detail .lead { margin-bottom: 22px; }
.partnership-note { color: var(--muted); font-size: 12px; line-height: 1.8; }

/* News */
.newslist { border-top: 1px solid var(--ink); }
.newsitem { display: grid; grid-template-columns: 150px 1fr auto; gap: 28px; align-items: start; padding: 34px 0; border-bottom: 1px solid var(--line); }
.newsitem .date { color: var(--muted); font-family: var(--display); }
.news-badge { color: var(--teal); font: 700 10px var(--display); letter-spacing: .12em; }
.newsitem h3 { margin: 8px 0; font-size: clamp(20px, 2.1vw, 27px); }
.newsitem p { margin-bottom: 0; color: var(--muted); }
.news-arrow { padding-top: 22px; color: var(--teal); font-size: 24px; }
.newsitem-link { transition: color .2s ease, background-color .2s ease; }
.newsitem-link:hover { background: var(--soft); }
.newsitem-link:hover .news-arrow { transform: translateX(6px); }
.newsitem-link .news-arrow { transition: transform .2s ease; }
.newsitem[hidden] { display: none; }

/* News article */
.news-article-page { background: #fff; }
.news-article-page > header { display: block; }
.news-article-page main { padding-top: var(--header-h); }
.news-article-hero {
  padding: 0;
  border-bottom: 1px solid var(--line);
  background: linear-gradient(90deg, #eef4f2 0, #eef4f2 17%, var(--soft) 17%);
}
.news-article-hero .wrap,
.news-article-body .wrap { width: min(100%, 1320px); }
.news-article-hero-grid {
  display: grid;
  grid-template-columns: 180px minmax(0, 1fr);
  min-height: clamp(210px, 16vw, 250px);
}
.news-article-index {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  padding: clamp(30px, 3vw, 38px) 28px 24px 0;
  border-right: 1px solid var(--line);
  color: var(--teal);
  font-family: var(--display);
}
.news-article-index > span {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .18em;
}
.news-article-index a {
  margin-top: 14px;
  color: var(--ink);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .16em;
}
.news-article-index a::after {
  content: " →";
  color: var(--teal);
}
.news-article-heading {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-width: 0;
  padding: clamp(30px, 3vw, 38px) 0 clamp(30px, 3vw, 38px) clamp(36px, 5vw, 72px);
}
.news-article-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 20px;
  align-items: center;
  margin-bottom: clamp(12px, 1.2vw, 16px);
  color: var(--muted);
  font-family: var(--display);
  font-size: 12px;
  letter-spacing: .08em;
}
.news-article-meta .news-badge { font-size: 11px; }
.news-article-hero h1 {
  max-width: 1240px;
  margin-bottom: 0;
  font-size: clamp(32px, 2.6vw, 40px);
  line-height: 1.38;
  text-wrap: balance;
  letter-spacing: -.045em;
  line-break: strict;
  word-break: normal;
}
.news-article-body { padding-block: clamp(72px, 9vw, 128px); }
.news-article-layout {
  display: grid;
  grid-template-columns: 180px minmax(0, 1fr);
  gap: clamp(42px, 7vw, 108px);
  align-items: start;
}
.news-article-aside {
  position: sticky;
  top: calc(var(--header-h) + 32px);
  padding-top: 12px;
  border-top: 2px solid var(--teal);
}
.news-article-aside span {
  display: block;
  color: var(--teal);
  font: 700 10px/1.4 var(--display);
  letter-spacing: .15em;
}
.news-article-aside p {
  margin: 12px 0 0;
  color: var(--muted);
  font-size: 12px;
}
.news-article-content {
  width: min(100%, 900px);
  font-size: clamp(16px, 1.3vw, 18px);
  line-height: 2.05;
}
.news-article-content > p:first-child {
  color: var(--ink);
  font-size: clamp(19px, 1.8vw, 24px);
  font-weight: 600;
  line-height: 1.9;
}
.news-article-content p { margin-bottom: 2.1em; }
.news-article-figure {
  margin: clamp(32px, 4vw, 56px) 0;
}

.news-article-figure img {
  display: block;
  width: 100%;
  height: auto;
}

.news-article-figure figcaption {
  margin-top: 10px;
  color: var(--text-muted);
  font-size: 12px;
  letter-spacing: .08em;
}

.news-article-content h2 {
  margin: 3.2em 0 1.1em;
  padding: 1.15em 0 0 24px;
  border-top: 1px solid var(--line);
  border-left: 3px solid var(--teal);
  font-size: clamp(25px, 2.6vw, 34px);
  line-height: 1.45;
}
.news-article-content ul {
  margin: 0 0 2em;
  padding: 0;
  list-style: none;
  border-top: 1px solid var(--line);
}
.news-article-content li {
  position: relative;
  padding: 16px 12px 16px 30px;
  border-bottom: 1px solid var(--line);
}
.news-article-content li::before {
  content: "";
  position: absolute;
  top: 1.7em;
  left: 8px;
  width: 7px;
  height: 7px;
  background: var(--teal);
}
.news-article-content a {
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: 28px;
  min-width: min(100%, 360px);
  padding: 15px 18px;
  border: 1px solid var(--ink);
  color: var(--ink);
  font-size: 14px;
  font-weight: 700;
  line-height: 1.5;
  text-decoration: none;
  overflow-wrap: anywhere;
}
.news-article-content a::after {
  content: "↗";
  flex: 0 0 auto;
  color: var(--teal);
}
.news-article-content a:hover {
  background: var(--ink);
  color: #fff;
}
.news-article-note {
  padding: 24px 28px;
  border-left: 2px solid var(--teal);
  background: var(--soft);
  color: var(--muted);
  font-size: 13px;
  line-height: 1.9;
}
.news-article-quote {
  margin: 2.8em 0;
  padding: 28px 0 28px 32px;
  border-left: 3px solid var(--teal);
  font-size: 1.08em;
}
.news-article-quote cite {
  display: block;
  margin-top: 16px;
  color: var(--muted);
  font-size: 13px;
  font-style: normal;
}
.news-article-back {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  width: 100%;
  min-width: 0;
  margin: clamp(48px, 6vw, 76px) 0 0;
  padding: 20px 22px;
  border: 1px solid var(--ink);
  font: 700 13px/1.4 var(--display);
  letter-spacing: .04em;
  transition: background-color .2s ease, color .2s ease;
}
.news-article-back:hover { background: var(--ink); color: #fff; }
/* .news-article-content a より詳細度を上げ、本文リンク用スタイルの誤適用を打ち消す */
.news-article-content .news-article-back {
  display: flex;
  width: 100%;
  margin-left: 0;
  padding: 20px 22px;
  font-size: 13px;
  line-height: 1.4;
  overflow-wrap: normal;
}
.news-article-content .news-article-back::after { content: none; }

/* Contact and footer */
#contact { scroll-margin-top: var(--header-h); }
.contact-section { padding-block: var(--section-y); background: var(--dark); color: #fff; }
.contact-layout { display: grid; grid-template-columns: minmax(420px, .9fr) 1.1fr; gap: clamp(48px, 7vw, 96px); }
.contact-copy h2 { color: #fff; font-size: clamp(36px, 3.6vw, 48px); line-height: 1.28; }
.contact-copy p { color: rgba(255,255,255,.64); }
.form-shell { width: 100%; max-width: none; }
.contact-form { display: grid; grid-template-columns: 1fr 1fr; gap: 26px 24px; }
.field { min-width: 0; }
.field.full, .form-actions, .privacy-field, .form-status { grid-column: 1 / -1; }
.field label { display: block; margin-bottom: 8px; color: rgba(255,255,255,.76); font-size: 12px; }
.field input, .field select, .field textarea { width: 100%; padding: 12px 0; border: 0; border-bottom: 1px solid rgba(255,255,255,.34); border-radius: 0; outline: 0; background: transparent; color: #fff; }
.field select option { color: var(--ink); }
.field input:focus, .field select:focus, .field textarea:focus { border-color: var(--teal-light); }
.privacy-field { display: flex; gap: 10px; align-items: flex-start; color: rgba(255,255,255,.7); font-size: 12px; }
.privacy-field input { margin-top: 5px; }
.form-actions button { width: 100%; padding: 17px 22px; border: 0; background: #fff; color: #68716f; cursor: pointer; }
.form-actions button:disabled { cursor: not-allowed; opacity: .62; }
.form-status { margin: -10px 0 0; color: rgba(255,255,255,.55); font-size: 12px; }
.privacy-field a { color: inherit; text-decoration: underline; text-underline-offset: 3px; }
.privacy-field a:hover { color: #fff; }

/* Privacy policy */
.legal-page { background: #fff; }
.legal-hero { padding: clamp(96px, 10vw, 140px) 0 clamp(56px, 6vw, 84px); border-bottom: 1px solid var(--line); background: #f3f6f5; }
.legal-hero .wrap { max-width: 1040px; }
.legal-hero h1 { max-width: none; margin: 18px 0 22px; font-size: clamp(36px, 4vw, 56px); line-height: 1.12; letter-spacing: -.04em; }
.legal-hero p {
  max-width: 1000px;
  margin: 0;
  color: var(--muted);
  font-size: clamp(15px, 1.2vw, 18px);
  line-height: 2;
  line-break: strict;
  text-wrap: pretty;
}
.legal-content { padding: clamp(72px, 9vw, 130px) 0; }
.legal-wrap { max-width: 1040px; }
.legal-intro { margin: 0 0 clamp(56px, 7vw, 88px); font-size: clamp(17px, 1.45vw, 21px); line-height: 2; }
.legal-section { padding: clamp(34px, 4vw, 52px) 0; border-top: 1px solid var(--line); }
.legal-section h2 { margin: 0 0 24px; font-size: clamp(22px, 2vw, 30px); line-height: 1.45; letter-spacing: -.025em; }
.legal-section p,
.legal-section li,
.legal-contact dt,
.legal-contact dd { color: var(--muted); font-size: 15px; line-height: 2; }
.legal-section p { margin: 0; }
.legal-section p + p { margin-top: 18px; }
.legal-section ul { margin: 18px 0 0; padding-left: 1.4em; }
.legal-section li + li { margin-top: 7px; }
.legal-note { margin-top: 22px !important; padding: 18px 22px; background: #f3f6f5; font-size: 13px !important; }
.legal-contact dl { margin: 0; border-top: 1px solid var(--line); }
.legal-contact dl > div { display: grid; grid-template-columns: 180px 1fr; gap: 24px; padding: 18px 0; border-bottom: 1px solid var(--line); }
.legal-contact dt { color: var(--ink); font-weight: 700; }
.legal-contact dd { margin: 0; }
.legal-contact a { color: var(--teal); text-decoration: underline; text-underline-offset: 3px; }
.legal-date { margin: 36px 0 0; color: var(--muted); font-size: 13px; text-align: right; }

@media (max-width: 680px) {
  .legal-hero { padding-top: 88px; }
  .legal-contact dl > div { grid-template-columns: 1fr; gap: 2px; }
}
footer { padding: 48px 0; background: var(--dark); color: rgba(255,255,255,.62); border-top: 1px solid rgba(255,255,255,.15); font-size: 12px; }
footer .wrap { display: flex; justify-content: space-between; gap: 40px; }
.footer-logo-frame {
  position: relative;
  display: block;
  width: 180px;
  height: 62px;
  overflow: hidden;
  margin: 0 0 12px;
}
.footer-logo {
  position: absolute;
  top: -21.8px;
  left: -18.7px;
  display: block;
  width: 210.6px;
  max-width: none;
  height: auto;
  margin: 0;
  filter: grayscale(1) brightness(0) invert(1);
  opacity: .94;
}
.footer-links { display: flex; gap: 24px; align-items: flex-start; }

@media (max-width: 1080px) {
  :root { --header-h: 76px; }
  .nav-toggle { display: block; }
  header nav {
    display: none;
    position: fixed;
    inset: var(--header-h) 0 0;
    height: auto;
    padding: 24px;
    background: #fff;
    overflow-y: auto;
  }
  header nav.is-open { display: flex; flex-direction: column; align-items: stretch; gap: 0; }
  header nav > a { width: 100%; min-height: 66px; padding: 12px 4px; border-bottom: 1px solid var(--line); }
  header nav > a:not(.nav-contact)::after { display: none; }
  .nav-ja { font-size: 15px; }
  .nav-en { font-size: 11px; }
  .nav-contact { margin-top: 20px; padding: 13px 16px; }
  .editorial-intro, .illustration-flow, .field-section, .product-story, .evidence-film, .home-partnership, .home-founder-story { grid-template-columns: 120px 1fr; }
  .section-label { padding-inline: 22px; }
}

@media (max-width: 900px) {
  .grid2, .grid3 { grid-template-columns: 1fr; }
  .grid2 > *, .grid3 > *, .grid2 > *:first-child, .grid3 > *:first-child, .grid2 > *:last-child, .grid3 > *:last-child { padding: 34px 0; border-right: 0; border-bottom: 1px solid var(--line); }
  .founder-story-grid { grid-template-columns: 1fr; }
  .founder-portrait { border-right: 0; border-bottom: 1px solid var(--line); }
  .contact-layout { grid-template-columns: 1fr; }
  .press-highlight { grid-template-columns: 150px 1fr; }
  .press-highlight > a { grid-column: 2; }
  .media-coverage-heading { grid-template-columns: 1fr; }
  .research-heading { grid-template-columns: 1fr; }
  .partnership-heading, .partnership-detail { grid-template-columns: 1fr; }
  .research-grid, .support-grid { grid-template-columns: repeat(2, 1fr); }
  .research-grid article:nth-child(2), .support-grid article:nth-child(2) { padding-right: 0; border-right: 0; }
  .research-grid article:nth-child(3), .support-grid article:nth-child(3) { padding-left: 0; border-top: 1px solid var(--line); }
  .research-grid article:nth-child(4), .support-grid article:nth-child(4) { border-top: 1px solid var(--line); }
}

@media (max-width: 760px) {
  :root { --gutter: 22px; --section-y: 68px; }
  .site-logo { width: 141px; height: 49px; }
  .career-hero { min-height: 680px; }
  .career-hero-copy { bottom: 170px; }
  .career-hero h1 { font-size: 36px; }
  .hero-actions { width: 100%; grid-template-columns: 1fr 1fr; }
  .hero-actions a { padding: 18px 16px; font-size: 13px; }
  .editorial-intro, .illustration-flow, .field-section, .product-story, .evidence-film, .home-partnership, .home-founder-story { display: block; }
  .section-label { padding: 34px var(--gutter); border-right: 0; border-bottom: 1px solid var(--line); }
  .editorial-intro .section-label,
  .product-story .section-label,
  .field-section .section-label,
  .evidence-film .section-label,
  .home-partnership .section-label,
  .home-founder-story .section-label {
    position: static;
    top: auto;
  }
  .editorial-body h2, .field-title h2 { font-size: 38px; }
  .large-copy { font-size: 16px; }
  .illustration-main { padding-inline: var(--gutter); }
  .illustration-copy { display: block; margin-bottom: 38px; }
  .illustration-copy .kicker { margin-bottom: 20px; }
  .illustration-copy h2 { margin-bottom: 24px; font-size: 36px; }
  .illustration-sequence, .pain-grid { grid-template-columns: 1fr; }
  .illustration-step { border-right: 0; border-bottom: 1px solid var(--line); }
  .illustration-step:last-child { border-bottom: 0; }
  .illustration-step:not(:last-child)::after { top: auto; right: 50%; bottom: -17px; transform: translateX(50%) rotate(90deg); }
  .illustration-media { height: 360px; }
  .pain-grid { margin-bottom: 56px; }
  .pain-media { height: 340px; }
  .home-scroll-story { height: 125vh; }
  .scroll-story-copy h2 { font-size: 38px; }
  .product-heading h2 { font-size: 68px; }
  .story-grid, .film-grid, .metric-row, .grid2, .grid3, .stat-grid { grid-template-columns: 1fr; }
  .story-panel, .metric-row > div, .grid2 > *, .grid3 > *, .stat { border-right: 0; border-bottom: 1px solid var(--line); }
  .product-benefits { grid-template-rows: none; }
  .product-benefits .story-panel { display: flex; grid-row: auto; grid-template-rows: none; flex-direction: column; justify-content: space-between; }
  .product-benefits .story-text { display: block; grid-row: auto; grid-template-rows: none; }
  .grid2 > *, .grid3 > *, .grid2 > *:first-child, .grid3 > *:first-child, .grid2 > *:last-child, .grid3 > *:last-child { padding: 30px 0; }
  .field-row, .field-row.reverse { grid-template-columns: 1fr; gap: 26px; }
  .field-row.reverse .field-copy { order: 0; }
  .film-grid video { height: 55vw; }
  .founder-story-main > h2 { margin-bottom: 36px; font-size: 38px; }
  .founder-portrait { padding: 22px 0; }
  .founder-message { margin: 22px 0; padding: 30px 24px; }
  .founder-message blockquote { font-size: 15px; }
  .press-highlight { grid-template-columns: 1fr; }
  .press-highlight > a { grid-column: 1; }
  .media-points { grid-template-columns: 1fr; }
  .media-points article, .media-points article:first-child, .media-points article:last-child { padding: 28px 0; border-right: 0; border-bottom: 1px solid var(--line); }
  .media-points article:last-child { border-bottom: 0; }
  .research-grid, .support-grid { grid-template-columns: 1fr; }
  .research-grid article, .research-grid article:first-child, .research-grid article:last-child, .support-grid article, .support-grid article:first-child, .support-grid article:last-child { padding: 28px 0; border-right: 0; border-top: 0; border-bottom: 1px solid var(--line); }
  .research-grid article:last-child, .support-grid article:last-child { border-bottom: 0; }
  .partnership-lockup { flex-wrap: wrap; margin-bottom: 40px; }
  .toto-logo { height: 32px; }
  .toilabs-logo { height: 40px; }
  .partnership-points { grid-template-columns: 1fr; }
  .partnership-points > div, .partnership-points > div:first-child, .partnership-points > div:last-child { padding: 24px 0; border-right: 0; border-bottom: 1px solid var(--line); }
  .partnership-points > div:last-child { border-bottom: 0; }
  .sub-visual { height: 460px; }
  .pagehero h1 { font-size: 40px; }
  .sub-visual-copy { right: var(--gutter); }
  .sub-visual-copy h2 { font-size: 32px; }
  .obs-grid { grid-template-columns: 1fr; }
  .obs-grid div, .obs-grid div:nth-child(even) { border-right: 0; }
  .newsitem { grid-template-columns: 1fr auto; gap: 10px; }
  .newsitem .date { grid-column: 1 / -1; }
  .contact-layout { grid-template-columns: 1fr; }
  .contact-form { grid-template-columns: 1fr; }
  .field, .field.full, .form-actions, .privacy-field, .form-status { grid-column: 1; }
  footer .wrap { flex-direction: column; }
  .footer-links { flex-wrap: wrap; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .scroll-story video { transform: none; }
}

/* ホバー時のアクション(色反転・移動・ティール変化)を全体に統一適用 */
/* .outline-link は四方に余白のある箱型ボタンなので反転(背景色)が映える */
.outline-link {
  transition: background-color .2s ease, color .2s ease, border-color .2s ease;
}
.outline-link:hover {
  background: var(--ink);
  color: #fff;
  border-color: var(--ink);
}
/* .text-link / .press-highlight > a は下線のみのプレーンリンクなので、
   背景反転ではなくティールカラー+矢印移動で統一する */
.text-link, .press-highlight > a {
  transition: color .2s ease, border-color .2s ease;
}
.text-link:hover, .press-highlight > a:hover {
  color: var(--teal);
  border-color: var(--teal);
}
.outline-link span, .text-link span, .press-highlight > a span, .hero-actions a span {
  display: inline-block;
  transition: transform .2s ease;
}
.outline-link:hover span, .text-link:hover span,
.press-highlight > a:hover span, .hero-actions a:hover span {
  transform: translateX(5px);
}
.hero-actions a { transition: background-color .2s ease, border-color .2s ease; }
.hero-actions a:hover { background: rgba(255,255,255,.22); border-color: #fff; }
.footer-links a, .contact-copy a, .card a, .privacy-field a, .lead a { transition: color .2s ease; }
.footer-links a:hover { color: #fff; }
.contact-copy a:hover, .card a:hover, .privacy-field a:hover, .lead a:hover { color: var(--teal); }
header nav > a:not(.nav-contact):hover { color: var(--teal); }

/* 2026-07-18 information architecture revision */
.career-hero h1 { font-size: clamp(42px, 5.25vw, 78px); }
.pagehero h1 { font-size: clamp(40px, 5vw, 72px); }
.pagehero-lead { max-width: 900px; margin: 28px 0 0; color: var(--muted); font-size: clamp(16px, 1.5vw, 20px); line-height: 1.9; }

.home-news { background: #fff; border-bottom: 1px solid var(--line); }
.home-news-inner {
  display: grid;
  grid-template-columns: 150px minmax(0, 1fr) auto;
  gap: clamp(24px, 4vw, 64px);
  align-items: center;
  width: 100%;
  max-width: none;
  min-height: 112px;
  margin-inline: 0;
  padding: 20px var(--page-edge);
}
.home-news-label span { display: block; margin-bottom: 7px; color: var(--teal); font: 700 10px/1.2 var(--display); letter-spacing: .14em; }
.home-news-label h2 { margin: 0; font-size: 18px; }
.home-news-item { display: grid; grid-template-columns: 110px 70px minmax(0, 1fr) auto; gap: 18px; align-items: center; min-width: 0; }
.home-news-item time { color: var(--muted); font-family: var(--display); font-size: 13px; }
.home-news-item strong { overflow: hidden; font-size: 15px; text-overflow: ellipsis; white-space: nowrap; }
.home-news-arrow { color: var(--teal); font-size: 20px; transition: transform .2s ease; }
.home-news-item:hover .home-news-arrow { transform: translateX(5px); }
.home-news-all { width: var(--cta-width); max-width: 100%; margin: 0; white-space: nowrap; }

.product-detail-link { margin-top: 44px; margin-bottom: clamp(32px, 4vw, 56px); }
.section-heading-split { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(320px, .85fr); gap: clamp(42px, 7vw, 110px); align-items: end; margin-bottom: clamp(42px, 6vw, 72px); }
.section-heading-split h2 { margin-bottom: 0; }
.section-heading-split .lead { margin-bottom: 0; }
.product-flow { border-top: 1px solid var(--ink); }
.report-preview { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(300px, .8fr); gap: clamp(36px, 6vw, 84px); align-items: center; margin-top: clamp(54px, 8vw, 96px); padding-top: clamp(42px, 6vw, 72px); border-top: 1px solid var(--line); }
.report-preview img { width: 100%; background: #fff; }
.report-preview h3 { margin: 14px 0; font-size: clamp(24px, 2.6vw, 36px); }
.report-preview p { color: var(--muted); line-height: 1.9; }
.compact-support { margin-top: clamp(52px, 7vw, 84px); }
.case-summary-grid { display: grid; grid-template-columns: repeat(3, 1fr); margin-top: clamp(44px, 6vw, 72px); border-top: 1px solid rgba(255,255,255,.35); border-bottom: 1px solid rgba(255,255,255,.35); }
.case-summary-grid article { padding: 30px; border-right: 1px solid rgba(255,255,255,.35); }
.case-summary-grid article:first-child { padding-left: 0; }
.case-summary-grid article:last-child { padding-right: 0; border-right: 0; }
.case-summary-grid span { color: var(--teal-light); font: 700 10px/1.3 var(--display); letter-spacing: .13em; }
.case-summary-grid h3 { margin: 14px 0 10px; color: #fff; font-size: clamp(20px, 1.9vw, 26px); }
.case-summary-grid p { margin: 0; color: rgba(255,255,255,.74); line-height: 1.8; }
.evidence-first { padding-top: clamp(78px, 9vw, 124px); }
.news-follow-note { margin: 28px 0 0; color: var(--muted); font-size: 13px; }

@media (max-width: 900px) {
  .home-news-inner { grid-template-columns: 110px minmax(0, 1fr); }
  .home-news-all { grid-column: 2; justify-self: start; }
  .home-news-item { grid-template-columns: 90px 64px minmax(0, 1fr) auto; }
  .section-heading-split, .report-preview { grid-template-columns: 1fr; }
  .case-summary-grid { grid-template-columns: 1fr; }
  .case-summary-grid article, .case-summary-grid article:first-child, .case-summary-grid article:last-child { padding: 26px 0; border-right: 0; border-bottom: 1px solid rgba(255,255,255,.35); }
  .case-summary-grid article:last-child { border-bottom: 0; }
}

@media (max-width: 760px) {
  .career-hero h1 { font-size: 36px; }
  .pagehero h1 { font-size: 38px; }
  .home-news-inner { display: block; padding-block: 26px; }
  .home-news-label { margin-bottom: 22px; }
  .home-news-item { grid-template-columns: auto 1fr auto; gap: 10px 14px; }
  .home-news-item time { grid-column: 1; }
  .home-news-item .news-badge { grid-column: 2; }
  .home-news-item strong { grid-column: 1 / 3; white-space: normal; }
  .home-news-arrow { grid-column: 3; grid-row: 1 / 3; }
  .home-news-all { display: flex; margin-top: 28px; }
  .section-heading-split { margin-bottom: 34px; }
  .report-preview { margin-top: 46px; padding-top: 34px; }
}

/* 2026-07-18 cross-page alignment pass */
:root {
  --cta-width: 420px;
  --cta-height: 62px;
  --section-gap: clamp(38px, 5vw, 68px);
  --home-label-content-width: 132px;
}

/* Align the section-number rail and the right edge of every numbered home
   section with the same centered canvas used by the header. The final grid
   track absorbs only the viewport area outside that shared canvas. */
.editorial-intro,
.illustration-flow,
.field-section,
.product-story,
.evidence-film,
.home-partnership,
.home-founder-story {
  grid-template-columns:
    calc(var(--page-edge) + var(--home-label-content-width))
    minmax(0, calc(min(100vw, var(--container)) - var(--gutter) - var(--home-label-content-width)))
    minmax(0, 1fr);
}
.section-label {
  padding-left: var(--page-edge);
  padding-right: 28px;
}
.section-label span:first-child { color: var(--teal); }

@media (max-width: 1080px) {
  :root { --home-label-content-width: 98px; }
  .section-label { padding-right: 22px; }
}

/* The grid above owns the centered canvas. A second offset here would push
   the content toward the viewport edge on wide displays. */
.editorial-body,
.illustration-main,
.product-main,
.field-content,
.evidence-main,
.partnership-main,
.founder-story-main {
  max-width: none;
  margin-left: 0;
}

/* Keep headings and supporting copy on one shared measure. */
.editorial-body > h2,
.field-title,
.product-heading,
.film-copy,
.partnership-detail,
.founder-story-main > h2,
.pagehero .wrap,
.content-section > .wrap,
.contact-section > .wrap,
footer > .wrap {
  width: 100%;
}

/* Shibata feedback: subpage titles should support the page, not dominate it. */
.pagehero .wrap {
  padding-top: clamp(54px, 5vw, 76px);
  padding-bottom: clamp(46px, 4.5vw, 66px);
}
.pagehero h1 {
  max-width: 1080px;
  font-size: clamp(34px, 3.45vw, 52px);
  line-height: 1.24;
}
.pagehero-lead {
  max-width: 820px;
  margin-top: 22px;
  font-size: clamp(15px, 1.25vw, 18px);
}

/* Standard link/button geometry. Contextual text links inside cards retain
   their own layout, while page-level CTAs share width and rhythm. */
.outline-link,
.text-link {
  width: min(100%, var(--cta-width));
  min-height: var(--cta-height);
  margin-top: 36px;
  margin-left: auto;
  padding: 18px 20px;
  align-items: center;
}
.text-link { border: 1px solid var(--ink); }
.text-link:hover { border-color: var(--teal); }
.home-news .home-news-all { width: var(--cta-width); max-width: 100%; margin: 0; }
.product-detail-link { margin-top: 40px; margin-right: var(--gutter); margin-bottom: clamp(32px, 4vw, 56px); }
.form-actions button {
  min-height: var(--cta-height);
  padding: 16px 22px;
}

/* Repeated grids use the same inset instead of a mix of 26/28/34/40px. */
.grid2 > *,
.grid3 > *,
.media-points article,
.research-grid article,
.support-grid article,
.case-summary-grid article {
  padding-top: 34px;
  padding-bottom: 34px;
}
.story-text,
.illustration-text,
.pain-copy { padding-inline: 30px; }

/* Consistent section-heading spacing. */
.content-section > .wrap > h2,
.section-heading-split,
.media-coverage-heading,
.research-heading { margin-bottom: var(--section-gap); }
.section-heading-split,
.media-coverage-heading,
.research-heading,
.partnership-heading { align-items: start; }
.section-heading-split h2,
.media-coverage-heading h2,
.research-heading h2,
.partnership-heading h2 { margin-bottom: 0; }

@media (max-width: 1080px) {
  .editorial-body,
  .illustration-main,
  .product-main,
  .field-content,
  .evidence-main,
  .partnership-main,
  .founder-story-main { max-width: none; margin-left: 0; }
}

@media (max-width: 760px) {
  :root { --cta-height: 58px; }
  .pagehero .wrap { padding-top: 44px; padding-bottom: 42px; }
  .pagehero h1 { font-size: 32px; line-height: 1.3; }
  .pagehero-lead { margin-top: 18px; font-size: 15px; line-height: 1.8; }
  .outline-link, .text-link { width: 100%; min-height: var(--cta-height); margin-top: 28px; }
  .home-news .home-news-all { width: 100%; margin-top: 28px; }
  /* The product section loses its numbered rail on mobile, so its CTA needs
     the same page inset as the other home-section CTAs. */
  .product-detail-link {
    width: calc(100% - (var(--gutter) * 2));
    margin-right: var(--gutter);
    margin-left: var(--gutter);
  }
  .story-text, .illustration-text, .pain-copy { padding-inline: 24px; }
}

/* 2026-07-19 subpage width and typography system
   A wide shared canvas controls alignment; narrower text measures preserve
   readability. Heading sizes descend consistently from page title to cards. */
.subpage-redesign {
  --subpage-container: 1680px;
  --subpage-gutter: clamp(24px, 4vw, 72px);
  --subpage-section-y: clamp(64px, 6.5vw, 100px);
  --subpage-text-measure: 900px;
}

.subpage-redesign .wrap {
  width: min(100%, var(--subpage-container));
  margin-inline: auto;
  padding-inline: var(--subpage-gutter);
}

/* The global header must keep one shared canvas on every page.
   Subpage content can use its wider 1680px canvas without moving the logo
   and navigation relative to the home page. */
.subpage-redesign > header .wrap {
  width: min(100%, var(--container));
  padding-inline: var(--gutter);
}

/* Lower-page FV: one full visual with the page label, title and lead layered
   over it. This keeps the entire first view self-contained and removes the
   former duplication between the white title block and the visual caption. */
.subpage-redesign .pagehero-visual {
  position: relative;
  display: flex;
  align-items: flex-end;
  height: calc(100svh - var(--header-h));
  min-height: 620px;
  overflow: hidden;
  border-bottom: 0;
  background: var(--dark);
  color: #fff;
}

.subpage-redesign .pagehero-visual > video,
.subpage-redesign .pagehero-visual > img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
  object-position: 50% center;
}

.subpage-redesign .pagehero-visual .pagehero-shade {
  position: absolute;
  inset: 0;
  z-index: 1;
  background:
    linear-gradient(90deg, rgba(4, 13, 12, .76) 0%, rgba(4, 13, 12, .38) 52%, rgba(4, 13, 12, .08) 82%),
    linear-gradient(0deg, rgba(4, 13, 12, .72) 0%, rgba(4, 13, 12, .08) 62%);
}

.subpage-redesign .pagehero.pagehero-visual .wrap {
  position: relative;
  z-index: 2;
  margin-bottom: clamp(54px, 7vh, 88px);
  padding-top: 0;
  padding-bottom: 0;
}

.subpage-redesign .pagehero-visual .eyebrow,
.subpage-redesign .pagehero-visual h1 {
  color: #fff;
}

.subpage-redesign .pagehero-visual h1 {
  max-width: 980px;
  text-shadow: 0 2px 22px rgba(0, 0, 0, .18);
}

.subpage-redesign .pagehero-visual .pagehero-lead {
  max-width: 820px;
  color: rgba(255, 255, 255, .86);
  line-break: strict;
  word-break: normal;
  overflow-wrap: normal;
  text-wrap: pretty;
}

.subpage-redesign .scroll-cue {
  position: absolute;
  right: max(var(--subpage-gutter), calc((100vw - var(--subpage-container)) / 2 + var(--subpage-gutter)));
  bottom: 0;
  z-index: 3;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  color: rgba(255, 255, 255, .86);
  pointer-events: none;
}

.subpage-redesign .scroll-cue span {
  writing-mode: vertical-rl;
  font: 700 9px/1 var(--display);
  letter-spacing: .2em;
}

.subpage-redesign .scroll-cue i {
  position: relative;
  display: block;
  width: 1px;
  height: 66px;
  overflow: hidden;
  background: rgba(255, 255, 255, .34);
}

.subpage-redesign .scroll-cue i::after {
  content: "";
  position: absolute;
  inset: 0;
  background: #fff;
  transform: translateY(-100%);
  animation: scroll-cue-line 2.2s ease-in-out infinite;
}

@keyframes scroll-cue-line {
  0% { transform: translateY(-100%); }
  45%, 55% { transform: translateY(0); }
  100% { transform: translateY(100%); }
}

.news-pagination {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 8px;
  margin-top: clamp(34px, 4vw, 54px);
}

.news-pagination a,
.news-pagination span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 48px;
  height: 48px;
  padding: 0 16px;
  border: 1px solid var(--line);
  color: var(--ink);
  font: 700 12px/1 var(--display);
  letter-spacing: .06em;
  transition: border-color .2s ease, background-color .2s ease, color .2s ease;
}

.news-pagination a:hover {
  border-color: var(--teal);
  color: var(--teal);
}

.news-pagination .is-current {
  border-color: var(--ink);
  background: var(--ink);
  color: #fff;
}

.news-pagination .is-disabled {
  color: #a5adaa;
  pointer-events: none;
}

.news-pagination .pagination-direction { min-width: 104px; }

.subpage-redesign .content-section,
.subpage-redesign .contact-section {
  padding-block: var(--subpage-section-y);
}

/* The full-bleed visual uses the exact same inner edge as every .wrap.
   Using a centred container here prevents drift on ultrawide viewports. */
.subpage-redesign .sub-visual-copy {
  left: 0;
  right: 0;
  width: min(100%, var(--subpage-container));
  max-width: none;
  margin-inline: auto;
  padding-inline: var(--subpage-gutter);
}

.subpage-redesign .sub-visual-copy h2 {
  max-width: 1040px;
  margin-top: 16px;
  font-size: clamp(32px, 3.15vw, 50px);
  line-height: 1.26;
}

.subpage-redesign .pagehero .wrap {
  padding-top: clamp(52px, 5vw, 76px);
  padding-bottom: clamp(44px, 4.5vw, 66px);
}

.subpage-redesign .pagehero h1 {
  max-width: 1080px;
  font-size: clamp(34px, 3.3vw, 52px);
  line-height: 1.25;
}

.subpage-redesign .pagehero-lead {
  max-width: var(--subpage-text-measure);
  margin-top: 20px;
  font-size: clamp(15px, 1.15vw, 18px);
  line-height: 1.9;
}

.subpage-redesign .content-section h2 {
  max-width: 1080px;
  margin-bottom: clamp(34px, 4vw, 54px);
  font-size: clamp(28px, 2.55vw, 42px);
  line-height: 1.32;
}

.subpage-redesign .content-section .lead {
  max-width: var(--subpage-text-measure);
  font-size: clamp(15px, 1.15vw, 18px);
  line-height: 1.9;
}

.subpage-redesign .section-heading-split,
.subpage-redesign .media-coverage-heading,
.subpage-redesign .research-heading,
.subpage-redesign .partnership-heading {
  grid-template-columns: minmax(0, 1.05fr) minmax(340px, .95fr);
  gap: clamp(40px, 5vw, 84px);
}

.subpage-redesign .section-heading-split .lead,
.subpage-redesign .media-coverage-heading .lead,
.subpage-redesign .research-heading .lead,
.subpage-redesign .partnership-heading .lead {
  max-width: 760px;
}

.subpage-redesign .card h3,
.subpage-redesign .media-points h3,
.subpage-redesign .research-grid h3,
.subpage-redesign .support-grid h3,
.subpage-redesign .case-summary-grid h3,
.subpage-redesign .partnership-points strong {
  font-size: clamp(18px, 1.45vw, 23px);
  line-height: 1.48;
}

.subpage-redesign .report-preview h3 {
  font-size: clamp(22px, 2vw, 29px);
  line-height: 1.42;
}

.subpage-redesign .card p,
.subpage-redesign .media-points p,
.subpage-redesign .research-grid p,
.subpage-redesign .support-grid p,
.subpage-redesign .case-summary-grid p,
.subpage-redesign .report-preview p,
.subpage-redesign .spec,
.subpage-redesign .newsitem p {
  font-size: clamp(14px, 1vw, 16px);
  line-height: 1.85;
}

.subpage-redesign .quote p {
  font-size: clamp(15px, 1.1vw, 17px);
  line-height: 1.9;
}

.subpage-redesign .newsitem h3 {
  font-size: clamp(18px, 1.6vw, 24px);
  line-height: 1.45;
}

.newsitem-official { grid-template-columns: 150px minmax(0, 1fr) auto; }

.subpage-redesign .stat .num {
  font-size: clamp(24px, 2.5vw, 38px);
}

.subpage-redesign .contact-copy h2 {
  font-size: clamp(32px, 3vw, 44px);
  line-height: 1.3;
}

.subpage-redesign .sensing-photo-section h2,
.subpage-redesign .sensing-photo-section .lead,
.subpage-redesign .sensing-photo-section .spec {
  max-width: min(640px, 40vw);
}

@media (max-width: 900px) {
  .subpage-redesign .section-heading-split,
  .subpage-redesign .media-coverage-heading,
  .subpage-redesign .research-heading,
  .subpage-redesign .partnership-heading {
    grid-template-columns: 1fr;
    gap: 24px;
  }
}

@media (max-width: 760px) {
  .subpage-redesign {
    --subpage-gutter: 22px;
    --subpage-section-y: 58px;
  }

  /* 40vw left the sensing copy in a roughly 150px column on phones,
     forcing headings and Japanese body copy into unnatural line breaks. */
  .subpage-redesign .sensing-photo-section h2,
  .subpage-redesign .sensing-photo-section .lead,
  .subpage-redesign .sensing-photo-section .spec {
    max-width: 100%;
  }

  .subpage-redesign .sensing-photo-section::before {
    background: linear-gradient(
      90deg,
      rgba(255,255,255,.97) 0%,
      rgba(255,255,255,.92) 72%,
      rgba(255,255,255,.72) 100%
    );
  }

  .subpage-redesign .pagehero-visual {
    height: max(560px, calc(100svh - var(--header-h)));
    min-height: 0;
  }

  .subpage-redesign .pagehero.pagehero-visual .wrap {
    margin-bottom: 42px;
    padding-top: 0;
    padding-bottom: 0;
  }

  .subpage-redesign .pagehero-lead-break { display: none; }

  .subpage-redesign .scroll-cue {
    right: var(--subpage-gutter);
    gap: 9px;
  }

  .subpage-redesign .scroll-cue i { height: 42px; }

  .news-pagination {
    justify-content: center;
    gap: 6px;
  }

  .news-pagination a,
  .news-pagination span {
    min-width: 44px;
    height: 44px;
    padding-inline: 12px;
  }

  .news-pagination .pagination-direction { min-width: 78px; }

  .newsitem {
    grid-template-columns: 1fr auto;
    gap: 12px 18px;
    padding: 26px 0;
  }
  .newsitem .date { grid-column: 1; font-size: 13px; }
  .newsitem > div:nth-child(2) { grid-column: 1; }
  .newsitem .news-arrow { grid-column: 2; grid-row: 1 / 3; align-self: center; padding-top: 0; }
  .news-article-hero {
    background: var(--soft);
  }
  .news-article-hero-grid {
    grid-template-columns: 1fr;
    min-height: 0;
  }
  .news-article-index {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: center;
    gap: 16px;
    padding: 24px 0 18px;
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }
  .news-article-index a { margin: 0; }
  .news-article-heading { padding: 24px 0 30px; }
  /* 長い記事タイトルでもヒーローだけが過度に縦長にならない級数。
     390px幅では28px、760px付近でも30pxを上限にする。 */
  .news-article-hero h1 {
    font-size: clamp(28px, 7.2vw, 30px);
    line-height: 1.44;
    letter-spacing: -.04em;
  }
  .news-article-layout { grid-template-columns: 1fr; gap: 40px; }
  .news-article-aside {
    position: static;
    display: flex;
    justify-content: space-between;
    gap: 20px;
  }
  .news-article-aside p { margin: 0; }
  .news-article-content { font-size: 15px; line-height: 1.95; }
  .news-article-content > p:first-child { font-size: 18px; }
  .news-article-content h2 { padding-left: 16px; }
  .news-article-note { padding: 20px; }
  .news-article-quote { padding-left: 22px; }

  .subpage-redesign .pagehero h1 { font-size: 32px; }
  .subpage-redesign .sub-visual-copy { bottom: 28px; }
  .subpage-redesign .sub-visual-copy h2 { font-size: 30px; }
  .subpage-redesign .content-section h2 { font-size: 28px; }
}

@media (prefers-reduced-motion: reduce) {
  .subpage-redesign .scroll-cue i::after { animation: none; transform: none; }
}
