/*
 * 技術ブログ（future-architect.github.io）の決まりへ寄せるための上書き。
 * 値の根拠はあちらの CLAUDE.md と /specials/styleguide/ が持つ。
 *
 * 節は役ごとに分けてある。並行して直すときに末尾へ足していくと必ずぶつかるので、
 * 足す先は自分が触る役の節を選ぶ。
 */

/* ---------------------------------------------------------------- 色・段 */

/* -------------------------------------------------------------- 本文の組 */

/* 脚注。補足情報なので本文から一段落とす。テーマは 90%（14.4px）で、色の
   #808080 は白地で 3.54 と AA を割っていた。ブログは脚注を body の段
   （13px）に乗せ、色は本文と同じにしている */
html.writer-html5 .rst-content aside.footnote,
html.writer-html5 .rst-content aside.footnote p,
html.writer-html5 .rst-content aside.footnote-list aside.footnote,
html.writer-html5 .rst-content dl.footnote,
html.writer-html5 .rst-content dl.footnote > dd p {
  color: #424242;
  font-size: 13px;
  line-height: 1.75;
}

/* 本文中の脚注の番号。テーマは 90%（14.4px）で、上付きなのに本文とほとんど
   同じ大きさに見える。ブログの上付き（sub / sup の 0.75em）と同じ比にする。
   上付きの作り（vertical-align: baseline ＋ top: -0.4em）はテーマのまま */
.rst-content .footnote-reference,
.rst-content .citation-reference {
  font-size: 12px;
}

/* 中のインラインコードは .875em だと 11.4px まで落ちるので、本文のコードと
   同じ 12px で止める */
html.writer-html5 .rst-content aside.footnote code,
html.writer-html5 .rst-content dl.footnote code {
  font-size: 12px;
}

/* 箇条書き。テーマは li の margin-left で 24px 字下げ、2段目が白丸・3段目が四角。
   ブログは全段が黒丸で、字下げは ul 側が 20px（入れ子は 16px）*/
.rst-content section ul,
.rst-content section ul li,
.rst-content section ul li li,
.rst-content section ul li li li {
  list-style-type: disc;
}

.rst-content section li::marker {
  color: #616161;
}

.rst-content section ul,
.rst-content section ol {
  padding-inline-start: 20px;
}

.rst-content section ul li,
.rst-content section ol li,
.rst-content section ul[class] li,
.rst-content section ol[class] li {
  margin-left: 0;
}

/* 入れ子は1段ごとに字下げが積み上がるので、2段目以降を詰める。
   開き（親の項目から子のリストへ入るところ）の空きは持たない——字下げが
   1段深くなること自体が開きを示す */
.rst-content section li ul,
.rst-content section li ol {
  margin-top: 0;
  padding-inline-start: 16px;
}

/* 連番・中黒と本文の間隔。既定ではマーカーが本文の左端に貼り付く。
   間隔を作るには本文側（li）を動かす。中黒は「1.」より字が細いぶん空きが広く見える */
.rst-content section li {
  padding-left: 0.4em;
}

.rst-content section ul > li {
  padding-left: 0.15em;
}

/* 項目の中が2段落以上ある箇条書きは、項目の切れ目を空きで示す。テーマは
   項目の中の段落の空きと項目と項目の空きがどちらも 12px で、どこまでが
   1つの項目か読めない。中を 4px に詰め、項目の間にその4倍を置く。
   1段落の項目だけが並ぶ箇条書きは間隔を持たないまま（行として並ぶので詰めて読む）*/
.rst-content section ul li > p,
.rst-content section ol li > p {
  margin-bottom: 4px;
}

.rst-content section ul li > p:last-child,
.rst-content section ol li > p:last-child {
  margin-bottom: 0;
}

/* テーマは2段落目に上の空き 12px を持たせている。上下から挟むと大きい方だけが
   効いて 4px が見えないので、空きは下だけで持つ */
.rst-content section ul li > p + p,
.rst-content section ol li > p + p {
  margin-top: 0;
}

.rst-content section ul:has(li > p + p) > li + li,
.rst-content section ol:has(li > p + p) > li + li {
  margin-top: 16px;
}

/* 入れ子の切れ目は「戻り」の空きが示す。子のリストが終わって同じ階層の項目に
   戻るところに刻み1つぶんを置く。開き（親から子へ入るところ）は 0 のまま——
   字下げが1段深くなること自体が開きを示す */
.rst-content section li:has(> ul) + li {
  margin-top: 4px;
}

.rst-content section li:has(> ol) + li {
  margin-top: 4px;
}

/* 画像のキャプション。図の補足なので本文より一段小さくし、絵の中央に置く。
   figure を table にして中身の幅に縮めるので、画像が列より狭いときも
   絵の中央にそろう（いまは全部の画像が列いっぱいだが、狭い絵が来ても崩れない）*/
.rst-content figure {
  display: table;
  max-width: 100%;
  margin: 24px 0;
}

.rst-content figure > figcaption {
  display: table-caption;
  caption-side: bottom;
  padding-top: 8px;
  color: #616161;
  text-align: center;
}

.rst-content figure > figcaption p {
  margin-bottom: 0;
  font-size: 14px;
  line-height: 1.4;
}

/* 読み下す文章の行間。テーマは 24px（1.5）で、和文だと目が次の行の頭へ戻りにくい */
.rst-content section p,
.rst-content section li,
.rst-content section blockquote,
.rst-content section dl dd {
  line-height: 1.75;
}

/* ---------------------------------------------------------------- 見出し */

/* 見出しのアンカー。テーマは水色（#2980b9）で、押すと訪問済みの色に変わる。
   ブログと同じネイビーにし、4つの状態で同じ色にする——これは「行き先」ではなく
   その見出しの位置を指す印なので、訪問済みで色が変わると意味が読めなくなる */
