/* ==========================================================================
   Notebook Grid Paper Background ("Тетрадь в клетку")
   ========================================================================== */

:root {
  --notebook-grid-color: rgba(60, 90, 150, 0.055);
  --notebook-grid-bg: #ffffff;
  --notebook-grid-size: 20px;
}

body.quarto-dark {
  --notebook-grid-color: rgba(180, 200, 240, 0.038);
  --notebook-grid-bg: #161626;
}

@media (prefers-color-scheme: dark) {
  body:not(.quarto-light) {
    --notebook-grid-color: rgba(180, 200, 240, 0.038);
    --notebook-grid-bg: #161626;
  }
}

html,
body {
  background-color: var(--notebook-grid-bg) !important;
  background-image:
    linear-gradient(to right, var(--notebook-grid-color) 1px, transparent 1px),
    linear-gradient(to bottom, var(--notebook-grid-color) 1px, transparent 1px) !important;
  background-size: var(--notebook-grid-size) var(--notebook-grid-size) !important;
  background-attachment: fixed !important;
}

#quarto-sidebar,
#quarto-content,
main.content,
.page-columns,
.sidebar-navigation {
  background-color: transparent !important;
}

@media (max-width: 991.98px) {
  #quarto-sidebar {
    background-color: var(--notebook-grid-bg) !important;
    background-image:
      linear-gradient(to right, var(--notebook-grid-color) 1px, transparent 1px),
      linear-gradient(to bottom, var(--notebook-grid-color) 1px, transparent 1px) !important;
    background-size: var(--notebook-grid-size) var(--notebook-grid-size) !important;
  }
}

/* ==========================================================================
   Custom Scrollbars (Modern, Slim, Minimalist)
   ========================================================================== */

/* Light mode default */
* {
  scrollbar-width: thin;
  scrollbar-color: #adb5bd transparent;
}

::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}

::-webkit-scrollbar-track {
  background: transparent;
}

::-webkit-scrollbar-thumb {
  background-color: #ced4da;
  border-radius: 9999px;
  border: 2px solid transparent;
  background-clip: padding-box;
}

::-webkit-scrollbar-thumb:hover {
  background-color: #adb5bd;
}

/* Midnight Indigo Dark mode scrollbars */
body.quarto-dark,
body.quarto-dark * {
  scrollbar-width: thin;
  scrollbar-color: #3c3c5c transparent;
}

body.quarto-dark ::-webkit-scrollbar-track {
  background: transparent;
}

body.quarto-dark ::-webkit-scrollbar-thumb {
  background-color: #3c3c5c;
  border-radius: 9999px;
  border: 2px solid transparent;
  background-clip: padding-box;
}

body.quarto-dark ::-webkit-scrollbar-thumb:hover {
  background-color: #2aa198; /* Solarized Cyan on hover */
}

@media (prefers-color-scheme: dark) {
  body:not(.quarto-light),
  body:not(.quarto-light) * {
    scrollbar-width: thin;
    scrollbar-color: #3c3c5c transparent;
  }

  body:not(.quarto-light) ::-webkit-scrollbar-track {
    background: transparent;
  }

  body:not(.quarto-light) ::-webkit-scrollbar-thumb {
    background-color: #3c3c5c;
    border-radius: 9999px;
    border: 2px solid transparent;
    background-clip: padding-box;
  }

  body:not(.quarto-light) ::-webkit-scrollbar-thumb:hover {
    background-color: #2aa198;
  }
}

/* ==========================================================================
   Midnight Indigo surface cut-out inline code badges for dark mode only
   ========================================================================== */

body.quarto-dark code:not(pre > code),
body.quarto-dark kbd,
body.quarto-dark samp,
body.quarto-dark p code:not(.sourceCode),
body.quarto-dark li code:not(.sourceCode),
body.quarto-dark td code:not(.sourceCode),
body.quarto-dark th code:not(.sourceCode),
body.quarto-dark table.table td code,
body.quarto-dark table.table th code,
body.quarto-dark table td code,
body.quarto-dark table th code,
body.quarto-dark .table td code,
body.quarto-dark .table th code {
  background-color: #202036 !important;
  color: #2aa198 !important;
  border: 1px solid rgba(42, 161, 152, 0.25) !important;
  padding: calc(0.15em + 2px) 0.38em 0.15em 0.38em !important;
  border-radius: 0.25rem !important;
  font-size: 0.88em !important;
}

