/* ============================================================
   deck/slides.css — スライドごとの位置合わせ

   base.css / blocks.css / figures.css の部品を、元スライドの座標に
   合わせるための調整だけを置く。数字はすべて元データ（pptx）上の pt。
   CSP でインライン style が使えないので、ここを経由して渡している。

   並びはスライド番号順。デッキが改訂されたら、該当する番号の
   ブロックだけを見ればよいようにしてある。
   ============================================================ */

/* ---- 汎用の追加（複数のスライドで使う）---------------------- */

.card__text--sm { font-size: calc(10 * var(--u)); }
.card__title--tight { letter-spacing: -0.02em; }

.bullets--lg { font-size: calc(12 * var(--u)); line-height: 1.85; }
.bullets--lg li + li { margin-top: calc(12 * var(--u)); }

.stat__value--xl { font-size: calc(48 * var(--u)); }
.stat__unit--lg { font-size: calc(14 * var(--u)); padding-left: calc(4 * var(--u)); }

.claim--lg { font-size: calc(24 * var(--u)); }

.spec__key--sm { font-size: calc(10.5 * var(--u)); }

.note-block--half { right: calc(500 * var(--u)); }
.note-block__gap { margin-top: calc(20 * var(--u)) !important; }

/* 図表の見出し（29 / 40）。 */
.chart__title {
  margin: 0;
  font-size: calc(12 * var(--u));
  font-weight: 700;
  color: var(--c-ink);
}
.is-dark .chart__title { color: #fff; }

/* .cols を絶対配置ではなくその場に置く（24 のパネル内）。 */
.cols--static { position: static; left: auto; right: auto; }

/* ---- 13 トレードオフ ---------------------------------------- */

.cards--inset { left: calc(77 * var(--u)); right: calc(73 * var(--u)); gap: calc(55 * var(--u)); }
.banner--inset { left: calc(77 * var(--u)); right: calc(73 * var(--u)); }

/* ---- 15 既存の導電助剤 -------------------------------------- */

.cards--limit { left: calc(67 * var(--u)); right: calc(66 * var(--u)); gap: calc(38 * var(--u)); }
.cards--limit .card { padding: calc(15 * var(--u)) calc(20 * var(--u)) calc(20 * var(--u)); }

/* ---- 16 市場の変化 ------------------------------------------ */

.cards--shift { left: calc(70 * var(--u)); right: calc(70 * var(--u)); gap: calc(46 * var(--u)); }
/* 左右 16pt。ここを 17pt にすると2枚目の「粉体のまま導電パスを形成する構造と、」
   が 18字目で折れて3行になり、3枚のカードで本文の行数が揃わない。 */
.cards--shift .card { padding: calc(11 * var(--u)) calc(16 * var(--u)) calc(18 * var(--u)); }
.cards--shift .card__title { margin-bottom: calc(4 * var(--u)); }

/* ---- 20 可変域 ---------------------------------------------- */

.cols--tune { left: calc(80 * var(--u)); right: calc(81 * var(--u)); gap: 0 calc(53 * var(--u)); }
.banner--tune { left: calc(83 * var(--u)); right: calc(81 * var(--u)); }

/* ---- 21 事例 ------------------------------------------------ */

.cards--case { left: calc(72 * var(--u)); right: calc(68 * var(--u)); gap: calc(32 * var(--u)); }
.cards--case .card { padding: calc(19 * var(--u)) calc(26 * var(--u)) calc(24 * var(--u)); }

.case__value { margin-top: calc(30 * var(--u)); }
.case__caption { margin: calc(10 * var(--u)) 0 0; font-size: calc(12 * var(--u)); }
.case__use {
  margin: calc(28 * var(--u)) 0 0;
  font-size: calc(8 * var(--u));
  line-height: 1.9;
}
.case__use b { font-weight: 700; }

/* ---- 23 なぜ量産できなかったか ------------------------------ */

.moat-bg {
  position: absolute;
  top: calc(160 * var(--u));
  left: calc(55 * var(--u));
  width: calc(411 * var(--u));
}
.moat-bg__label {
  margin: 0 0 calc(18 * var(--u));
  font-size: calc(12 * var(--u));
  font-weight: 700;
  color: var(--c-ink);
}

/* ---- 24 量産実績 -------------------------------------------- */

.figure-panel .cols--ruled > * { padding-top: calc(16 * var(--u)); }
.figure-panel .cols { gap: 0 calc(46 * var(--u)); }

/* ---- 26 2 つの事業 ------------------------------------------ */

.cards--biz { left: calc(72 * var(--u)); right: calc(68 * var(--u)); gap: calc(32 * var(--u)); }
.cards--biz .card { padding: calc(22 * var(--u)) calc(26 * var(--u)) calc(26 * var(--u)); }

.biz__head {
  display: flex;
  align-items: center;
  gap: calc(14 * var(--u));
  margin: 0 0 calc(26 * var(--u));
}
.biz__icon {
  width: calc(34 * var(--u));
  height: calc(34 * var(--u));
  padding: calc(6 * var(--u));
  border-radius: calc(8 * var(--u));
  background: #fff;
  box-shadow: 0 calc(2 * var(--u)) calc(6 * var(--u)) rgba(23, 39, 63, 0.16);
}
.biz__pill {
  display: inline-block;
  padding: calc(7 * var(--u)) calc(20 * var(--u));
  border-radius: calc(6 * var(--u));
  background: #2b3b55;
  color: #fff;
  font-size: calc(11 * var(--u));
  font-weight: 700;
}
.biz__pill--soft { background: #e9edf3; color: #2b3b55; }

.biz__sub { margin: calc(20 * var(--u)) 0 calc(8 * var(--u)); }

/* ---- 27 ロードマップ ---------------------------------------- */

.cols--phase { left: calc(76 * var(--u)); right: calc(83 * var(--u)); gap: 0 calc(40 * var(--u)); }
.cols--phase .col__text { font-size: calc(11.5 * var(--u)); }

/* ---- 29 供給量・生産量 -------------------------------------- */

.cols--charts { gap: 0 calc(56 * var(--u)); }
.momentum {
  position: absolute;
  top: calc(165 * var(--u));
  left: 0;
  right: 0;
}

/* ---- 30 4つの壁 --------------------------------------------- */

.wrapup {
  position: absolute;
  left: calc(54 * var(--u));
  right: calc(54 * var(--u));
  top: calc(424 * var(--u));
  padding-top: calc(12 * var(--u));
}
.wrapup::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: calc(84 * var(--u));
  height: 1px;
  background: rgba(255, 255, 255, 0.5);
}
.wrapup__lead { margin: 0; font-size: calc(20 * var(--u)); font-weight: 700; color: #fff; }
.wrapup__note { margin: calc(10 * var(--u)) 0 0; font-size: calc(12 * var(--u)); color: rgba(255, 255, 255, 0.82); }

/* ---- 32 なぜ、いまか ---------------------------------------- */

.cols--why { left: calc(54 * var(--u)); right: calc(51 * var(--u)); gap: 0 calc(62 * var(--u)); }
.why__lead {
  margin: 0 0 calc(26 * var(--u));
  font-size: calc(28 * var(--u));
  font-weight: 700;
  line-height: 1.5;
  color: #fff;
}
.why__text { margin: 0; font-size: calc(12 * var(--u)); line-height: 2.1; color: rgba(255, 255, 255, 0.88); }
.why__text strong { font-weight: 700; color: #fff; }

/* ---- 34 行動指針 -------------------------------------------- */

.cols--creed { gap: 0 calc(38 * var(--u)); }

/* ---- 35 拠点 ------------------------------------------------ */

.cards--sites { left: calc(65 * var(--u)); right: calc(66 * var(--u)); gap: calc(30 * var(--u)); }
.cards--sites .photo-card__img { aspect-ratio: 2 / 1; }

/* ---- 36 組織 ------------------------------------------------ */

.bars--org {
  top: calc(262 * var(--u));
  left: calc(52 * var(--u));
  width: calc(428 * var(--u));
}
.bars--org .bar { grid-template-columns: calc(136 * var(--u)) 1fr calc(44 * var(--u)); gap: 0 calc(26 * var(--u)); }
/* 「製造・生産技術・品質保証」は 136pt に収まらないが、元データも
   1行のまま枠から少しはみ出している。折り返さずに合わせる。 */
.bars--org .bar__name { white-space: nowrap; font-size: calc(11.5 * var(--u)); }

/* ---- 38 Life at 3DC ----------------------------------------- */

.cards--life { left: calc(65 * var(--u)); right: calc(65 * var(--u)); gap: calc(16 * var(--u)); }
.cards--life .photo-card__img { aspect-ratio: 8 / 5; }
.cards--life .photo-card__body { padding: calc(13 * var(--u)) calc(14 * var(--u)) calc(16 * var(--u)); }
.cards--life .card__eyebrow { font-size: calc(9 * var(--u)); color: var(--c-blue-pale); }
.cards--life .card__title { font-size: calc(13 * var(--u)); }
.cards--life .card__text { font-size: calc(9 * var(--u)); line-height: 1.85; }

/* ---- 40 メンバー数の推移 ------------------------------------ */

.chart__title--left { position: absolute; left: calc(55 * var(--u)); }
.chart__title--right { position: absolute; left: calc(578 * var(--u)); }

.bars--origin {
  top: calc(172 * var(--u));
  left: calc(578 * var(--u));
  width: calc(327 * var(--u));
  gap: calc(21 * var(--u));
}
.bars--origin .bar { grid-template-columns: calc(128 * var(--u)) 1fr calc(40 * var(--u)); }

.w-5 { width: 5%; }

.people-note {
  position: absolute;
  top: calc(390 * var(--u));
  left: calc(578 * var(--u));
  width: calc(327 * var(--u));
  margin: 0;
  padding-top: calc(16 * var(--u));
  border-top: 1px solid #b9c2d0;
  font-size: calc(12 * var(--u));
  line-height: 1.75;
}
.people-note strong { font-weight: 700; color: var(--c-ink); }

/* ---- 41 募集職種 -------------------------------------------- */

.cards--roles { left: calc(57 * var(--u)); right: calc(55 * var(--u)); gap: calc(20 * var(--u)); }
/* 本文の幅は元データと同じ 165pt（1行 15字）。ここを詰めると
   「海外営業」だけ5行になり、4枚のカードで行数が揃わない。 */
.cards--roles .card { padding: calc(18 * var(--u)) calc(13 * var(--u)) calc(22 * var(--u)); }
.cards--roles .card__icon { margin-bottom: calc(24 * var(--u)); }
.cards--roles .card__text { font-size: calc(11 * var(--u)); }
/* 本文の行数はカードごとに変わりうる。本文の高さを最大行数ぶんで固定し、
   その下に1行ぶんの余白を置いて注記を出す。
   カード下端に貼り付ける（margin-top: auto）と高さは揃うが、本文が短い
   カードだけ余白が広がって、4枚の見え方が揃わない。 */
.cards--roles .card { display: flex; flex-direction: column; }
.cards--roles .card__text { min-height: calc(79 * var(--u)); }
.cards--roles .card__meta { margin-top: calc(20 * var(--u)); }

/* ---- 42 選考プロセス ---------------------------------------- */

.cols--hire { left: calc(64 * var(--u)); right: calc(55 * var(--u)); gap: 0 calc(50 * var(--u)); }
.hire__label { margin: 0 0 calc(24 * var(--u)); font-size: calc(12 * var(--u)); font-weight: 700; color: var(--c-blue); }
.hire__lead { margin: 0; font-size: calc(20 * var(--u)); font-weight: 700; line-height: 1.75; color: var(--c-ink); }

/* ---- 43 Why join -------------------------------------------- */

.cols--why-join { gap: 0 calc(56 * var(--u)); }
.cols--why-join .col__text { line-height: 2.0; }
.cols--why-join .rule { width: calc(60 * var(--u)); margin-bottom: calc(16 * var(--u)); }

/* ---- 44 連絡先 ---------------------------------------------- */

.cards--contact { left: calc(83 * var(--u)); right: calc(80 * var(--u)); gap: calc(43 * var(--u)); }
.contact-card__rule { width: calc(58 * var(--u)); margin: calc(22 * var(--u)) 0 calc(14 * var(--u)); }

/* ---- 46 用語集 ---------------------------------------------- */

.glossary { position: absolute; top: calc(126 * var(--u)); }
.glossary--left { left: calc(55 * var(--u)); width: calc(414 * var(--u)); }
.glossary--right { left: calc(528 * var(--u)); width: calc(377 * var(--u)); }

.glossary--left .spec__row { grid-template-columns: calc(150 * var(--u)) 1fr; }
.glossary--right .spec__row { grid-template-columns: calc(114 * var(--u)) 1fr; }
.glossary .spec__row { padding: calc(10 * var(--u)) 0; }

/* ============================================================
   高さ・間隔の微調整（元スライドの箱の高さに合わせる）
   ここから下は、上のブロックを実際の描画と突き合わせて詰めた分。
   ============================================================ */

/* 13 — カードは 149→350pt、帯は 390→478pt。 */
.cards--inset .card { min-height: calc(201 * var(--u)); }
.banner--inset { min-height: calc(88 * var(--u)); }

/* 15 — カードは 159→434pt。本文が 10.2pt と小さい。 */
.cards--limit .card { min-height: calc(275 * var(--u)); }
.cards--limit .card__figure { margin: calc(10 * var(--u)) 0 calc(6 * var(--u)); }
.cards--limit .bullets { font-size: calc(10.2 * var(--u)); line-height: 1.62; }
.cards--limit .bullets li + li { margin-top: calc(5 * var(--u)); }
.cards--limit .card--accent { background: #ebf0f8; }

/* 16 — カードは 185→385pt。地の色との差はごく浅く、枠線で見せている。 */
.cards--shift .card { min-height: calc(200 * var(--u)); }
.cards--shift .card__icon { margin-bottom: calc(12 * var(--u)); }

/* 20 — 帯は 361→451pt。 */
.banner--tune { min-height: calc(90 * var(--u)); }

/* 21 — カードは 173→438pt。 */
.cards--case .card { min-height: calc(265 * var(--u)); }

/* 24 — 黒いパネルは 316→478pt。 */
.figure-panel { min-height: calc(162 * var(--u)); }

/* 26 — カードは 146→451pt。 */
.cards--biz .card { min-height: calc(305 * var(--u)); }

/* 35 — カードは 170→424pt。 */
.cards--sites .card { min-height: calc(254 * var(--u)); }

/* 38 — カードは 197→440pt。 */
.cards--life .card { min-height: calc(243 * var(--u)); }

/* 41 — カードは 179→389pt。 */
.cards--roles .card { min-height: calc(210 * var(--u)); }

/* 44 — カードは 253→400pt。 */
.cards--contact .contact-card { min-height: calc(147 * var(--u)); }