.rst-content h1 .headerlink,
.rst-content h2 .headerlink,
.rst-content h3 .headerlink,
.rst-content h4 .headerlink,
.rst-content h5 .headerlink,
.rst-content h6 .headerlink,
.rst-content h1 .headerlink:visited,
.rst-content h2 .headerlink:visited,
.rst-content h3 .headerlink:visited,
.rst-content h4 .headerlink:visited,
.rst-content h5 .headerlink:visited,
.rst-content h6 .headerlink:visited,
.rst-content h1 .headerlink:hover,
.rst-content h2 .headerlink:hover,
.rst-content h3 .headerlink:hover,
.rst-content h4 .headerlink:hover,
.rst-content h5 .headerlink:hover,
.rst-content h6 .headerlink:hover,
.rst-content h1 .headerlink:focus,
.rst-content h2 .headerlink:focus,
.rst-content h3 .headerlink:focus,
.rst-content h4 .headerlink:focus,
.rst-content h5 .headerlink:focus,
.rst-content h6 .headerlink:focus {
  color: #0a1461;
}

/* キャプションのアンカーは出さない。:name: を書いていないので行き先が
   #id11 のような自動連番で、前にコードや図が1つ増えると番号がずれる。
   共有したリンクが別のブロックを指すので、アンカーとして働いていない
   （見出しは見出し名の id なので安定している）*/
.rst-content .code-block-caption .headerlink,
.rst-content figure figcaption .headerlink,
.rst-content table > caption .headerlink {
  display: none;
}

/* 見出しは 直前の空き・太さ・罫線 で階層を作る。テーマは margin-top が 0 で、
   前の段落の下の空き（24px）しか無く、h2 も h6 も同じ間隔で始まる */
.rst-content h1,
.rst-content h2,
.rst-content h3,
.rst-content h4,
.rst-content h5,
.rst-content h6 {
  line-height: 1.3;
}

.rst-content section h2 {
  margin-top: 56px;
  margin-bottom: 12px;
}

.rst-content section h3 {
  margin-top: 32px;
  margin-bottom: 10px;
}

.rst-content section h4 {
  margin-top: 24px;
  margin-bottom: 8px;
}

.rst-content section h5 {
  margin-top: 24px;
  margin-bottom: 8px;
}

.rst-content section h6 {
  margin-top: 24px;
  margin-bottom: 8px;
}

/* 節の切れ目は直前の空きが担うので、線は「境目がある」と気づかせる程度でよい */
.rst-content section h2 {
  padding-bottom: 8px;
  border-bottom: 1px solid #ecebeb;
}

/* 折り返した見出しの最終行が短いと、見出しと本文の隙間が空いて見える。
   balance は2行以上のときしか働かないので、列の狭い画面では当てない */
@media (min-width: 768px) {
  .rst-content h2,
  .rst-content h3,
  .rst-content h4 {
    text-wrap: balance;
  }
}

/* ------------------------------------------------ インラインコード */

/* 合字を切る。スタックの Cascadia Code（Windows に入っている）は === や !== を
   1つの記号に合成するので、記法そのものを説明する文書では元の字が読めない */
code,
kbd,
pre,
samp,
.rst-content div[class^=highlight],
.rst-content div[class^=highlight] pre {
  font-variant-ligatures: none;
}

/* 技術ブログの札にそろえる（テーマ既定は白地・枠あり・赤い文字・75%）。
   code.literal を名指しするのは、テーマが同じ詳細度で色を持っているため。
   コードブロックは <code> を持たないのでここには入らない */
.rst-content code,
.rst-content code.literal,
.rst-content tt.literal {
  background: #eee;
  border: 0;
  color: #424242;
  font-size: .875em;
  padding: .25em .4em;
  border-radius: 4px;
  font-family: ui-monospace, "SF Mono", "Cascadia Code", "Source Code Pro", Menlo,
    Monaco, Consolas, "Liberation Mono", monospace;
  white-space: normal;
  overflow-wrap: break-word;
}

/* 押せることが読めなくなるので、リンクの中だけ札の上で AA を満たす青にする */
.rst-content a code,
.rst-content a code.literal {
  color: #0a58ca;
}

.rst-content a:visited code,
.rst-content a:visited code.literal {
  color: #590fc7;
}

/* ------------------------------------------------ コードブロック */

/* 横スクロールのつまみ。ブラウザ既定は濃く、切れ目のない帯なので同じ比の
   文字より強く見える。ブログと同じ罫線の最下段にする——つまみは文字ではなく
   線なので、ink ではなく rule の段を指す。
   溢れていること自体は帯の動きが示すので、つまみが唯一の合図ではない。
   静止時と操作中の色は分けられない（scrollbar-color が取るのは2色だけで、
   hover は UA が導出する）*/
.rst-content div[class^=highlight] pre,
.rst-content pre.literal-block,
.rst-content .wy-table-responsive {
  scrollbar-color: #ecebeb transparent;
}

/* ファイル名のキャプション。テーマは中央・イタリック・85%（13.6px）で、
   どのブロックの名前か読み取りにくい。ブログと同じく、ブロックの左上に
   載るタブの形にする。ファイル名はコードではなくブロックのラベルなので
   書体は本文と同じにし、大きさは中身と同じ 12px */
.rst-content .code-block-caption {
  display: block;
  width: fit-content;
  max-width: 100%;
  margin-bottom: -1px;
  padding: 6px 12px;
  border: 1px solid #ddd;
  border-bottom-color: #f5f5f5;
  border-radius: 8px 8px 0 0;
  background: #f5f5f5;
  color: #24292E;
  font-family: inherit;
  font-size: 12px;
  font-style: normal;
  line-height: 1.4;
  text-align: left;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}



/* note の中のリンクは hover でも色を動かさず、下線の太さだけで返す。
   地の文の hover（青）が要素の数のぶん詳細度で勝っていて、todo の中の
   リンクだけ hover で青くなっていた。訪問済みも紫のまま */