@media (prefers-color-scheme: dark) {
  body:not(.quarto-light) code:not(pre > code),
  body:not(.quarto-light) kbd,
  body:not(.quarto-light) samp,
  body:not(.quarto-light) p code:not(.sourceCode),
  body:not(.quarto-light) li code:not(.sourceCode),
  body:not(.quarto-light) td code:not(.sourceCode),
  body:not(.quarto-light) th code:not(.sourceCode),
  body:not(.quarto-light) table.table td code,
  body:not(.quarto-light) table.table th code,
  body:not(.quarto-light) table td code,
  body:not(.quarto-light) table th code,
  body:not(.quarto-light) .table td code,
  body:not(.quarto-light) .table th code {
    background-color: #202036 !important;
    color: #2aa198 !important;
    border: 1px solid rgba(42, 161, 152, 0.25) !important;
    padding: calc(0.15em + 2px) 0.38em 0.15em 0.38em !important;
    border-radius: 0.25rem !important;
    font-size: 0.88em !important;
  }
}

/* Subtle rounded code blocks in dark mode */
body.quarto-dark div.code-copy-outer-scaffold,
body.quarto-dark div.sourceCode,
body.quarto-dark pre {
  border-radius: 0.5rem !important;
}

body.quarto-dark div.sourceCode {
  border: 1px solid rgba(255, 255, 255, 0.07) !important;
  border-radius: 0.5rem !important;
  overflow: hidden !important;
}

body.quarto-dark div.sourceCode pre {
  border: none !important;
  border-radius: 0.5rem !important;
}

body.quarto-dark pre:not(.sourceCode) {
  border: 1px solid rgba(255, 255, 255, 0.07) !important;
  border-radius: 0.5rem !important;
}

@media (prefers-color-scheme: dark) {
  body:not(.quarto-light) div.code-copy-outer-scaffold,
  body:not(.quarto-light) div.sourceCode,
  body:not(.quarto-light) pre {
    border-radius: 0.5rem !important;
  }

  body:not(.quarto-light) div.sourceCode {
    border: 1px solid rgba(255, 255, 255, 0.07) !important;
    border-radius: 0.5rem !important;
    overflow: hidden !important;
  }

  body:not(.quarto-light) div.sourceCode pre {
    border: none !important;
    border-radius: 0.5rem !important;
  }

  body:not(.quarto-light) pre:not(.sourceCode) {
    border: 1px solid rgba(255, 255, 255, 0.07) !important;
    border-radius: 0.5rem !important;
  }
}

/* ==========================================================================
   Code Comments: No italics, dark subdued color
   ========================================================================== */
code span.co,
code span.cv,
code span.do {
  font-style: normal !important;
  color: #576574 !important;
}

body.quarto-dark code span.co,
body.quarto-dark code span.cv,
body.quarto-dark code span.do {
  font-style: normal !important;
  color: #606b82 !important;
}

@media (prefers-color-scheme: dark) {
  body:not(.quarto-light) code span.co,
  body:not(.quarto-light) code span.cv,
  body:not(.quarto-light) code span.do {
    font-style: normal !important;
    color: #606b82 !important;
  }
}

/* ==========================================================================
   Syntax Highlighting: Mutable Bindings (foo', x') & Constants (<+>, <->)
   ========================================================================== */

/* Mutable primed identifiers: reddish */
code span.va {
  color: #c93b2b !important;
  font-weight: 500;
}

body.quarto-dark code span.va {
  color: #e06c75 !important;
}

@media (prefers-color-scheme: dark) {
  body:not(.quarto-light) code span.va {
    color: #e06c75 !important;
  }
}

/* Ramifications (unit constants, payload delimiters, sugared returns) */
code span.cn {
  color: #b45309 !important;
  font-weight: 600;
}

body.quarto-dark code span.cn {
  color: #fbbf24 !important;
}

@media (prefers-color-scheme: dark) {
  body:not(.quarto-light) code span.cn {
    color: #fbbf24 !important;
  }
}

