tw-search {
  display: flex;

  #search {
    anchor-name: --search;
  }

  #search-input {
    background-color: var(--bg1);
    border: 1px solid var(--border1);
    border-radius: 0;
    box-sizing: border-box;
    color: var(--fg1);
    font-size: 1rem;
    padding: calc(var(--gap) / 2);
    width: 100%;

    &::placeholder {
      font-size: 0.8rem;
    }
  }

  #search-input:focus,
  #search-page-input:focus {
    border-color: var(--link1);
    border-radius: 0;
    outline: none;
  }

  #search-menu {
    background-color: var(--bg2);
    border: 1px solid var(--border1);
    box-sizing: border-box;
    color: var(--fg1);
    font-family: var(--serif);
    inset: auto;
    margin-top: calc(var(--base) / 2);
    max-height: 80vh;
    min-height: 50vh;
    overflow-y: auto;
    padding: var(--base);
    position-anchor: --search;
    right: anchor(right);
    top: anchor(bottom);
    width: min(50ch, calc(100vw - 7rem));

    &::backdrop {
      background-color: transparent;
    }
  }

  #search-page-input {
    background-color: var(--bg1);
    border: 1px solid var(--border1);
    border-radius: 4px;
    box-sizing: border-box;
    color: var(--fg1);
    flex: 1;
    font-size: 1rem;
    padding: calc(var(--gap) / 2) var(--gap);
    width: 100%;
  }

  .search-page-input-wrapper {
    margin-bottom: var(--base);
  }

  #search-page-results {
    max-height: calc(80vh - 5rem);
    overflow-y: auto;
  }

  #search-results {
    margin-top: var(--base);
  }

  .search-error {
    color: var(--code-keyword);
  }

  .search-message {
    color: var(--fg2);
  }

  .search-result-excerpt {
    color: var(--fg2);
    font-size: 0.9rem;
    line-height: 1.4;
  }

  .search-result-excerpt mark,
  .search-sub-result-excerpt mark {
    background-color: var(--bg3);
    color: var(--fg1);
    font-weight: bold;
  }

  .search-result-item {
    border-bottom: 1px solid var(--border2);
    padding-bottom: var(--gap);

    &:last-child {
      border-bottom: none;
    }
  }

  .search-result-link {
    text-decoration: none;

    &:hover .search-result-title {
      color: var(--link-hover);
      text-decoration: underline;
    }
  }

  .search-result-title {
    color: var(--link1);
    font-weight: bold;
  }

  .search-results-list {
    display: flex;
    flex-direction: column;
    gap: var(--gap);
    list-style: none;
    margin: 0;
    padding: 0;
  }

  .search-sub-result-excerpt {
    color: var(--fg3);
    font-size: 0.8rem;
  }

  .search-sub-result-link {
    text-decoration: none;

    &:hover .search-sub-result-title {
      color: var(--link1);
      text-decoration: underline;
    }
  }

  .search-sub-result-title {
    color: var(--fg1);
    font-size: 0.85rem;
    font-weight: 600;
  }

  .search-sub-results-list {
    display: flex;
    flex-direction: column;
    gap: calc(var(--gap) / 2);
    list-style: none;
    margin-top: calc(var(--gap) / 2);
    padding-left: var(--base);
  }

  .search-summary {
    color: var(--fg2);
    font-size: 0.85rem;
    margin-bottom: calc(var(--base) / 2);
  }
}