.rst-content .admonition.note a:hover,
.rst-content .admonition.seealso a:hover,
.rst-content .admonition.note a:focus,
.rst-content .admonition.seealso a:focus {
  color: #2D58D7;
  text-decoration-thickness: 2px;
}
.rst-content .admonition.note a:visited:hover,
.rst-content .admonition.seealso a:visited:hover,
.rst-content .admonition.note a:visited:focus,
.rst-content .admonition.seealso a:visited:focus {
  color: #590fc7;
}
.rst-content .admonition.tip a:hover,
.rst-content .admonition.hint a:hover,
.rst-content .admonition.tip a:focus,
.rst-content .admonition.hint a:focus {
  color: #257718;
  text-decoration-thickness: 2px;
}
.rst-content .admonition.tip a:visited:hover,
.rst-content .admonition.hint a:visited:hover,
.rst-content .admonition.tip a:visited:focus,
.rst-content .admonition.hint a:visited:focus {
  color: #590fc7;
}
.rst-content .admonition.warning a:hover,
.rst-content .admonition.caution a:hover,
.rst-content .admonition.attention a:hover,
.rst-content .admonition.important a:hover,
.rst-content .admonition-todo a:hover,
.rst-content .admonition.warning a:focus,
.rst-content .admonition.caution a:focus,
.rst-content .admonition.attention a:focus,
.rst-content .admonition.important a:focus,
.rst-content .admonition-todo a:focus {
  color: #7B6D18;
  text-decoration-thickness: 2px;
}
.rst-content .admonition.warning a:visited:hover,
.rst-content .admonition.caution a:visited:hover,
.rst-content .admonition.attention a:visited:hover,
.rst-content .admonition.important a:visited:hover,
.rst-content .admonition-todo a:visited:hover,
.rst-content .admonition.warning a:visited:focus,
.rst-content .admonition.caution a:visited:focus,
.rst-content .admonition.attention a:visited:focus,
.rst-content .admonition.important a:visited:focus,
.rst-content .admonition-todo a:visited:focus {
  color: #590fc7;
}
.rst-content .admonition.danger a:hover,
.rst-content .admonition.error a:hover,
.rst-content .admonition.danger a:focus,
.rst-content .admonition.error a:focus {
  color: #AC1B1B;
  text-decoration-thickness: 2px;
}
.rst-content .admonition.danger a:visited:hover,
.rst-content .admonition.error a:visited:hover,
.rst-content .admonition.danger a:visited:focus,
.rst-content .admonition.error a:visited:focus {
  color: #590fc7;
}

/* note の中のキャプション付きコード。note の中ではコードブロックの枠を地と
   同じ色にして消しているので、タブだけが枠を持つと食い違う。タブの地と枠も
   その note のコードブロックの地にそろえて、タブとブロックを1つの面にする */
.rst-content .admonition.note .code-block-caption,
.rst-content .admonition.seealso .code-block-caption {
  border-color: #f7f7f9;
  background: #f7f7f9;
}
.rst-content .admonition.tip .code-block-caption,
.rst-content .admonition.hint .code-block-caption {
  border-color: #f2fbf0;
  background: #f2fbf0;
}
.rst-content .admonition.warning .code-block-caption,
.rst-content .admonition.caution .code-block-caption,
.rst-content .admonition.attention .code-block-caption,
.rst-content .admonition.important .code-block-caption,
.rst-content .admonition-todo .code-block-caption {
  border-color: #fefcf0;
  background: #fefcf0;
}
.rst-content .admonition.danger .code-block-caption,
.rst-content .admonition.error .code-block-caption {
  border-color: #ffeded;
  background: #ffeded;
}

/* タブが載る角だけ丸みを落として、タブとブロックを地続きにする */
.rst-content .literal-block-wrapper div[class^=highlight] {
  border-top-left-radius: 0;
}

/* 枠の色だけブログの枠の段へ。地の差（1.06）では輪郭が出ないので枠は残す。
   配色と地は ext/futurelight.py 側 */
.rst-content div[class^=highlight],
.rst-content pre.literal-block {
  border-color: #ddd;
  border-radius: 8px;
  overflow: hidden;
}

/* ------------------------------------------------ note（admonition） */

/* 箱。テーマ既定は種別によらず青い帯 + 色の付いたタイトル行 */
.rst-content .admonition,
.rst-content .admonition-todo {
  padding: 16px 20px;
  margin: 24px 0;
  border-radius: 8px;
  line-height: 1.75;
}

/* note の中は外の組を1段下げる */
.rst-content .admonition p,
.rst-content .admonition li,
.rst-content .admonition-todo p,
.rst-content .admonition-todo li {
  font-size: 14px;
  line-height: 1.75;
}

/* 段落の間はテーマ既定の 24px では 14px の字に対して開きすぎる。ブログと同じ 16px */
.rst-content .admonition p,
.rst-content .admonition-todo p {
  margin-bottom: 16px;
}

.rst-content .admonition > :last-child,
.rst-content .admonition-todo > :last-child {
  margin-bottom: 0;
}

/* 自動で付くタイトル（「注釈」など）は出さず、絵柄だけを箱の左に置く */
.rst-content .admonition,
.rst-content .admonition-todo {
  position: relative;
  padding-left: calc(20px + 18px + 0.8em);
}

.rst-content .admonition-title {
  display: none;
}

.rst-content .admonition::before,
.rst-content .admonition-todo::before {
  content: '';
  position: absolute;
  left: 20px;
  top: 16px;
  width: 18px;
  height: 24.5px;
  background-repeat: no-repeat;
  background-position: center;
  background-size: 18px 18px;
}

/* tip */
.rst-content .admonition.note, .rst-content .admonition.seealso {
  background: #eff0f3;
}

