/* ───────────────────────────────────────────────
   Nord theme for Material for MkDocs
   Based on Arctic Ice Studio Nord palette
   https://www.nordtheme.com
   ─────────────────────────────────────────────── */

/* Nord color palette */
:root {
  --nord0: #2e3440;
  --nord1: #3b4252;
  --nord2: #434c5e;
  --nord3: #4c566a;
  --nord4: #d8dee9;
  --nord5: #e5e9f0;
  --nord6: #eceff4;
  --nord7: #8fbcbb;
  --nord8: #88c0d0;
  --nord9: #81a1c1;
  --nord10: #5e81ac;
  --nord11: #bf616a;
  --nord12: #d08770;
  --nord13: #ebcb8b;
  --nord14: #a3be8c;
  --nord15: #b48ead;
}

/* ── Light mode (Nord polar day) ────────────────── */
[data-md-color-scheme="nord"] {
  /* Primary (frost) */
  --md-primary-fg-color: var(--nord10);
  --md-primary-fg-color--light: var(--nord9);
  --md-primary-fg-color--dark: var(--nord3);
  --md-primary-bg-color: var(--nord6);
  --md-primary-bg-color--light: var(--nord5);

  /* Accent */
  --md-accent-fg-color: var(--nord8);
  --md-accent-fg-color--light: var(--nord7);
  --md-accent-fg-color--dark: var(--nord10);
  --md-accent-bg-color: var(--nord4);
  --md-accent-bg-color--light: var(--nord5);

  /* Default / text */
  --md-default-fg-color: var(--nord0);
  --md-default-fg-color--light: var(--nord3);
  --md-default-fg-color--lighter: var(--nord4);
  --md-default-fg-color--lightest: var(--nord5);
  --md-default-bg-color: var(--nord6);
  --md-default-bg-color--light: var(--nord5);
  --md-default-bg-color--lighter: var(--nord4);
  --md-default-bg-color--lightest: #fff;

  /* Code */
  --md-code-fg-color: var(--nord0);
  --md-code-bg-color: var(--nord5);
  --md-code-hl-color: rgba(136, 192, 208, 0.15);
  --md-code-hl-number-color: var(--nord10);
  --md-code-hl-special-color: var(--nord15);
  --md-code-hl-function-color: var(--nord9);
  --md-code-hl-constant-color: var(--nord11);
  --md-code-hl-keyword-color: var(--nord10);
  --md-code-hl-string-color: var(--nord14);
  --md-code-hl-name-color: var(--nord0);
  --md-code-hl-operator-color: var(--nord3);
  --md-code-hl-punctuation-color: var(--nord3);
  --md-code-hl-comment-color: var(--nord9);
  --md-code-hl-generic-color: var(--nord3);
  --md-code-hl-variable-color: var(--nord12);

  /* Typeset */
  --md-typeset-color: var(--nord0);
  --md-typeset-a-color: var(--nord10);
  --md-typeset-mark-color: rgba(235, 203, 139, 0.5);
  --md-typeset-del-color: rgba(191, 97, 106, 0.15);
  --md-typeset-ins-color: rgba(163, 190, 140, 0.15);
  --md-typeset-kbd-color: var(--nord5);
  --md-typeset-kbd-accent-color: var(--nord4);
  --md-typeset-kbd-border-color: var(--nord3);

  /* Admonition */
  --md-admonition-fg-color: var(--nord0);
  --md-admonition-bg-color: var(--nord6);

  /* Footer */
  --md-footer-fg-color: var(--nord4);
  --md-footer-fg-color--light: var(--nord5);
  --md-footer-fg-color--lighter: var(--nord6);
  --md-footer-bg-color: var(--nord0);
  --md-footer-bg-color--dark: #000;
}

/* ── Dark mode (Nord polar night) ───────────────── */
[data-md-color-scheme="nord-dark"] {
  --md-hue: 213;

  /* Primary (frost) */
  --md-primary-fg-color: var(--nord8);
  --md-primary-fg-color--light: var(--nord9);
  --md-primary-fg-color--dark: var(--nord10);
  --md-primary-bg-color: var(--nord0);
  --md-primary-bg-color--light: var(--nord1);

  /* Accent */
  --md-accent-fg-color: var(--nord9);
  --md-accent-fg-color--light: var(--nord8);
  --md-accent-fg-color--dark: var(--nord10);
  --md-accent-bg-color: var(--nord4);
  --md-accent-bg-color--light: var(--nord5);

  /* Default / text */
  --md-default-fg-color: var(--nord4);
  --md-default-fg-color--light: var(--nord5);
  --md-default-fg-color--lighter: var(--nord6);
  --md-default-fg-color--lightest: var(--nord3);
  --md-default-bg-color: var(--nord0);
  --md-default-bg-color--light: var(--nord1);
  --md-default-bg-color--lighter: var(--nord2);
  --md-default-bg-color--lightest: var(--nord3);

  /* Code */
  --md-code-fg-color: var(--nord4);
  --md-code-bg-color: var(--nord1);
  --md-code-hl-color: rgba(136, 192, 208, 0.2);
  --md-code-hl-number-color: var(--nord9);
  --md-code-hl-special-color: var(--nord15);
  --md-code-hl-function-color: var(--nord8);
  --md-code-hl-constant-color: var(--nord11);
  --md-code-hl-keyword-color: var(--nord9);
  --md-code-hl-string-color: var(--nord14);
  --md-code-hl-name-color: var(--nord4);
  --md-code-hl-operator-color: var(--nord5);
  --md-code-hl-punctuation-color: var(--nord5);
  --md-code-hl-comment-color: var(--nord3);
  --md-code-hl-generic-color: var(--nord5);
  --md-code-hl-variable-color: var(--nord12);

  /* Typeset */
  --md-typeset-color: var(--nord4);
  --md-typeset-a-color: var(--nord8);
  --md-typeset-mark-color: rgba(235, 203, 139, 0.35);
  --md-typeset-del-color: rgba(191, 97, 106, 0.2);
  --md-typeset-ins-color: rgba(163, 190, 140, 0.2);
  --md-typeset-kbd-color: var(--nord1);
  --md-typeset-kbd-accent-color: var(--nord2);
  --md-typeset-kbd-border-color: var(--nord3);

  /* Admonition */
  --md-admonition-fg-color: var(--nord4);
  --md-admonition-bg-color: var(--nord1);

  /* Footer */
  --md-footer-fg-color: var(--nord5);
  --md-footer-fg-color--light: var(--nord4);
  --md-footer-fg-color--lighter: var(--nord2);
  --md-footer-bg-color: #000;
  --md-footer-bg-color--dark: #000;

  /* Shadows */
  --md-shadow-z1: 0 1px 3px rgba(0,0,0,0.3), 0 1px 2px rgba(0,0,0,0.4);
  --md-shadow-z2: 0 3px 6px rgba(0,0,0,0.3), 0 2px 4px rgba(0,0,0,0.4);
  --md-shadow-z3: 0 6px 12px rgba(0,0,0,0.3), 0 4px 8px rgba(0,0,0,0.4);
}

