$tertiary-hover: $gray-200;
$tertiary: $gray-400;
$tertiary-active-hover: $gray-300;

$tertiary-dark: $gray-700;
$tertiary-dark-hover: $gray-800;
$tertiary-dark-active-open: $gray-600;

.action-row {
  @extend .d-flex;
  @extend .p-2;
  @extend .mt-5;

  // background-color: map-get($theme-colors, "primary");
  background-color: var(--bs-tertiary-bg);

  * {
    @extend .me-2;
    @extend .my-auto;
  }
}

.hover-row:hover {
  background-color: var(--bs-tertiary-bg);
}

.comment {
  @extend .alert;
  @extend .alert-warning;

  border: 0;
  border-left: 4px solid var(--bs-warning);
}

.navbar-brand {
  color: $pink;
}

.form-label {
  font-size: 1.3rem;
}

.highlight-when-nonempty:not([value=""]) {
  @extend .border-primary
}

@mixin details-icon($color) {
  background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="rgb(#{$color})" class="bi bi-chevron-right" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708"/></svg>');
  background-size: cover;
}

@mixin toggle-off-icon($color) {
  background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="rgb(#{$color})" class="bi bi-toggle-off" viewBox="0 0 16 16"><path d="M11 4a4 4 0 0 1 0 8H8a5 5 0 0 0 2-4 5 5 0 0 0-2-4zm-6 8a4 4 0 1 1 0-8 4 4 0 0 1 0 8M0 8a5 5 0 0 0 5 5h6a5 5 0 0 0 0-10H5a5 5 0 0 0-5 5"/></svg>')
}

@mixin toggle-on-icon($color) {
  background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="rgb(#{$color})" class="bi bi-toggle-on" viewBox="0 0 16 16"><path d="M5 3a5 5 0 0 0 0 10h6a5 5 0 0 0 0-10zm6 9a4 4 0 1 1 0-8 4 4 0 0 1 0 8" /> </svg>')
}

.page_nav nav ul {
  padding-left: 0;
  list-style-type: none;

  li {
    margin-bottom: 0.5rem;
  }

  a {
    color: var(--bs-text);
    text-decoration: none;
  }

  a:hover {
    // text-decoration: underline;
  }

  ul {
    padding-left: 0rem;
  }
}

details.switch {
  >summary {
    display: flex;
  }

  >summary::after {
    @include toggle-off-icon(to-rgb(map-get($theme-colors, "dark")));
    width: 1rem;
    height: 1rem;
    float: inline-end;
    transition: 0.4s;
    content: '';
    margin-top: 0.25rem;
    margin-right: 0;
    margin-left: 0.5rem
  }
}

details.switch[open]>summary::after {
  @include toggle-on-icon(to-rgb(map-get($theme-colors, "dark")));
}

@include color-mode(dark) {
  details.switch summary::after {
    @include toggle-off-icon(to-rgb(map-get($theme-colors, "light")));
  }
}

@include color-mode(dark) {
  details.switch[open]>summary::after {
    @include toggle-on-icon(to-rgb(map-get($theme-colors, "light")));
  }
}

// details.tree[open]:has(summary.active) {
//   border: solid 1px $primary;

// }

details.tree {

  >summary,
  >summary a {
    font-size: 1rem;
    font-style: normal;
  }

  >summary {
    display: flex;
    line-height: 2rem;
    padding-left: 12px;
    // padding-top: 8px;
    // padding-bottom: 8px;
  }

  >summary.active {
    background-color: $tertiary;
  }

  >summary::before {
    @include details-icon(to-rgb(map-get($theme-colors, "dark")));
    content: '';
    float: inline-end;
    width: 0.7rem;
    height: 1rem;
    margin-top: 0.5rem;
    margin-right: 6px;
    // background: url('chevron-right.svg');
    // background-size: cover;
    margin-left: 0px;
    transition: 0.2s;
  }

  ul {
    // li:hover {
    //   border-left: solid 2px $white;
    //   padding-left: 36px;
    // }

    li {
      padding-left: 38px;

      a {
        display: block;
      }
    }

    li:has(a.active) {
      border-left: solid 2px $tertiary;
      padding-left: 36px;
      // background-color: $gray-900;
    }
  }
}