.rst-content .admonition.note::before, .rst-content .admonition.seealso::before {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMTIiIGZpbGw9IiM1ZjZiODUiLz48Y2lyY2xlIGN4PSIxMiIgY3k9IjEwIiByPSI0LjIiIGZpbGw9IiNmZmYiLz48cmVjdCB4PSI5LjkiIHk9IjE0LjQiIHdpZHRoPSI0LjIiIGhlaWdodD0iMS43IiByeD0iMC44NSIgZmlsbD0iI2ZmZiIvPjxyZWN0IHg9IjEwLjciIHk9IjE2LjkiIHdpZHRoPSIyLjYiIGhlaWdodD0iMS42IiByeD0iMC44IiBmaWxsPSIjZmZmIi8+PC9zdmc+");
}

.rst-content .admonition.note code, .rst-content .admonition.seealso code {
  background: #dfe1e6;
}

.rst-content .admonition.note div[class^=highlight], .rst-content .admonition.seealso div[class^=highlight] {
  background: #f7f7f9;
  border-color: #f7f7f9;
}

.rst-content .admonition.note div[class^=highlight] pre, .rst-content .admonition.seealso div[class^=highlight] pre {
  background: #f7f7f9;
}

.rst-content .admonition.note a, .rst-content .admonition.seealso a {
  color: #2D58D7;
}

.rst-content .admonition.note a:visited, .rst-content .admonition.seealso a:visited {
  color: #590fc7;
}

/* info */
.rst-content .admonition.tip, .rst-content .admonition.hint {
  background: #e5f8e2;
}

.rst-content .admonition.tip::before, .rst-content .admonition.hint::before {
  background-image: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBVcGxvYWRlZCB0bzogU1ZHIFJlcG8sIHd3dy5zdmdyZXBvLmNvbSwgR2VuZXJhdG9yOiBTVkcgUmVwbyBNaXhlciBUb29scyAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIGZpbGw9IiM1NWM1MDAiIHZlcnNpb249IjEuMSIgaWQ9IkNhcGFfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgDQoJIHdpZHRoPSI4MDBweCIgaGVpZ2h0PSI4MDBweCIgdmlld0JveD0iMCAwIDMwNS4wMDIgMzA1LjAwMiINCgkgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8Zz4NCgk8Zz4NCgkJPHBhdGggZD0iTTE1Mi41MDIsMC4wMDFDNjguNDEyLDAuMDAxLDAsNjguNDEyLDAsMTUyLjUwMXM2OC40MTIsMTUyLjUsMTUyLjUwMiwxNTIuNWM4NC4wODksMCwxNTIuNS02OC40MTEsMTUyLjUtMTUyLjUNCgkJCVMyMzYuNTkxLDAuMDAxLDE1Mi41MDIsMC4wMDF6IE0xNTIuNTAyLDI4MC4wMDFDODIuMTk3LDI4MC4wMDEsMjUsMjIyLjgwNiwyNSwxNTIuNTAxYzAtNzAuMzA0LDU3LjE5Ny0xMjcuNSwxMjcuNTAyLTEyNy41DQoJCQljNzAuMzA0LDAsMTI3LjUsNTcuMTk2LDEyNy41LDEyNy41QzI4MC4wMDIsMjIyLjgwNiwyMjIuODA2LDI4MC4wMDEsMTUyLjUwMiwyODAuMDAxeiIvPg0KCQk8cGF0aCBkPSJNMjE4LjQ3Myw5My45N2wtOTAuNTQ2LDkwLjU0N2wtNDEuMzk4LTQxLjM5OGMtNC44ODItNC44ODEtMTIuNzk2LTQuODgxLTE3LjY3OCwwYy00Ljg4MSw0Ljg4Mi00Ljg4MSwxMi43OTYsMCwxNy42NzgNCgkJCWw1MC4yMzcsNTAuMjM3YzIuNDQxLDIuNDQsNS42NCwzLjY2MSw4LjgzOSwzLjY2MWMzLjE5OSwwLDYuMzk4LTEuMjIxLDguODM5LTMuNjYxbDk5LjM4NS05OS4zODUNCgkJCWM0Ljg4MS00Ljg4Miw0Ljg4MS0xMi43OTYsMC0xNy42NzhDMjMxLjI2OSw4OS4wODksMjIzLjM1NCw4OS4wODksMjE4LjQ3Myw5My45N3oiLz4NCgk8L2c+DQo8L2c+DQo8L3N2Zz4=");
}

.rst-content .admonition.tip code, .rst-content .admonition.hint code {
  background: #d1f1cc;
}

.rst-content .admonition.tip div[class^=highlight], .rst-content .admonition.hint div[class^=highlight] {
  background: #f2fbf0;
  border-color: #f2fbf0;
}

.rst-content .admonition.tip div[class^=highlight] pre, .rst-content .admonition.hint div[class^=highlight] pre {
  background: #f2fbf0;
}

.rst-content .admonition.tip a, .rst-content .admonition.hint a {
  color: #257718;
}

.rst-content .admonition.tip a:visited, .rst-content .admonition.hint a:visited {
  color: #590fc7;
}

/* warn */
.rst-content .admonition.warning, .rst-content .admonition.caution, .rst-content .admonition.attention, .rst-content .admonition.important, .rst-content .admonition-todo {
  background: #fdf9e2;
}

