#controls {
  margin-bottom: 20px;
  text-align: center;
}
#controls button {
  margin: 0 5px;
  padding: 6px 12px;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  transition: background-color 0.2s;
}
#controls button.active {
  background-color: var(--bs-danger);
  color: #fff;
}
#controls button.active[data-filter='javascript'] {
  background-color: var(--bs-warning);
  color: var(--bs-dark);
}
#controls button.active[data-filter='php'] {
  background-color: var(--bs-info);
  color: var(--bs-dark);
}
#controls button.active[data-filter='node.js'] {
  background-color: var(--bs-success);
  color: #fff;
}
#controls button.active[data-filter='*'],
#controls button.active[data-filter='html'] {
  background-color: var(--bs-primary);
  color: #fff;
}
#controls button.active[data-filter='css'] {
  background-color: var(--bs-secondary);
  color: #fff;
}
#grid {
  position: relative;
}
.item {
  width: 380px;
  max-width: 100%;
  margin-bottom: 12px;
  border-radius: 6px;
  overflow: hidden;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
  transition:
    transform 0.4s,
    opacity 0.4s;
}
.item.hide {
  opacity: 0;
  pointer-events: none;
}
.item .avatar img {
  display: block;
  width: 48px;
  height: 48px;
}
.item img {
  display: block;
  width: 100%;
  height: auto;
}
.item h4 {
  margin: 6px 0;
}
.item p {
  margin: 0 8px 8px;
}
.flash-highlight {
  animation: 0.8s ease-in-out flash;
  border: 2px solid rgba(255, 193, 7, 0.3);
  border-radius: 8px;
}
@keyframes flash {
  0% {
    box-shadow: 0 0 0 rgba(255, 193, 7, 0.32);
  }
  50% {
    box-shadow: 0 0 10px rgba(255, 193, 7, 0.37);
  }
  100% {
    box-shadow: 0 0 0 rgba(255, 193, 7, 0.3);
  }
}
#pagination .page-item {
  --bs-pagination-active-bg: #307788;
  --bs-pagination-active-border-color: #307788;
}
body,
html {
  height: 100%;
  margin: 0;
  scrollbar-color: var(--bs-success-text-emphasis) var(--bs-tertiary-bg);
}
pre {
  color: var(--bs-emphasis-color);
  padding: 1rem;
  position: relative;
  background: #0e0e0e;
  border-radius: 16px;
  overflow: auto;
}
.hljs-doctag,
.hljs-keyword,
.hljs-template-tag,
.hljs-template-variable,
.hljs-type,
.hljs-variable.language_ {
  color: var(--bs-warning-text-emphasis);
}
.hljs-title,
.hljs-title.class_,
.hljs-title.class_.inherited__,
.hljs-title.function_ {
  color: #d2a8ff;
}
.hljs-attr,
.hljs-attribute,
.hljs-bullet,
.hljs-literal,
.hljs-meta,
.hljs-number,
.hljs-operator,
.hljs-selector-attr,
.hljs-selector-class,
.hljs-selector-id,
.hljs-variable {
  color: #79c0ff;
}
.hljs-meta .hljs-string,
.hljs-regexp,
.hljs-string {
  color: #a5d6ff;
}
.hljs-built_in,
.hljs-symbol {
  color: #ffa657;
}
.hljs-code,
.hljs-comment,
.hljs-formula {
  color: #8b949e;
}
.hljs-name,
.hljs-quote,
.hljs-selector-pseudo,
.hljs-selector-tag {
  color: #7ee787;
}
.hljs-subst {
  color: #c9d1d9;
}
.hljs-section {
  color: #1f6feb;
  font-weight: 700;
}
.hljs-emphasis {
  font-style: italic;
}
.hljs-strong {
  font-weight: 700;
}
.hljs-addition {
  color: #aff5b4;
  background-color: #033a16;
}
.hljs-deletion {
  color: #ffdcd7;
  background-color: #67060c;
}
textarea {
  height: auto;
}
code {
  color: #fff;
  white-space: pre;
  font-family: 'Fira Code', monospace;
  font-size: 1rem;
}
:not(html, body) {
  scrollbar-width: thin;
  scrollbar-color: var(--bs-success-text-emphasis) var(--bs-tertiary-bg);
}
.pre-wrapper {
  position: relative;
  margin: 1.5rem 0;
  background: #0e0e0e;
  border-radius: 1rem;
  max-height: 400px;
  overflow: auto;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
}
.pre-wrapper pre {
  margin: 0;
  padding: 1rem;
  background: 0 0;
  border: none;
  color: #0ff;
}
.pre-wrapper:hover .copy-btn {
  opacity: 1;
  transform: translateY(0);
}
.pre-header {
  position: sticky;
  top: 0;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0.5em;
  background: #0e0e0e;
  z-index: 10;
}
.copy-btn {
  padding: 6px 12px;
  font-size: 0.85rem;
  border-radius: 6px;
  background: rgba(33, 34, 34, 0.95);
  color: #fff;
  cursor: pointer;
  border: none;
  transform: translateY(-100%);
  opacity: 0;
  transition:
    transform 0.3s,
    opacity 0.3s;
}
.copy-btn:hover {
  background: #2f7e7e;
  border-color: #999;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
}
.language-label {
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  color: #fff;
  padding: 3px 10px;
  border-radius: 4px;
  letter-spacing: 0.5px;
}
code:not(pre code) {
  background-color: #0e0b09;
  color: #cbcfd3;
  padding: 0.2em 0.4em;
  border-radius: 12px;
  font-family: 'Fira Code', monospace;
  font-size: 80%;
  white-space: nowrap;
  transition: background-color 0.2s;
  cursor: default;
}
code:not(pre code):hover {
  background-color: #2c3b4f;
}
::selection {
  color: #dee1e4;
  background-color: #2c3134;
}
.markdown {
  font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
  color: var(--bs-emphasis-color);
  background-color: var(--bs-body-bg);
  line-height: 1.6;
  padding: 1.5em;
  border-radius: 8px;
}
.markdown h1 {
  font-size: 2.2em;
  margin-bottom: 0.5em;
  color: var(--bs-emphasis-color);
}
.markdown h2 {
  font-size: 1.8em;
  margin-bottom: 0.5em;
  color: var(--bs-emphasis-color);
}
.markdown h3 {
  font-size: 1.5em;
  margin-bottom: 0.5em;
  color: var(--bs-emphasis-color);
}
.markdown h4 {
  font-size: 1.3em;
  margin-bottom: 0.5em;
  color: var(--bs-emphasis-color);
}
.markdown h5 {
  font-size: 1.1em;
  margin-bottom: 0.5em;
  color: var(--bs-emphasis-color);
}
.markdown h6 {
  font-size: 1em;
  margin-bottom: 0.5em;
  color: var(--bs-emphasis-color);
}
.markdown p,
.markdown ul {
  margin-bottom: 1em;
}
.markdown a {
  color: #e3ebee;
  text-decoration: none;
}
.markdown ol {
  padding-left: 1.5em;
  margin-bottom: 1em;
}
.markdown li {
  margin-bottom: 0.5em;
}
.markdown code {
  background: #0d0d0d;
  color: #f8f8f2;
  border-radius: 4px;
  font-family: 'Courier New', monospace;
  font-size: rem;
}
.markdown pre {
  background: #0d0d0d;
  color: #f8f8f2;
  padding: 1em;
  border-radius: 6px;
  overflow-x: auto;
  font-family: 'Courier New', monospace;
}
.markdown blockquote {
  border-left: 4px solid #555;
  padding-top: 1rem;
  padding-left: 1em;
  padding-bottom: 0.5rem;
  color: #ccc;
  font-style: italic;
  margin: 1em 0;
  background: var(--bs-tertiary-bg);
  border-radius: 4px;
}
.markdown img {
  max-width: 100%;
  border-radius: 6px;
  margin: 1em 0;
}
.markdown hr {
  border: 0;
  border-top: 2px solid #f2efef;
  margin: 2em 0;
}
#toc {
  position: sticky;
  top: 20px;
  max-height: calc(100vh - 100px);
  overflow-y: auto;
  padding: 10px;
  border-left: 1px solid #ddd;
  border-right: 1px solid #ddd;
}
#content {
  padding: 20px;
}
html {
  scroll-padding-top: 1.4rem;
}
.backToTop {
  position: fixed;
  bottom: 30px;
  right: 30px;
  cursor: pointer;
  padding: 10px 15px;
  border-radius: 12px;
  color: #fff;
  font-size: 18px;
  opacity: 0;
  transform: translateX(80px);
  transition:
    transform 0.8s,
    opacity 0.8s;
  z-index: 1000;
}
.backToTop.show {
  opacity: 1;
  transform: translateX(0);
}
.backToTop:hover {
  transform: translateX(0) scale(1.3);
}
nav#toc-list .list-group-item.active,
ul#toc-list .list-group-item.active {
  background-color: #3d464e;
  color: #eaeaea;
  font-weight: 700;
  border-color: #3d464e;
}
