/* Tokyo Night Dark theme symbol colors */
[data-md-color-scheme="tokyo-night"] {
  --doc-symbol-parameter-fg-color: #f7768e;
  --doc-symbol-type_parameter-fg-color: #f7768e;
  --doc-symbol-attribute-fg-color: #e0af68;
  --doc-symbol-function-fg-color: #bb9af7;
  --doc-symbol-method-fg-color: #bb9af7;
  --doc-symbol-class-fg-color: #7aa2f7;
  --doc-symbol-type_alias-fg-color: #7aa2f7;
  --doc-symbol-module-fg-color: #9ece6a;

  --doc-symbol-parameter-bg-color: rgba(247, 118, 142, 0.1);
  --doc-symbol-type_parameter-bg-color: rgba(247, 118, 142, 0.1);
  --doc-symbol-attribute-bg-color: rgba(224, 175, 104, 0.1);
  --doc-symbol-function-bg-color: rgba(187, 154, 247, 0.1);
  --doc-symbol-method-bg-color: rgba(187, 154, 247, 0.1);
  --doc-symbol-class-bg-color: rgba(122, 162, 247, 0.1);
  --doc-symbol-type_alias-bg-color: rgba(122, 162, 247, 0.1);
  --doc-symbol-module-bg-color: rgba(158, 206, 106, 0.1);
}

/* Tokyo Night Light theme symbol colors */
[data-md-color-scheme="tokyo-night-light"] {
  --doc-symbol-parameter-fg-color: #8c4351;
  --doc-symbol-type_parameter-fg-color: #8c4351;
  --doc-symbol-attribute-fg-color: #8f5e15;
  --doc-symbol-function-fg-color: #5a3e8e;
  --doc-symbol-method-fg-color: #5a3e8e;
  --doc-symbol-class-fg-color: #2959aa;
  --doc-symbol-type_alias-fg-color: #2959aa;
  --doc-symbol-module-fg-color: #385f0d;

  --doc-symbol-parameter-bg-color: rgba(140, 67, 81, 0.1);
  --doc-symbol-type_parameter-bg-color: rgba(140, 67, 81, 0.1);
  --doc-symbol-attribute-bg-color: rgba(143, 94, 21, 0.1);
  --doc-symbol-function-bg-color: rgba(90, 62, 142, 0.1);
  --doc-symbol-method-bg-color: rgba(90, 62, 142, 0.1);
  --doc-symbol-class-bg-color: rgba(41, 89, 170, 0.1);
  --doc-symbol-type_alias-bg-color: rgba(41, 89, 170, 0.1);
  --doc-symbol-module-bg-color: rgba(56, 95, 13, 0.1);
}

/* General mkdocstrings styles */
div.doc-contents:not(.first) {
  padding-left: 25px;
  border-left: .05rem solid var(--md-typeset-table-color);
}

/* Mark external links as such. */
a.external::after,
a.autorefs-external::after {
  /* https://primer.style/octicons/arrow-up-right-24 */
  mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18.25 15.5a.75.75 0 00.75-.75v-9a.75.75 0 00-.75-.75h-9a.75.75 0 000 1.5h7.19L6.22 16.72a.75.75 0 101.06 1.06L17.5 7.56v7.19c0 .414.336.75.75.75z"></path></svg>');
  -webkit-mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18.25 15.5a.75.75 0 00.75-.75v-9a.75.75 0 00-.75-.75h-9a.75.75 0 000 1.5h7.19L6.22 16.72a.75.75 0 101.06 1.06L17.5 7.56v7.19c0 .414.336.75.75.75z"></path></svg>');
  content: ' ';
  display: inline-block;
  vertical-align: middle;
  position: relative;
  height: 1em;
  width: 1em;
  background-color: currentColor;
}

a.external:hover::after,
a.autorefs-external:hover::after {
  background-color: var(--md-accent-fg-color);
}

td code {
  word-break: normal !important;
}

li.md-nav__item:has(> a[href*="("]) {
  display: none;
}

.md-main__inner {
  margin-bottom: 1.5rem;
}

/* Symbol styling */
code.doc-symbol {
  border-radius: .1rem;
  font-size: .85em;
  padding: 0 .3em;
  font-weight: bold;
}

code.doc-symbol-parameter,
a code.doc-symbol-parameter {
  color: var(--doc-symbol-parameter-fg-color);
  background-color: var(--doc-symbol-parameter-bg-color);
}

code.doc-symbol-parameter::after {
  content: "P";
}

code.doc-symbol-type_parameter,
a code.doc-symbol-type_parameter {
  color: var(--doc-symbol-type_parameter-fg-color);
  background-color: var(--doc-symbol-type_parameter-bg-color);
}

code.doc-symbol-type_parameter::after {
  content: "P";
}

code.doc-symbol-attribute,
a code.doc-symbol-attribute {
  color: var(--doc-symbol-attribute-fg-color);
  background-color: var(--doc-symbol-attribute-bg-color);
}

code.doc-symbol-attribute::after {
  content: "A";
}

code.doc-symbol-function,
a code.doc-symbol-function {
  color: var(--doc-symbol-function-fg-color);
  background-color: var(--doc-symbol-function-bg-color);
}

code.doc-symbol-function::after {
  content: "F";
}