.rst-content .admonition.warning::before, .rst-content .admonition.caution::before, .rst-content .admonition.attention::before, .rst-content .admonition.important::before, .rst-content .admonition-todo::before {
  background-image: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iNDUxLjQyOTAyIgogICBoZWlnaHQ9IjQ1MS40MjkwMiIKICAgaWQ9InN2ZzIiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi4zICgyNDA1NTQ2LCAyMDE4LTAzLTExKSIKICAgc29kaXBvZGk6ZG9jbmFtZT0iRXhjbGFtYXRpb24gcG9pbnQgeWVsbG93LnN2ZyI+CiAgPGRlZnMKICAgICBpZD0iZGVmczQiIC8+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlkPSJiYXNlIgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIKICAgICBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIgogICAgIGlua3NjYXBlOnpvb209IjAuOTkzMDgwNzIiCiAgICAgaW5rc2NhcGU6Y3g9Ii0xODQuNzkzMzQiCiAgICAgaW5rc2NhcGU6Y3k9IjM4Ni4yODI5NiIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0icHgiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIgogICAgIHNob3dncmlkPSJmYWxzZSIKICAgICBpbmtzY2FwZTpzbmFwLW9iamVjdC1taWRwb2ludHM9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC1jZW50ZXI9InRydWUiCiAgICAgaW5rc2NhcGU6b2JqZWN0LXBhdGhzPSJ0cnVlIgogICAgIGlua3NjYXBlOm9iamVjdC1ub2Rlcz0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLWdsb2JhbD0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLXNtb290aC1ub2Rlcz0iZmFsc2UiCiAgICAgaW5rc2NhcGU6c25hcC1pbnRlcnNlY3Rpb24tcGF0aHM9InRydWUiCiAgICAgc2hvd2d1aWRlcz0idHJ1ZSIKICAgICBpbmtzY2FwZTpndWlkZS1iYm94PSJ0cnVlIgogICAgIGZpdC1tYXJnaW4tdG9wPSIwIgogICAgIGZpdC1tYXJnaW4tbGVmdD0iMCIKICAgICBmaXQtbWFyZ2luLXJpZ2h0PSIwIgogICAgIGZpdC1tYXJnaW4tYm90dG9tPSIwIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTkyMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxMDEzIgogICAgIGlua3NjYXBlOndpbmRvdy14PSItOSIKICAgICBpbmtzY2FwZTp3aW5kb3cteT0iLTkiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMSIKICAgICBpbmtzY2FwZTpzbmFwLXBhZ2U9InRydWUiIC8+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhNyI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGU+PC9kYzp0aXRsZT4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iQ2FscXVlIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yODg3LjU5MTYsLTE5Mi4zNjE1MSkiPgogICAgPGcKICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDEuMzU4MDQyOCwwLDAsMS4zNTgwNDI4LDIwNjUuMDc4LDQ0LjkyODMwMikiCiAgICAgICBpZD0ibGF5ZXIxLTYiCiAgICAgICBpbmtzY2FwZTpsYWJlbD0iQ2FscXVlIDEiIC8+CiAgICA8cGF0aAogICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMS4xNzAzNzE1LDAsMCwxLjE3MDM3MTUsMTc3Mi4zOTQ4LC0xODkuOTM3OSkiCiAgICAgICBkPSJNIDEzMzguNTcxNCw1MTkuNTA1MDcgQSAxOTIuODU3MTUsMTkyLjg1NzE1IDAgMCAxIDExNDUuNzE0Miw3MTIuMzYyMjEgMTkyLjg1NzE1LDE5Mi44NTcxNSAwIDAgMSA5NTIuODU3MDksNTE5LjUwNTA3IDE5Mi44NTcxNSwxOTIuODU3MTUgMCAwIDEgMTE0NS43MTQyLDMyNi42NDc5MiAxOTIuODU3MTUsMTkyLjg1NzE1IDAgMCAxIDEzMzguNTcxNCw1MTkuNTA1MDcgWiIKICAgICAgIHNvZGlwb2RpOnJ5PSIxOTIuODU3MTUiCiAgICAgICBzb2RpcG9kaTpyeD0iMTkyLjg1NzE1IgogICAgICAgc29kaXBvZGk6Y3k9IjUxOS41MDUwNyIKICAgICAgIHNvZGlwb2RpOmN4PSIxMTQ1LjcxNDIiCiAgICAgICBpZD0icGF0aDM4NjYiCiAgICAgICBzdHlsZT0iZmlsbDojZmZjYzMzO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIgogICAgICAgc29kaXBvZGk6dHlwZT0iYXJjIiAvPgogICAgPGcKICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KC0zLjE0MzU1MjksMCwwLC0zLjE0MzU1MjksMTA5MjYuMTYxLC0xMzguNDkxNjIpIgogICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtc2l6ZToxNDRweDtsaW5lLWhlaWdodDoxMjUlO2ZvbnQtZmFtaWx5OidDb2xsZWdlIFNsYWInOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J0NvbGxlZ2UgU2xhYiBCb2xkJztsZXR0ZXItc3BhY2luZzowcHg7d29yZC1zcGFjaW5nOjBweDtmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmUiCiAgICAgICBpZD0idGV4dDM4OTAiPgogICAgICA8cGF0aAogICAgICAgICBzdHlsZT0iZm9udC1mYW1pbHk6TGF0bzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidMYXRvIEJvbGQnO2ZpbGw6I2ZmZmZmZiIKICAgICAgICAgZD0ibSAyNDk0LjI4NjMsLTE5Ny41OTA3OSB2IDczLjg3MiBoIC0xNy44NTYgdiAtNzMuODcyIGggMTcuODU2IgogICAgICAgICBpZD0icGF0aDMwODkiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgICAgIDxjaXJjbGUKICAgICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIKICAgICAgICAgaWQ9InBhdGgzMDg1IgogICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgwLjMxODExMTQsMCwwLDAuMzE4MTExNCwyNDQwLjkwNjUsLTI1MS40NDcxOSkiCiAgICAgICAgIGN4PSIxMzkuNzM2NTkiCiAgICAgICAgIGN5PSIxMDEuMjg2NTIiCiAgICAgICAgIHI9IjM1LjA2NzY1NCIgLz4KICAgIDwvZz4KICA8L2c+Cjwvc3ZnPgo=");
}

