* {
  box-sizing: border-box;
  margin: 0; padding: 0;
  font-family: "Lato", "Noto Sans CJK JP", sans-serif;
  font-size: 18px;
  line-height: 1.5rem;
}

/*:root { --filter: invert(0) }
html.invert { --filter: invert(1) }
@media (prefers-color-scheme: dark) {
  :root { --filter: invert(1) }
  html.invert { --filter: invert(0) }
}

html, pre.hljs, img:not(.emoji):not([alt^=Diagram]),
#like-post.liked, #like-post:hover,
#end, .emoji-container { filter: var(--filter) }
*/

html {
  --page-bg: #fff;
  --text-color: #000d;
  --link-color: #1d73c9;
  --icon-color: #bbb;
  --icon-hover-color: var(--link-color);
  --text-subtle-color: #999;
  --redacted-bg: #444;
  --code-bg: #f4f4f4;
  --code-inline-bg: #eee;
  --code-line-num: #0006;
  --kbd-bg: #eee;
  --kbd-border: #ccc;
  --kbd-shadow: #ddd;
  --divider-color: rgba(0,0,0,.2);
  --end-marker-color: #ab4642;
}
html.invert {
  --page-bg: #000;
  --text-color: #fffd;
  --link-color: #7ea2ce;
  --icon-color: #444;
  --text-subtle-color: #888;
  --redacted-bg: #333;
  --code-bg: #111;
  --code-inline-bg: #282828;
  --code-line-num: #585858;
  --kbd-bg: #111;
  --kbd-border: #444;
  --kbd-shadow: #333;
  --divider-color: rgba(255,255,255,.2);
}
@media (prefers-color-scheme: dark) {
  html {
    --page-bg: #000;
    --text-color: #fffd;
    --link-color: #7ea2ce;
    --icon-color: #444;
    --text-subtle-color: #888;
    --redacted-bg: #333;
    --code-bg: #111;
    --code-inline-bg: #282828;
    --code-line-num: #585858;
    --kbd-bg: #111;
    --kbd-border: #444;
    --kbd-shadow: #333;
    --divider-color: rgba(255,255,255,.2);
  }
  html.invert {
    --page-bg: #fff;
    --text-color: #000d;
    --link-color: #1d73c9;
    --icon-color: #bbb;
    --text-subtle-color: #999;
    --redacted-bg: #444;
    --code-bg: #f4f4f4;
    --code-inline-bg: #eee;
    --code-line-num: #0006;
    --kbd-bg: #eee;
    --kbd-border: #ccc;
    --kbd-shadow: #ddd;
    --divider-color: rgba(0,0,0,.2);
  }
}

.hljs-emphasis{font-style:italic}

