/* -------------------- */
/* ライト・ダークモード切替 */
/* -------------------- */

/* ライトモード(通常)用の色 */
:root {
  --color-bg: #edeae5;
  --color-text: #262020;
  --color-link-text: #0071d1;
  --color-border: #878789;
  --color-btn: #edeae5;
  --color-btn-hover: #d7d9d9;
  --color-header-bg: #edeae5;
  --color-header-text: #161616;
  --color-header-text-hover: #626972;
  --color-header-border: #75c4e6;
  --color-header-controller-bg: #d1dae6;
  color-scheme: light; /* ブラウザUIの色調整 */
}

/* ダークモード用の色 */
:root[data-theme="dark"] {
  --color-bg: #2b2b2a;
  --color-text: #dbd9d7;
  --color-link-text: #59a5e7;
  --color-border: #7c7d7e;
  --color-btn: #363737;
  --color-btn-hover: #555556;
  --color-header-bg: #2b2b2a;
  --color-header-text: #f0f0f0;
  --color-header-text-hover: #788088;
  --color-header-border: #579ab7;
  --color-header-controller-bg: #3b4449;
  color-scheme: dark;
}

* {
  margin: 0;
}

a,
a:visited {
  color: var(--color-link-text);
}

header {
  flex: 0 0 auto;
  z-index: 1000;
  background-color: var(--color-header-bg);
  box-shadow: 0 2px 3px rgba(0, 0, 0, 0.2); /* 下方向に影を追加 */
}

.header-container {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  padding: 0 10px;
  font-family: serif;
  gap: 6px;
}

.site-title {
  display: flex;
  align-items: center; /* 上下中央揃え */
  margin: 0;
  height: 54px;
  color: var(--color-header-text);
}

.site-title a {
  height: 100%;
  padding: 0 10px;
  font-size: 24px;
  font-weight: normal;
  display: inline-flex;
  align-items: center; /* 上下中央揃え */
  text-decoration: none; /* 下線を消す */
  color: inherit; /* 親の色を継承 */
  gap: 7px; /* ロゴと文字の間 */
}

.site-icon {
  height: 32px;
}

.header-navigation {
  display: flex;
  align-items: center; /* 上下中央揃え */
  height: 45px;
  margin-right: 18px;
  font-weight: 600;
}

.header-navigation a {
  width: 5em;
  height: 43px;
  padding-top: 2px;
  text-align: center;
  line-height: 43px;
  text-decoration: none;
  color: var(--color-header-text);
  border-bottom: solid 2px rgba(255, 255, 255, 0);
  cursor: pointer;
  transition: 0.2s cubic-bezier(0.45, 0, 0.55, 1);
}

.header-navigation a:hover {
  color: var(--color-header-text-hover);
  border-bottom: solid 2px var(--color-header-border);
}

.viewer-controls {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  padding: 5px 18px;
  gap: 7px;
  background-color: var(--color-header-controller-bg);
}

.controller-container {
  flex: 1;
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
}

.controller-container > div {
  display: flex;
  align-items: center; /* 上下中央揃え */
  gap: 3px; /* ラベルとスライダーの余白 */
  margin-right: 10px;
}

.controller-container > .line-height-container {
  flex: 2;
  max-width: 300px;
}

.controller-container > .padding-container {
  flex: 3;
  max-width: 400px;
}

.controller-container label {
  width: 2em;
}

.controller-container span {
  margin-right: 6px;
}

.controller-container input {
  flex: 1;
}

button.toggle-direction {
  display: flex;
  align-items: center; /* 上下中央揃え */
  justify-content: center; /* 左右中央揃え */
  height: 34px;
  width: 7.5em;
  padding: 0;
  background-color: var(--color-btn);
  border: 1px solid var(--color-border);
  border-radius: 8px;
}

button.toggle-theme {
  display: flex;
  align-items: center; /* 上下中央揃え */
  justify-content: center; /* 左右中央揃え */
  height: 34px;
  width: 34px;
  padding: 0;
  background-color: var(--color-btn);
  border: 1px solid var(--color-border);
  border-radius: 8px;
}

button.toggle-direction:hover,
button.toggle-theme:hover {
  background-color: var(--color-btn-hover);
}

body {
  display: flex;
  flex-direction: column;
  height: 100vh;
  margin: 0;
  background-color: var(--color-bg);
}

.novel-container {
  font-size: 16px;
}
.novel-container p {
  font-size: 1em;
}

main {
  flex: 1 1 auto;
  overflow-y: auto; /* 縦スクロール */
  background-color: var(--color-bg);
  color: var(--color-text);
  font-family: serif;

  line-height: 2.1;
  padding-top: 3em;
  padding-bottom: 5em;
  padding-left: 10%;
  padding-right: 10%;
}

/* 縦書き設定時 */
main.vertical {
  flex: 1;
  height: auto;
  overflow-x: auto; /* 横スクロール */
  overflow-y: hidden;
  writing-mode: vertical-rl;
  text-orientation: mixed; /* mixedにすると英数字が横向きになる */
  line-height: 2.1;
  padding-top: 10%;
  padding-bottom: 10%;
  padding-left: 8em;
  padding-right: 5em;
}

.novel-container h1 {
  margin-block-end: 3em;
}

.novel-container h2 {
  margin-block-start: 3em;
  margin-block-end: 3em;
}

.novel-container h3 {
  margin-block-start: 3em;
  margin-block-end: 3em;
  text-indent: 3em;
}

@media (max-width: 599px) {
  #controller-container {
    justify-content: flex-start;
  }
}

@media (max-width: 450px) {
  #controller-container span {
    display: none;
  }
}

span.size-24 {
  font-size: 24px;
  color: var(--color-text);
  font-variation-settings: "OPSZ" 24, "wght" 600;
}

/* その他 */

.pointer {
  cursor: pointer;
}