.rst-content .admonition.warning code, .rst-content .admonition.caution code, .rst-content .admonition.attention code, .rst-content .admonition.important code, .rst-content .admonition-todo code {
  background: #faf2c9;
}

.rst-content .admonition.warning div[class^=highlight], .rst-content .admonition.caution div[class^=highlight], .rst-content .admonition.attention div[class^=highlight], .rst-content .admonition.important div[class^=highlight], .rst-content .admonition-todo div[class^=highlight] {
  background: #fefcf0;
  border-color: #fefcf0;
}

.rst-content .admonition.warning div[class^=highlight] pre, .rst-content .admonition.caution div[class^=highlight] pre, .rst-content .admonition.attention div[class^=highlight] pre, .rst-content .admonition.important div[class^=highlight] pre, .rst-content .admonition-todo div[class^=highlight] pre {
  background: #fefcf0;
}

.rst-content .admonition.warning a, .rst-content .admonition.caution a, .rst-content .admonition.attention a, .rst-content .admonition.important a, .rst-content .admonition-todo a {
  color: #7B6D18;
}

.rst-content .admonition.warning a:visited, .rst-content .admonition.caution a:visited, .rst-content .admonition.attention a:visited, .rst-content .admonition.important a:visited, .rst-content .admonition-todo a:visited {
  color: #590fc7;
}

/* alert */
.rst-content .admonition.danger, .rst-content .admonition.error {
  background: #ffdbdb;
}

.rst-content .admonition.danger::before, .rst-content .admonition.error::before {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiB2aWV3Qm94PSIwIDAgMjU2IDI1NiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+Cgo8ZGVmcz4KPC9kZWZzPgo8ZyBzdHlsZT0ic3Ryb2tlOiBub25lOyBzdHJva2Utd2lkdGg6IDA7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogMTA7IGZpbGw6IG5vbmU7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuNDA2NTkzNDA2NTkzNDAxNiAxLjQwNjU5MzQwNjU5MzQwMTYpIHNjYWxlKDIuODEgMi44MSkiID4KCTxwYXRoIGQ9Ik0gNDUgOTAgQyAyMC4xODcgOTAgMCA2OS44MTMgMCA0NSBDIDAgMjAuMTg3IDIwLjE4NyAwIDQ1IDAgYyAyNC44MTMgMCA0NSAyMC4xODcgNDUgNDUgQyA5MCA2OS44MTMgNjkuODEzIDkwIDQ1IDkwIHoiIHN0eWxlPSJzdHJva2U6IG5vbmU7IHN0cm9rZS13aWR0aDogMTsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1saW5lam9pbjogbWl0ZXI7IHN0cm9rZS1taXRlcmxpbWl0OiAxMDsgZmlsbDogcmdiKDI0NCw2Nyw1NCk7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0iIG1hdHJpeCgxIDAgMCAxIDAgMCkgIiBzdHJva2UtbGluZWNhcD0icm91bmQiIC8+Cgk8cGF0aCBkPSJNIDQ1IDYwLjQ3MyBjIC0yLjQ5MyAwIC00LjUxNSAtMi4wMjIgLTQuNTE1IC00LjUxNSB2IC0zNi40NCBjIDAgLTIuNDkzIDIuMDIyIC00LjUxNSA0LjUxNSAtNC41MTUgcyA0LjUxNSAyLjAyMiA0LjUxNSA0LjUxNSB2IDM2LjQ0IEMgNDkuNTE1IDU4LjQ1MSA0Ny40OTMgNjAuNDczIDQ1IDYwLjQ3MyB6IiBzdHlsZT0ic3Ryb2tlOiBub25lOyBzdHJva2Utd2lkdGg6IDE7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogMTA7IGZpbGw6IHJnYigyNTUsMjU1LDI1NSk7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0iIG1hdHJpeCgxIDAgMCAxIDAgMCkgIiBzdHJva2UtbGluZWNhcD0icm91bmQiIC8+Cgk8cGF0aCBkPSJNIDQ1IDc1LjAwMyBjIC0xLjE4NiAwIC0yLjM0OCAtMC40ODYgLTMuMTk1IC0xLjMzMyBjIC0wLjIwMyAtMC4yMDMgLTAuMzk1IC0wLjQ0IC0wLjU2NCAtMC42NzcgYyAtMC4xNTggLTAuMjQ4IC0wLjI5NCAtMC41MDggLTAuNDA2IC0wLjc5IGMgLTAuMTEzIC0wLjI3MSAtMC4yMDMgLTAuNTUzIC0wLjI2IC0wLjgzNiBjIC0wLjA1NiAtMC4yOTMgLTAuMDkgLTAuNTg2IC0wLjA5IC0wLjg4IGMgMCAtMS4xOTcgMC40ODUgLTIuMzU5IDEuMzIxIC0zLjE5NSBjIDAuMjE0IC0wLjIxNSAwLjQ0IC0wLjQwNyAwLjY4OCAtMC41NjQgYyAwLjI0OSAtMC4xNyAwLjUwOCAtMC4zMDUgMC43NzkgLTAuNDE4IGMgMC4yNzEgLTAuMTEyIDAuNTUzIC0wLjIwMyAwLjg0NyAtMC4yNiBjIDAuNTc2IC0wLjExMiAxLjE4NiAtMC4xMTIgMS43NjEgMCBjIDAuMjk0IDAuMDU3IDAuNTc2IDAuMTQ4IDAuODQ3IDAuMjYgYyAwLjI3IDAuMTEyIDAuNTMgMC4yNDggMC43NzggMC40MTggYyAwLjI0OCAwLjE1OCAwLjQ3NCAwLjM0OSAwLjY4OSAwLjU2NCBjIDAuODM0IDAuODM2IDEuMzIxIDEuOTk3IDEuMzIxIDMuMTk1IGMgMCAxLjE4NSAtMC40ODYgMi4zNDggLTEuMzIxIDMuMTgyIGMgLTAuMjE1IDAuMjE1IC0wLjQ0MSAwLjQwNyAtMC42ODkgMC41NjQgYyAtMC4yNDggMC4xNTkgLTAuNTA4IDAuMzA1IC0wLjc3OCAwLjQxOCBjIC0wLjI3MSAwLjExNCAtMC41NTMgMC4yMDQgLTAuODQ3IDAuMjYgQyA0NS41ODcgNzQuOTY5IDQ1LjI5MyA3NS4wMDMgNDUgNzUuMDAzIHoiIHN0eWxlPSJzdHJva2U6IG5vbmU7IHN0cm9rZS13aWR0aDogMTsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1saW5lam9pbjogbWl0ZXI7IHN0cm9rZS1taXRlcmxpbWl0OiAxMDsgZmlsbDogcmdiKDI1NSwyNTUsMjU1KTsgZmlsbC1ydWxlOiBub256ZXJvOyBvcGFjaXR5OiAxOyIgdHJhbnNmb3JtPSIgbWF0cml4KDEgMCAwIDEgMCAwKSAiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgLz4KPC9nPgo8L3N2Zz4=");
}