@include color-mode(dark) {
  details.tree {
    summary::before {
      @include details-icon(to-rgb(map-get($theme-colors, "light")));
    }

    summary.active {
      background-color: $tertiary-dark;
    }

    ul li:has(a.active) {
      border-left: solid 2px $tertiary-dark;
    }
  }
}

details.tree[open]>summary::before {
  transform: rotate(90deg);
  padding-bottom: 0;
}

details.success_criterion:last-child {
  border-bottom: solid 1px $tertiary;
}

details.success_criterion {
  border-left: solid 1px $tertiary;
  border-right: solid 0px $tertiary;
  border-top: solid 0px $tertiary;

  summary:hover {
    background-color: $tertiary-hover;


    // border-right: solid 4px $primary;
  }

  // padding-left: 22px;
  .result-icon {
    width: 3rem;
  }

  >.content {
    padding-left: 1rem;
    padding-right: 1rem;
    padding-bottom: 1rem;
  }
}


@include color-mode(dark) {
  details.success_criterion {
    summary:hover {
      background-color: $tertiary-dark-hover;
    }
  }
}


details.success_criterion[open] {
  /* border: solid 1px $tertiary; */

  >summary {
    background-color: $tertiary;
  }

  >summary:hover {
    background-color: $tertiary-active-hover;
  }
}

@include color-mode(dark) {
  details.success_criterion {
    border-left: solid 1px $tertiary-dark;
    border-right: solid 1px $tertiary-dark;
    border-top: solid 1px $tertiary-dark;
  }

  details.success_criterion:last-child {
    border-bottom: solid 1px $tertiary-dark;
  }

  details.success_criterion[open] {
    /* border: solid 1px $tertiary-dark; */

    >summary {
      background-color: $tertiary-dark;
    }

    >summary:hover {
      background-color: $tertiary-dark-active-open;
    }
  }
}

details.tree {

  summary:hover,
  li:has(a):hover {
    background-color: $tertiary-hover;
  }
}

@include color-mode(dark) {
  details.tree {

    summary:hover,
    li:has(a):hover {
      background-color: $tertiary-dark-hover;
    }
  }
}

.sc-level-a {
  background-color: $pink;
}

.sc-level-aa {
  background-color: $indigo;
}

.sc-level-aaa {
  background-color: $purple;
}

.handle {
  cursor: move;
}

details[open] {
  summary {
    .handle {
      display: none;
    }
  }
}

.sortable-chosen {
  border: solid 3px $secondary !important;
}

.sortable-ghost {
  border: solid 3px $primary !important;
}

$dialog-animation-time: 0.5s;
$dialog-animation-start-state: scaleX(1);
$dialog-animation-end-state: scaleX(1);
/* dialog::backdrop { */
/* background-color: white; */
/* opacity: 0.75; */
/* } */

/*   Open state of the dialog  */
dialog[open] {
  opacity: 1;
  transform: $dialog-animation-end-state;
}

/*   Closed state of the dialog   */
dialog {
  opacity: 0;
  transform: $dialog-animation-start-state;
  transition:
    opacity $dialog-animation-time ease-out,
    transform $dialog-animation-time ease-out,
    overlay $dialog-animation-time ease-out allow-discrete,
    display $dialog-animation-time ease-out allow-discrete;
  /* Equivalent to
  transition: all $dialog-animation-time allow-discrete; */
}

/*   Before-open state  */
/* Needs to be after the previous dialog[open] rule to take effect,
    as the specificity is the same */
@starting-style {
  dialog[open] {
    opacity: 0;
    transform: $dialog-animation-start-state;
  }
}

/* Transition the :backdrop when the dialog modal is promoted to the top layer */
dialog::backdrop {
  background-color: rgb(0 0 0 / 75%);
  transition:
    display $dialog-animation-time allow-discrete,
    overlay $dialog-animation-time allow-discrete,
    background-color $dialog-animation-time;
  /* Equivalent to
  transition: all $dialog-animation-time allow-discrete; */
}

dialog[open]::backdrop {
  background-color: rgb(0 0 0 / 75%);
}

/* This starting-style rule cannot be nested inside the above selector
because the nesting selector cannot represent pseudo-elements. */

@starting-style {
  dialog[open]::backdrop {
    background-color: rgb(0 0 0 / 0%);
  }
}