/* ========================================
   RESET
   ブラウザごとのデフォルトスタイルの差異をなくし、
   どの環境でも同じ見た目からデザインを組み立てられるようにする。
======================================== */

/* 全要素の余白・線・サイズ計算方式を統一する
   → ブラウザ標準の margin/padding がバラバラで、意図しない余白ズレの原因になるため */
*,
*::before,
*::after {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

/* html全体のスクロールバーによるガタつきを防ぐ
   → コンテンツの高さでスクロールバーの有無が切り替わり、レイアウト幅が揺れるのを防止 */
html {
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
}

/* bodyの基本行間・フォントを指定
   → line-heightの初期値（ブラウザ依存）は詰まりすぎるため、可読性の高い値に統一 */
body {
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeSpeed;
  min-height: 100dvh;
}

/* 見出し・段落のフォント太さ/サイズを継承させる
   → h1〜h6・pがブラウザ標準の太字・独自フォントサイズを持つため、
     デザイン側で明示的に指定するまでは親要素の値を引き継ぐようにする */
h1,
h2,
h3,
h4,
h5,
h6,
p {
  font-size: inherit;
  font-weight: inherit;
}

/* リストの記号・番号を除去
   → ナビゲーションやカードレイアウトでulを多用するため、
     デザイン不要な箇所で毎回list-style: noneを書く手間を減らす */
ul,
ol {
  list-style: none;
}

/* リンクの下線・文字色の継承
   → デフォルトの青文字・下線はデザインを崩すため、
     文字色はテキストに揃え、装飾は必要な箇所だけで指定する */
a {
  color: inherit;
  text-decoration: none;
}

/* 画像・メディア要素をブロック化し、親幅に収める
   → デフォルトのinline表示だと画像下に余白ができ、
     レスポンシブ時にコンテナからはみ出すのを防ぐ */
img,
picture,
video,
canvas,
svg {
  display: block;
  max-width: 100%;
  height: auto;
}

/* フォーム部品のフォントをページ全体と統一
   → input/button/textarea/selectはOS標準フォントが適用されるため、
     デザインの一貫性を保つために親要素のフォントを継承させる */
input,
button,
textarea,
select {
  font: inherit;
  color: inherit;
}

/* ボタンの見た目をリセット
   → OSごとに異なるボタン装飾（背景・枠線）を消し、
     デザインで独自のボタンスタイルを組みやすくする */
button {
  background: none;
  border: none;
  cursor: pointer;
}

/* テーブルの罫線間隔をなくす
   → border-collapseが未指定だとセル間に隙間ができ、
     デザイン通りの罫線が引けないため */
table {
  border-collapse: collapse;
  border-spacing: 0;
}

/* 長いテキスト（URLなど）の折り返しを許可
   → 英数字の連続文字列がコンテナ幅をはみ出すのを防ぐ */
h1,
h2,
h3,
h4,
h5,
h6,
p {
  overflow-wrap: break-word;
}