.rst-content .admonition.danger code, .rst-content .admonition.error code {
  background: #fdc0c0;
}

.rst-content .admonition.danger div[class^=highlight], .rst-content .admonition.error div[class^=highlight] {
  background: #ffeded;
  border-color: #ffeded;
}

.rst-content .admonition.danger div[class^=highlight] pre, .rst-content .admonition.error div[class^=highlight] pre {
  background: #ffeded;
}

.rst-content .admonition.danger a, .rst-content .admonition.error a {
  color: #AC1B1B;
}

.rst-content .admonition.danger a:visited, .rst-content .admonition.error a:visited {
  color: #590fc7;
}

/* -------------------------------------------------------------------- 表 */

/* 縞を落とす。行の区別は罫線が持つ */
.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,
.rst-content .wy-table-odd td,
.rst-content .wy-table-striped tr:nth-child(2n-1) td {
  background-color: transparent;
}

.rst-content table.docutils {
  border-color: #ccc;
}

.rst-content table.docutils td,
html.writer-html5 .rst-content table.docutils th {
  padding: 8px 10px;
  border: 1px solid #ccc;
  font-size: 13px;
  /* 表は行として並ぶものなので 1.4。docutils が表を blockquote で包むことがあり、
     本文の 1.75 がそこから降りてくる */
  line-height: 1.4;
}

/* テーマは見出しの行だけ 2px で引く。ブログは全部の罫線が同じ太さ。
   th はテーマが html.writer-html5 付きで色を持っているので、こちらも同じ形で書く */
html.writer-html5 .rst-content table.docutils thead th {
  border-bottom: 1px solid #ccc;
  background-color: #f5f5f5;
  font-weight: 700;
}

/* セルの中の段落はテーマが .9rem / 行間 1rem を当てている */
html.writer-html5 .rst-content table.docutils td > p,
html.writer-html5 .rst-content table.docutils th > p {
  font-size: inherit;
  line-height: 1.4;
}

/* ------------------------------------------------------------ リンク */

/* 地の文のリンク。テーマの #2980b9 は白地で 4.30 と AA を割る。
   色だけでは地の文と 3:1 に届かない（2.24）ので、静止でも下線を持つ */
.rst-content section p a,
.rst-content section li a,
.rst-content section td a,
.rst-content table.docutils td a {
  color: #0072E5;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 2px;
}

.rst-content section p a:visited,
.rst-content section li a:visited,
.rst-content section td a:visited {
  color: #590fc7;
}

/* 静止で下線を持つぶん、反応は線の太さで返す */
.rst-content section p a:hover,
.rst-content section li a:hover,
.rst-content section td a:hover {
  color: #0072E5;
  text-decoration-thickness: 2px;
}

/* 一覧（章立て）は地の文ではないので、静止では下線を持たず hover で出す。
   脚注の番号と戻りは上付きの数字と記号で地の文に紛れない */
.rst-content .toctree-wrapper li a,
.rst-content a.footnote-reference,
.rst-content aside.footnote a.fn-backref {
  text-decoration: none;
}

.rst-content .toctree-wrapper li a:hover {
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 2px;
}

/* ------------------------------------------ レイアウトの部品 */

/* 現在地の表し方。テーマは現在の枝だけ明るいグレー（#e3e3e3）、その中の
   ページは白（#fcfcfc）、さらに深い枝は #c9c9c9 と、暗い地の上に3段の
   明るい面が積み上がる。暗い地のまま白を薄く重ねる形に替える */
.wy-menu-vertical li.current,
.wy-menu-vertical li.toctree-l2.current,
.wy-menu-vertical li.toctree-l3.current {
  background: rgba(255, 255, 255, 0.06);
}

.wy-menu-vertical li.current > a,
.wy-menu-vertical li.toctree-l2.current > a,
.wy-menu-vertical li.toctree-l3.current > a,
.wy-menu-vertical li.current a:hover,
.wy-menu-vertical li a:hover {
  border: 0;
  background: transparent;
  color: #fff;
}

.wy-menu-vertical li a:hover {
  background: rgba(255, 255, 255, 0.09);
}

/* 深い枝にもテーマが明るい地を当てている（l3 に #c9c9c9、l4 に #bdbdbd）。
   こちらの文字は明るいので、残ると明るい地の上に明るい文字になって読めない */
.wy-menu-vertical li.toctree-l2.current li.toctree-l3 > a,
.wy-menu-vertical li.toctree-l3.current li.toctree-l4 > a,
.wy-menu-vertical li.current a {
  background: transparent;
  border-right: 0;
}