/* ── Common overrides ──────────────────────────── */

/* Header logo */
.md-logo {
  color: var(--md-primary-bg-color) !important;
}

/* Navigation */
.md-nav__link:hover {
  color: var(--md-accent-fg-color) !important;
}

.md-nav__link--active {
  color: var(--md-accent-fg-color) !important;
}

/* Tabs */
.md-tabs__link--active {
  color: var(--nord8) !important;
  border-bottom: 2px solid var(--nord8);
}

.md-tabs__link:hover {
  color: var(--md-accent-fg-color) !important;
}

/* Search */
.md-search-result__article--document .md-search-result__title {
  color: var(--nord8);
}

/* Mermaid diagrams — transparent background */
.mermaid {
  background: transparent !important;
}

/* Admonition icons */
:root .md-typeset .admonition-title::before,
:root .md-typeset details summary::before {
  color: var(--nord8);
}

/* Nord-themed admonition color overrides */
.md-typeset :is(.note, .admonition.note) {
  border-left: 0.25rem solid var(--nord8);
}

.md-typeset :is(.note, .admonition.note) .admonition-title {
  background-color: rgba(136, 192, 208, 0.1);
}

.md-typeset :is(.note, .admonition.note) .admonition-title::before {
  color: var(--nord8);
}

.md-typeset :is(.tip, .admonition.tip),
.md-typeset :is(.hint, .admonition.hint) {
  border-left: 0.25rem solid var(--nord14);
}

.md-typeset :is(.tip, .admonition.tip) .admonition-title,
.md-typeset :is(.hint, .admonition.hint) .admonition-title {
  background-color: rgba(163, 190, 140, 0.1);
}

.md-typeset :is(.tip, .admonition.tip) .admonition-title::before,
.md-typeset :is(.hint, .admonition.hint) .admonition-title::before {
  color: var(--nord14);
}

.md-typeset :is(.warning, .admonition.warning),
.md-typeset :is(.caution, .admonition.caution),
.md-typeset :is(.attention, .admonition.attention) {
  border-left: 0.25rem solid var(--nord13);
}

.md-typeset :is(.warning, .admonition.warning) .admonition-title,
.md-typeset :is(.caution, .admonition.caution) .admonition-title,
.md-typeset :is(.attention, .admonition.attention) .admonition-title {
  background-color: rgba(235, 203, 139, 0.1);
}

.md-typeset :is(.warning, .admonition.warning) .admonition-title::before,
.md-typeset :is(.caution, .admonition.caution) .admonition-title::before,
.md-typeset :is(.attention, .admonition.attention) .admonition-title::before {
  color: var(--nord13);
}

.md-typeset :is(.danger, .admonition.danger),
.md-typeset :is(.error, .admonition.error) {
  border-left: 0.25rem solid var(--nord11);
}

.md-typeset :is(.danger, .admonition.danger) .admonition-title,
.md-typeset :is(.error, .admonition.error) .admonition-title {
  background-color: rgba(191, 97, 106, 0.1);
}

.md-typeset :is(.danger, .admonition.danger) .admonition-title::before,
.md-typeset :is(.error, .admonition.error) .admonition-title::before {
  color: var(--nord11);
}

/* Inline code styling */
.md-typeset code {
  background-color: var(--md-code-bg-color);
  border: 1px solid var(--nord2);
  border-radius: 3px;
  padding: 0 0.25em;
  font-size: 0.85em;
}

/* Tab styling */
.md-typeset .tabbed-set {
  border-radius: 4px;
  overflow: hidden;
}

.md-typeset .tabbed-set .tabbed-labels {
  background: var(--md-default-bg-color--light);
  box-shadow: 0 -1px 0 var(--nord2) inset;
}

.md-typeset .tabbed-set input:checked + .tabbed-labels label {
  color: var(--nord8);
  box-shadow: 0 2px 0 var(--nord8) inset;
}

/* Button styling */
.md-typeset .md-button {
  border-color: var(--nord8);
  color: var(--nord8);
}

.md-typeset .md-button--primary {
  background-color: var(--nord8);
  border-color: var(--nord8);
  color: var(--nord0);
}

.md-typeset .md-button:hover {
  background-color: var(--nord9);
  border-color: var(--nord9);
  color: var(--nord0);
}