html:not(.invert) {
  /* Highlight.js - A11y Light */
  & .hljs{background:#f7f7f7;color:#545454}
  & .hljs-comment,& .hljs-quote{color:#696969}
  & .hljs-deletion,& .hljs-name,& .hljs-regexp,& .hljs-selector-class,& .hljs-selector-id,& .hljs-tag,& .hljs-template-variable,& .hljs-variable{color:#d91e18}
  & .hljs-attribute,& .hljs-built_in,& .hljs-link,& .hljs-literal,& .hljs-meta,& .hljs-number,& .hljs-params,& .hljs-type{color:#aa5d00}
  & .hljs-addition,& .hljs-bullet,& .hljs-string,& .hljs-symbol{color:green}
  & .hljs-section,& .hljs-title{color:#007faa}
  & .hljs-keyword,& .hljs-selector-tag{color:#7928a1}
  & .hljs-strong{font-weight:700}
}

@media screen and (-ms-high-contrast:active){.hljs-addition,.hljs-attribute,.hljs-built_in,.hljs-bullet,.hljs-comment,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-params,.hljs-quote,.hljs-string,.hljs-symbol,.hljs-type{color:highlight}.hljs-keyword,.hljs-selector-tag{font-weight:700}}

html.invert {
  /* Highlight.js - Base16 Default Dark */
  & .hljs{color:#d8d8d8;background:#111}
  & .hljs ::selection,& .hljs::selection{background-color:#383838;color:#d8d8d8}
  & .hljs-comment{color:#585858}
  & .hljs-tag{color:#b8b8b8}
  & .hljs-operator,& .hljs-punctuation,& .hljs-subst{color:#d8d8d8}
  & .hljs-operator{opacity:.7}
  & .hljs-bullet,& .hljs-deletion,& .hljs-name,& .hljs-selector-tag,& .hljs-template-variable,& .hljs-variable{color:#ab4642}
  & .hljs-attr,& .hljs-link,& .hljs-literal,& .hljs-number,& .hljs-symbol,& .hljs-variable.constant_{color:#dc9656}
  & .hljs-class .hljs-title,& .hljs-title,& .hljs-title.class_{color:#f7ca88}
  & .hljs-strong{font-weight:700;color:#f7ca88}
  & .hljs-addition,& .hljs-code,& .hljs-string,& .hljs-title.class_.inherited__{color:#a1b56c}
  & .hljs-built_in,& .hljs-doctag,& .hljs-keyword.hljs-atrule,& .hljs-quote,& .hljs-regexp{color:#86c1b9}
  & .hljs-attribute,& .hljs-function .hljs-title,& .hljs-section,& .hljs-title.function_,& .ruby .hljs-property{color:#7cafc2}
  & .diff .hljs-meta,& .hljs-keyword,& .hljs-template-tag,& .hljs-type{color:#ba8baf}
  & .hljs-emphasis{color:#ba8baf}
  & .hljs-meta,& .hljs-meta .hljs-keyword,& .hljs-meta .hljs-string{color:#a16946}
  & .hljs-meta .hljs-keyword,& .hljs-meta-keyword{font-weight:700}
}

@media (prefers-color-scheme: dark) {
  html:not(.invert) {
    /* Highlight.js - Base16 Default Dark */
    & .hljs{color:#d8d8d8;background:#111}
    & .hljs ::selection,& .hljs::selection{background-color:#383838;color:#d8d8d8}
    & .hljs-comment{color:#585858}
    & .hljs-tag{color:#b8b8b8}
    & .hljs-operator,& .hljs-punctuation,& .hljs-subst{color:#d8d8d8}
    & .hljs-operator{opacity:.7}
    & .hljs-bullet,& .hljs-deletion,& .hljs-name,& .hljs-selector-tag,& .hljs-template-variable,& .hljs-variable{color:#ab4642}
    & .hljs-attr,& .hljs-link,& .hljs-literal,& .hljs-number,& .hljs-symbol,& .hljs-variable.constant_{color:#dc9656}
    & .hljs-class .hljs-title,& .hljs-title,& .hljs-title.class_{color:#f7ca88}
    & .hljs-strong{font-weight:700;color:#f7ca88}
    & .hljs-addition,& .hljs-code,& .hljs-string,& .hljs-title.class_.inherited__{color:#a1b56c}
    & .hljs-built_in,& .hljs-doctag,& .hljs-keyword.hljs-atrule,& .hljs-quote,& .hljs-regexp{color:#86c1b9}
    & .hljs-attribute,& .hljs-function .hljs-title,& .hljs-section,& .hljs-title.function_,& .ruby .hljs-property{color:#7cafc2}
    & .diff .hljs-meta,& .hljs-keyword,& .hljs-template-tag,& .hljs-type{color:#ba8baf}
    & .hljs-emphasis{color:#ba8baf}
    & .hljs-meta,& .hljs-meta .hljs-keyword,& .hljs-meta .hljs-string{color:#a16946}
    & .hljs-meta .hljs-keyword,& .hljs-meta-keyword{font-weight:700}
  }
  html.invert {
    /* Highlight.js - A11y Light */
    & .hljs{background:#f7f7f7;color:#545454}
    & .hljs-comment,& .hljs-quote{color:#696969}
    & .hljs-deletion,& .hljs-name,& .hljs-regexp,& .hljs-selector-class,& .hljs-selector-id,& .hljs-tag,& .hljs-template-variable,& .hljs-variable{color:#d91e18}
    & .hljs-attribute,& .hljs-built_in,& .hljs-link,& .hljs-literal,& .hljs-meta,& .hljs-number,& .hljs-params,& .hljs-type{color:#aa5d00}
    & .hljs-addition,& .hljs-bullet,& .hljs-string,& .hljs-symbol{color:green}
    & .hljs-section,& .hljs-title{color:#007faa}
    & .hljs-keyword,& .hljs-selector-tag{color:#7928a1}
    & .hljs-strong{font-weight:700}
  }
}

html {
  background: #fff;
  background: var(--page-bg);
  color: #000d;
  color: var(--text-color);
  height: 100%;
  overflow-x: hidden;
}

#logo {
  float: left;
  width: 1.7rem;
  margin: 0.94rem 0 0 -2rem;
}

@media (max-width: 42rem) {
  #logo { margin-left: -1.9rem; }
}

#invert {
  float: right;
  margin: 1.34rem 0 0 .5rem;
  height: 1rem;
  width: 1rem;
  background: #bbb;
  background: var(--icon-color);
  border-radius: 1rem;
  cursor: pointer;
}
#invert:hover {
  background: #1d73c9;
  background: var(--icon-hover-color);
}
#invert::before {
  content: "";
  display: block;
  height: 2rem;
  width: 2rem;
  position: relative;
  left: -.5rem;
  top: -.5rem;
  border-radius: 1rem;
}

@media (max-width: 474px) {
  #title-btns {
    display: block;
    position: absolute;
    top: calc(2vw + 2.6rem);
    right: 1.6rem;
    padding-left: .6rem;
    background: #fff;
    background: var(--page-bg);
  }
  h1 {
    margin: .9rem 0 1rem !important;
    line-height: 1.8rem;
  }
}

#feed, #message-me {
  box-sizing: content-box;
  display: inline-block;
  position: relative;
  height: 1rem;
  width: 1rem;
  margin: -.6rem 0;
  vertical-align: -.05rem;
  background: #fff;
  background: var(--page-bg);
  overflow: hidden;
  outline: 0;
  border: .6rem solid transparent;
  -webkit-tap-highlight-color: transparent;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
#feed {
  margin-left: .15rem;
  border-right-width: .4rem;
}
#message-me { border-left-width: .4rem; }
#feed::before,
#message-me::before,
#message-me::after {
  content: "";
  display: block;
  position: absolute;
  left: 0;
}
#feed::before {
  height: .8rem;
  width: .8rem;
  bottom: 0;
  transform: translate(-50%,50%);
  border-radius: 100%;
  background: #bbb;
  background: var(--icon-color);
  box-shadow: 0 0 0 .3rem #fff, 0 0 0 .6rem #bbb;
  box-shadow: 0 0 0 .3rem var(--page-bg), 0 0 0 .6rem var(--icon-color);
}
#feed:hover::before {
  background: #1d73c9;
  background: var(--icon-hover-color);
  box-shadow: 0 0 0 .3rem #fff, 0 0 0 .6rem #1d73c9;
  box-shadow: 0 0 0 .3rem var(--page-bg), 0 0 0 .6rem var(--icon-hover-color);
}
#message-me::before {
  background: #bbb;
  background: var(--icon-color);
  height: .75rem;
  width: 1rem;
}
#message-me::after {
  height: 0;
  width: .1rem;
  border-top: .4rem solid #bbb;
  border-top: .4rem solid var(--icon-color);
  border-right: .6rem solid transparent;
  bottom: 0;
}
#message-me:hover::before {
  background: #1d73c9;
  background: var(--icon-hover-color);
}
#message-me:hover::after {
  border-top-color: #1d73c9;
  border-top-color: var(--icon-hover-color);
}

body {
  position: relative;
  min-height: 100%;
  overflow-x: hidden;
}

main {
  position: relative;
  max-width: 36rem;
  margin: 0 auto;
  padding: calc(2vw + .7rem) 2.2rem;
}

main * { margin: 1rem 0 }

h1, h1 * { font-size: 26px }
h2, h2 * { font-size: 22px }

p.post-date {
  margin: -1rem 0 -.2rem;
}
p.post-date * {
  font-size: 15px;
  color: #999;
  color: var(--text-subtle-color);
}

[lang=jbo], [lang=jbo] * {
  font-family: "crisa", "Lato", sans-serif;
  font-size: 19px;
}

[lang=jpn], [lang=jpn] * { font-size: 17px }
rt { margin: 0; font-size: 8px !important }

.header-anchor {
  float: left;
  display: inline-block;
  margin: 0 0 0 -1rem;
  font-weight: normal;
}

summary {
  margin-bottom: 0;
  cursor: pointer;
}

details > summary { list-style: none }
details > summary::-webkit-details-marker { display: none }

summary::before {
  content: "";
  display: block;
  height: 0;
  width: 0;
  border: .4rem solid transparent;
  border-left: .7rem solid #bbb;
  border-left: .7rem solid var(--icon-color);
  border-right-width: 0;
  float: left;
  margin: .35rem 0 0 -1.2rem;
}

summary:hover::before {
  border-left-color: #1d73c9;
  border-left-color: var(--icon-hover-color);
}

details[open] > summary::before {
  border: .4rem solid transparent;
  border-top: .7rem solid #bbb;
  border-top: .7rem solid var(--icon-color);
  border-bottom-width: 0;
  margin: .4rem 0 0 -1.3rem;
}

details[open] > summary:hover::before {
  border-top-color: #1d73c9;
  border-top-color: var(--icon-hover-color);
}

blockquote {
  padding-left: 1.2rem;
  box-shadow: 2px 0 0 rgba(0,0,0,.2) inset;
  box-shadow: 2px 0 0 var(--divider-color) inset;
}

ul ul, ul ol, ol ul, ol ol, li {
  margin: .4rem 0;
  padding: revert;
}

li p:first-child {
  margin-top: .4rem;
}

li p:last-child {
  margin-bottom: .4rem;
}

ol > li:first-child:nth-last-child(n+10),
ol > li:first-child:nth-last-child(n+10) ~ li {
  list-style-type: decimal-leading-zero;
}

hr {
  border: 0;
  border-top: .5px solid rgba(0,0,0,.2);
  border-top: .5px solid var(--divider-color);
}

img:not(.emoji) {
  display: block;
  max-width: 100%;
  margin: 1.5rem 0;
}

img.emoji {
  height: 1rem;
  width: 1rem;
  margin: 0 .05rem 0 .1rem;
  vertical-align: -.1rem;
}

img.hero {
  display: block;
  width: 100vw;
  max-width: none;
  margin: 2rem calc(50% - 50vw);
}

a {
  text-decoration: none;
  color: #1d73c9;
  color: var(--link-color);
}
a:hover, a:hover *, ins * { text-decoration: underline }
/*a:visited { color: #955eba }
a:active { color: #ab4642 }*/

.irc { padding-left: 1.8rem }
.irc > p { text-indent: -1.8rem }
.irc * {
  margin: 0;
  text-indent: 0;
}

mark {
  color: transparent;
  background: #444;
  background: var(--redacted-bg);
}
mark:hover {
  color: #000d;
  color: var(--text-color);
  background: transparent;
}

mark:not(:hover) code,
mark:not(:hover) .emoji { opacity: 0 }

code {
  margin: 0 .2rem;
  white-space: nowrap;
  line-height: 1;
}

p code {
  background: #f4f4f4;
  background: var(--code-inline-bg);
  box-shadow:
     .2rem  .08rem #f4f4f4,
     .2rem -.08rem #f4f4f4,
    -.2rem  .08rem #f4f4f4,
    -.2rem -.08rem #f4f4f4;
  box-shadow:
     .2rem  .08rem var(--code-inline-bg),
     .2rem -.08rem var(--code-inline-bg),
    -.2rem  .08rem var(--code-inline-bg),
    -.2rem -.08rem var(--code-inline-bg);
}

p code, p code * {
  font-family: "Hack", monospace;
  font-size: 16px;
}

pre, pre * {
  font-family: "Hack", monospace;
  font-size: 15px;
  line-height: 1.4em;
}

pre code {
  position: relative;
  display: block;
  margin: 0 auto;
  padding: 0.8rem 2rem;
  max-width: 35.6rem;
  min-width: fit-content;
  background: transparent;
  white-space: inherit;
  box-shadow: none;
}

/*pre.hljs:hover code {
  box-shadow: -.5px 0 #fff6;
}*/

pre .code-line {
  margin: 0;
  padding: 0;
  display: inline-block;
}
pre .code-line::before {
  content: attr(data-line-number);
  display: inline-block;
  width: 8rem;
  text-align: right;
  position: absolute;
  margin-left: -8.7rem;
  color: transparent;
}

pre:hover .code-line::before {
  color: #0006;
  color: var(--code-line-num);
}

pre .code-line::after {
  content: "\200B";
}

pre {
  margin: 1em -100%; /* old browsers fallback */
  margin: 1rem calc(50% - 50vw);
  background: #f4f4f4;
  background: var(--code-bg);
  overflow-x: auto;
}

pre.hljs {
  padding: 0 1rem;
}

kbd {
  background: #eee;
  background: var(--kbd-bg);
  margin: 0 .1rem;
  padding: .05rem .35rem;
  vertical-align: .07rem;
  font-family: "Hack", monospace;
  font-size: 15px;
  border: 1px solid #ccc;
  border: 1px solid var(--kbd-border);
  border-radius: .3rem;
  box-shadow: 0 2px 0 #ddd;
  box-shadow: 0 2px 0 var(--kbd-shadow);
  white-space: nowrap;
}

.footnote-ref, .footnote-ref * {
  margin: 0;
  font-size: 12px;
}

.footnote-ref {
  display: inline-block;
  margin-top: -.2rem;
}

.post-list .footnote-ref {
  display: none;
}

.footnote-backref:not(:hover) {
  opacity: .6;
}

#tags { word-spacing: .5rem; }
.tag { white-space: nowrap; }

nav {
  position: relative;
  margin-bottom: 0;
  border-top: .5px solid rgba(0,0,0,.2);
  border-top: .5px solid var(--divider-color);
  padding-top: 1rem;
}
nav::after {
  content: "";
  display: block;
  clear: both;
}

nav a:not(:hover) {
  color: #999;
  color: var(--text-subtle-color);
}

#up, #back, #next, #prev, #first, #last { display: block }
#next, #prev, #first, #last, #end { width: 40% }
#first, #last { position: relative }

#up {
  margin: 0 0 0 -.2rem;
  position: absolute;
  top: 2vw;
}

#back {
  float: left;
  margin: .9rem 0 0 -1.8rem;
  padding: .5rem;
}

#up::after, #back::after {
  content: "";
  display: block;
  height: 0;
  width: 0;
  border: .4rem solid transparent;
}

#up::after {
  margin: .6rem 1.5rem .6rem .3rem;
  border-bottom: .7rem solid #bbb;
  border-bottom: .7rem solid var(--icon-color);
  border-top-width: 0;
}

#back::after {
  border-right: .7rem solid #bbb;
  border-right: .7rem solid var(--icon-color);
  border-left-width: 0;
}

#up:hover::after {
  border-bottom-color: #1d73c9;
  border-bottom-color: var(--link-color);
}
#back:hover::after {
  border-right-color: #1d73c9;
  border-right-color: var(--link-color);
}

#next, #last, #end {
  float: right;
  margin: 0 -1.2rem 0 0;
  text-align: right;
}

#next + #last { margin: 2rem -40% 0 0 }
#first { margin: .5rem 0 0 -1.2rem }
#prev { margin: 0 0 .5rem -1.2rem }

#next::after {
  content: "";
  display: inline-block;
  height: 0;
  width: 0;
  margin-left: .5rem;
  border: .4rem solid transparent;
  border-left: .7rem solid #bbb;
  border-left: .7rem solid var(--icon-color);
  border-right-width: 0;
  vertical-align: -.05rem;
}
#next:hover::after { border-left-color: currentColor }

#last::after {
  content: "";
  display: inline-block;
  height: 0;
  width: 0;
  margin: 0 .1rem 0 .5rem;
  border: .4rem solid transparent;
  border-left: .6rem solid #bbb;
  border-left: .6rem solid var(--icon-color);
  border-right-width: 0;
  vertical-align: -.05rem;
}
#last::before {
  content: "";
  display: inline-block;
  position: absolute;
  right: 0;
  top: .37rem;
  height: .8rem;
  width: .15rem;
  background: #bbb;
  background: var(--icon-color);
}
#last:hover::after { border-left-color: currentColor }
#last:hover::before { background: currentColor }

#first::before {
  content: "";
  display: inline-block;
  height: 0;
  width: 0;
  margin: 0 .5rem 0 .1rem;
  border: .4rem solid transparent;
  border-right: .6rem solid #bbb;
  border-right: .6rem solid var(--icon-color);
  border-left-width: 0;
  vertical-align: -.05rem;
}
#first::after {
  content: "";
  display: inline-block;
  position: absolute;
  left: 0;
  top: .37rem;
  height: .8rem;
  width: .15rem;
  background: #bbb;
  background: var(--icon-color);
}
#first:hover::before { border-right-color: currentColor }
#first:hover::after { background: currentColor }

#prev::before {
  content: "";
  display: inline-block;
  height: 0;
  width: 0;
  margin-right: .5rem;
  border: .4rem solid transparent;
  border-right: .7rem solid #bbb;
  border-right: .7rem solid var(--icon-color);
  border-left-width: 0;
  vertical-align: -.05rem;
}
#prev:hover::before { border-right-color: currentColor }

#end { padding: 0 1.2rem .5rem 0 }
#end::after {
  content: "";
  display: block;
  float: right;
  margin: .35rem .1rem 0 .2rem;
  height: .8rem;
  width: .8rem;
  transform: rotate(45deg);
  box-shadow: 0 0 0 .24rem #ab4642 inset;
  box-shadow: 0 0 0 .24rem var(--end-marker-color) inset;
}

#like-post {
  display: block;
  position: relative;
  height: 2.3rem;
  width: 2.3rem;
  margin: -.35rem auto -1.95em;
  padding: .9rem .85rem;
  text-align: center;
  -webkit-tap-highlight-color: transparent;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  cursor: pointer;
}
#like-post span {
  margin: 0;
  position: relative;
  transform: rotate(45deg);
  filter: drop-shadow(0 0px 0 #955ebaff);
  transition: filter 0s;
}
#like-post.like-anim span {
  filter: drop-shadow(-11px -11px 2px #955eba00);
  transition: filter .7s ease-out;
}
#like-post span, #like-post span::before, #like-post span::after {
  display: block;
  height: .6rem;
  width: .6rem;
  background: #bbb;
  background: var(--icon-color);
}
#like-post.liked span, #like-post.liked span::before, #like-post.liked span::after,
#like-post:hover span, #like-post:hover span::before, #like-post:hover span::after {
  background: #955eba;
}
#like-post span::before, #like-post span::after {
  content: "";
  position: absolute;
  border-radius: .5rem;
}
#like-post span::before { top: -.3rem; }
#like-post span::after { left: -.3rem; }