/* いま開いているページの行だけ一段持ち上げる */
.wy-menu-vertical li.current > a.current,
.wy-menu-vertical a.current {
  background: rgba(255, 255, 255, 0.13);
  color: #fff;
  font-weight: 700;
}

/* 枝の中の行の文字。テーマは明るい面に載る前提で #404040 にしている */
.wy-menu-vertical li.current a,
.wy-menu-vertical li.toctree-l2 a,
.wy-menu-vertical li.toctree-l3 a,
.wy-menu-vertical li.toctree-l4 a {
  color: #d9d9d9;
}

/* 開閉の三角も面に合わせる */
.wy-menu-vertical li.current > a button.toctree-expand,
.wy-menu-vertical li.on a button.toctree-expand,
.wy-menu-vertical li button.toctree-expand {
  color: #9b9b9b;
}

/* 章のラベル（「TypeScriptの書き方」など）。テーマは水色（#55a5d9）で、
   押せない見出しなのにリンクに見える。項目（#d9d9d9・14.4px）より弱い
   灰と一段小さい字で、押せるものと分ける */
.wy-menu-vertical p.caption,
.wy-menu-vertical p.caption .caption-text {
  color: #9b9b9b;
  font-size: 12px;
}

/* 枝の見出し（章のラベル）は地を持たない */
.wy-menu-vertical li.toctree-l1.current > a {
  border-top: 0;
  border-bottom: 0;
}


/* 所在の目印。テーマは部品ごとにばらばらで、リンクは UA のリング、
   ボタンは 4px の -webkit-focus-ring-color、入力欄は outline: none（＝目印が無い）。
   所在の目印は1つなので、サイト全体を 2px のネイビーにそろえる */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible,
[tabindex]:not([tabindex="-1"]):focus-visible {
  outline: 2px solid #0a1461;
  outline-offset: 2px;
}

/* 暗い地の上ではネイビーが沈む（左のナビとスキップリンクの板で 1.05）ので、
   白の輪郭に替える。反応の色とは別に保つため、差し色ではなく無彩色の最上段 */
.wy-nav-side a:focus-visible,
.wy-nav-side button:focus-visible,
.wy-nav-side input:focus-visible,
.skip-link:focus-visible {
  outline-color: #fff;
}

/* 着地点そのものには輪郭を出さない。本文全体が囲まれても所在は分からない */
#main-content:focus,
#main-content:focus-visible {
  outline: none;
}

/* キーボードの入口。Tab の起点はブラウザが持っていて、ホイールで送っただけでは
   動かない。そのため読者がどこを見ていても Tab は左のナビの先頭に入り、
   本文まで 34 回かかっていた。
   position: fixed にする——絶対配置だと、押される前にブラウザがページを先頭まで
   送ってしまい、読んでいた位置を失う */
.skip-link {
  position: fixed;
  top: 8px;
  left: 8px;
  z-index: 1000;
  padding: 10px 16px;
  border-radius: 4px;
  background-color: #0a1461;
  color: #fff;
  font-size: 14px;
  text-decoration: none;
  transform: translateY(-200%);
}

.skip-link:focus {
  transform: translateY(0);
  color: #fff;
  text-decoration: none;
}

/* フッターの添え。テーマの grey (#808080) は白地で 3.54 しかなく AA を割る */
.rst-content footer,
.rst-content footer div[role=contentinfo] p {
  color: #616161;
  font-size: 12px;
}

.rst-content footer div[role=contentinfo] p {
  line-height: 1.4;
  margin-bottom: 8px;
}

/* テーマの clearfix（幅100%の display:table）が flex アイテムになって
   場所を取るので消す */
.rst-footer-buttons::before,
.rst-footer-buttons::after {
  content: none;
}

/* 枠で囲って2つに割る。テーマ既定は灰色のボタンが左右に浮いている形 */
.rst-footer-buttons {
  display: flex;
  margin: 40px 0 24px;
  border: 1px solid #ddd;
  border-radius: 8px;
  overflow: hidden;
}

/* 地と文字色はテーマが .btn-neutral に !important を付けているので、こちらも付ける */
.rst-footer-buttons .btn {
  flex: 1 1 0;
  min-width: 0;
  display: block;
  /* px で書く。日本語ラベルの案では font-size を 0 にするので、em だと余白ごと潰れる */
  padding: 10px 12px;
  background: none !important;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  color: #616161 !important;
  font-family: inherit;
  font-size: 12px;
  font-weight: 400;
  line-height: 1.4;
  text-align: left;
  text-shadow: none;
  white-space: normal;
}

.rst-footer-buttons .btn[rel=next] {
  text-align: right;
  border-left: 1px solid #ecebeb;
}

/* 行き先の名前。テーマは title 属性に入れているだけで画面に出していない */
.rst-footer-buttons .btn::after {
  content: attr(title);
  display: block;
  margin-top: 0.2em;
  color: #424242;
  font-size: 16px;
  line-height: 1.4;
}

/* 面が変わることで押せると分かるので、文字色は動かさない。
   テーマの :hover は緑（#2cc36b）に塗る */
.rst-footer-buttons .btn:hover,
.rst-footer-buttons .btn:focus {
  background: #eee !important;
  color: #616161 !important;
  text-decoration: none;
}

.rst-footer-buttons .btn:visited {
  color: #616161 !important;
}

.rst-footer-buttons .btn:active {
  padding: 10px 12px;
  box-shadow: none;
}

/* 矢印は方向のラベルの側で持つ */
.rst-footer-buttons .btn .fa {
  display: none;
}

/* 「Previous」「Next」を隠し、日本語の方向ラベルを出す */
.rst-footer-buttons .btn {
  font-size: 0;
}

.rst-footer-buttons .btn::before {
  font-size: 12px;
}

.rst-footer-buttons .btn[rel=prev]::before {
  content: '‹ 前のページ';
}

.rst-footer-buttons .btn[rel=next]::before {
  content: '次のページ ›';
}