/* Branching and jumps (choice |, !|, cycle @, breaks -->, continues --^, early returns --|, escapes >--) */
code span.cf {
  color: #4f46e5 !important;
  font-weight: 600;
}

body.quarto-dark code span.cf {
  color: #818cf8 !important;
}

@media (prefers-color-scheme: dark) {
  body:not(.quarto-light) code span.cf {
    color: #818cf8 !important;
  }
}

/* ==========================================================================
   Adaptive Grid Layout (Columns never overlap, eat into margins when needed)
   ========================================================================== */

/* Main content container isolation: prevent wide children from blowing out grid */
#quarto-content.page-columns > main.content,
main.content,
#quarto-document-content {
  min-width: 0 !important;
  max-width: 100% !important;
  position: relative;
  z-index: 0;
}

/* Ensure sidebars are isolated and never collapse or push grid tracks */
#quarto-sidebar {
  z-index: 10;
}

#quarto-margin-sidebar {
  z-index: 10;
}

/* Wide screen adaptive layout: expand central column into empty margins while preserving robust sidebar widths */
@media (min-width: 992px) {
  #quarto-sidebar {
    min-width: 16rem !important;
    max-width: 22rem !important;
  }

  #quarto-margin-sidebar {
    min-width: 15rem !important;
    max-width: 22rem !important;
  }

  body.floating .page-columns,
  body:not(.floating):not(.docked) .page-columns,
  body.docked .page-columns,
  body .page-columns {
    display: grid !important;
    gap: 0 !important;
    grid-template-columns:
      [screen-start] 1.5rem
      [screen-start-inset] minmax(0, 1fr)
      [page-start] minmax(40px, 60px)
      [page-start-inset] minmax(160px, 200px)
      [body-start-outset] minmax(40px, 60px)
      [body-start] 1.5rem
      [body-content-start] minmax(min(100%, 550px), calc(1150px - 3rem))
      [body-content-end] 1.5rem
      [body-end] minmax(40px, 60px)
      [body-end-outset] minmax(160px, 200px)
      [page-end-inset] minmax(40px, 60px)
      [page-end] minmax(0, 1fr)
      [screen-end-inset] 1.5rem
      [screen-end] !important;
  }
}

/* ==========================================================================
   Tables: Forbid line wrap of code elements & ensure responsive containment
   ========================================================================== */
table td code,
table th code,
table td pre,
table th pre,
table.table td code,
table.table th code,
table.table td pre,
table.table th pre {
  white-space: nowrap !important;
}

/* Responsive table wrapper: prevent table overflow from overlapping columns */
.table-wrapper {
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  margin-top: 1rem;
  margin-bottom: 1.5rem;
}

.table-wrapper table {
  display: table !important;
  width: 100%;
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

/* Fallback for any unwrapped tables */
main.content table:not(.table-wrapper table) {
  display: block;
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

/* Pre / code blocks containment */
main.content pre,
main.content .sourceCode {
  max-width: 100%;
  overflow-x: auto;
}

/* ==========================================================================
   Margin Footer / Page Meta (Underneath TOC in 3rd column)
   ========================================================================== */
#quarto-margin-sidebar .page-meta,
.quarto-margin-footer,
.page-meta {
  font-size: 0.82em;
  line-height: 1.5;
  color: #6c757d;
  border-top: 1px solid rgba(128, 128, 128, 0.2);
  padding-top: 0.85rem;
  margin-top: 1.25rem;
}

body.quarto-dark #quarto-margin-sidebar .page-meta,
body.quarto-dark .quarto-margin-footer,
body.quarto-dark .page-meta {
  color: #8c909e;
  border-top: 1px solid rgba(255, 255, 255, 0.1);
}

@media (prefers-color-scheme: dark) {
  body:not(.quarto-light) #quarto-margin-sidebar .page-meta,
  body:not(.quarto-light) .quarto-margin-footer,
  body:not(.quarto-light) .page-meta {
    color: #8c909e;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
  }
}

/* ==========================================================================
   Headings: Remove bottom border from h2
   ========================================================================== */
h2,
.h2 {
  border-bottom: none !important;
}