code.doc-symbol-method,
a code.doc-symbol-method {
  color: var(--doc-symbol-method-fg-color);
  background-color: var(--doc-symbol-method-bg-color);
}

code.doc-symbol-method::after {
  content: "M";
}

code.doc-symbol-class,
a code.doc-symbol-class {
  color: var(--doc-symbol-class-fg-color);
  background-color: var(--doc-symbol-class-bg-color);
}

code.doc-symbol-class::after {
  content: "C";
}

code.doc-symbol-type_alias,
a code.doc-symbol-type_alias {
  color: var(--doc-symbol-type_alias-fg-color);
  background-color: var(--doc-symbol-type_alias-bg-color);
}

code.doc-symbol-type_alias::after {
  content: "T";
}

code.doc-symbol-module,
a code.doc-symbol-module {
  color: var(--doc-symbol-module-fg-color);
  background-color: var(--doc-symbol-module-bg-color);
}

code.doc-symbol-module::after {
  content: "M";
}

.doc-signature .autorefs {
  color: inherit;
  border-bottom: 1px dotted currentcolor;
}

/* Additional mkdocstrings styles */
.doc-contents td code {
  word-break: normal !important;
}

.doc-md-description,
.doc-md-description>p:first-child {
  display: inline;
}

/* Override Material theme's small h5/h6 sizing for mkdocstrings */
.md-typeset h5.doc.doc-heading,
.md-typeset h6.doc.doc-heading {
  font-size: 0.9rem !important;  /* 14.4px - more appropriate size */
  font-weight: 600 !important;
  text-transform: none !important;
  color: var(--md-default-fg-color) !important;
  margin: 1em 0 0.5em 0 !important;
  letter-spacing: normal !important;
}

.md-typeset h5 .doc-object-name,
.md-typeset h6 .doc-object-name {
  font-size: inherit !important;
  font-weight: inherit !important;
  text-transform: none !important;
}

.doc .md-typeset__table,
.doc .md-typeset__table table {
  display: table !important;
  width: 100%;
}

.doc .md-typeset__table tr {
  display: table-row;
}

.doc-param-default,
.doc-type_param-default {
  float: right;
}

.doc-heading-parameter,
.doc-heading-type_parameter {
  display: inline;
}

.md-typeset .doc-heading-parameter {
  font-size: inherit;
}

.doc-heading-parameter .headerlink,
.doc-heading-type_parameter .headerlink {
  margin-left: 0 !important;
  margin-right: 0.2rem;
}

.doc-section-title {
  font-weight: bold;
}

.doc-backlink-crumb {
  display: inline-flex;
  gap: .2rem;
  white-space: nowrap;
  align-items: center;
  vertical-align: middle;
}

.doc-backlink-crumb:not(:first-child)::before {
  background-color: var(--md-default-fg-color--lighter);
  content: "";
  display: inline;
  height: 1rem;
  --md-path-icon: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M8.59 16.58 13.17 12 8.59 7.41 10 6l6 6-6 6z"/></svg>');
  -webkit-mask-image: var(--md-path-icon);
  mask-image: var(--md-path-icon);
  width: 1rem;
}

.doc-backlink-crumb.last {
  font-weight: bold;
}

/* Tree-like output for backlinks. */
.doc-backlink-list {
  --tree-clr: var(--md-default-fg-color);
  --tree-font-size: 1rem;
  --tree-item-height: 1;
  --tree-offset: 1rem;
  --tree-thickness: 1px;
  --tree-style: solid;
  display: grid;
  list-style: none !important;
}

.doc-backlink-list li > span:first-child {
  text-indent: .3rem;
}
.doc-backlink-list li {
  padding-inline-start: var(--tree-offset);
  border-left: var(--tree-thickness) var(--tree-style) var(--tree-clr);
  position: relative;
  margin-left: 0 !important;

  &:last-child {
    border-color: transparent;
  }
  &::before{
    content: '';
    position: absolute;
    top: calc(var(--tree-item-height) / 2 * -1 * var(--tree-font-size) + var(--tree-thickness));
    left: calc(var(--tree-thickness) * -1);
    width: calc(var(--tree-offset) + var(--tree-thickness) * 2);
    height: calc(var(--tree-item-height)  * var(--tree-font-size));
    border-left: var(--tree-thickness) var(--tree-style) var(--tree-clr);
    border-bottom: var(--tree-thickness) var(--tree-style) var(--tree-clr);
  }
  &::after{
    content: '';
    position: absolute;
    border-radius: 50%;
    background-color: var(--tree-clr);
    top: calc(var(--tree-item-height) / 2 * 1rem);
    left: var(--tree-offset) ;
    translate: calc(var(--tree-thickness) * -1) calc(var(--tree-thickness) * -1);
  }
}

/* Fancier color for operators such as * and |. */
.doc-signature .o {
  color: var(--md-code-hl-special-color);
}

/* Fancier color for constants such as None, True, and False. */
.doc-signature .kc {
  color: var(--md-code-hl-constant-color);
}

/* Fancier color for built-in types (only useful when cross-references are used). */
.doc-signature .n > a[href^="https://docs.python.org/"][href*="/functions.html#"],
.doc-signature .n > a[href^="https://docs.python.org/"][href*="/stdtypes.html#"] {
  color: var(--md-code-hl-constant-color);
}
