/* ==========================================================================
   DerivKit — compact theme overrides (Furo + fallbacks for other themes)
   ========================================================================== */

/* --- Brand palette + theme-agnostic mapping ------------------------------ */
:root {
  --dk-blue:   #3b9ab2;
  --dk-yellow: #e1af00;
  --dk-red:    #f21901;

  /* Theme-agnostic mapping (works across themes) */
  --color-brand-primary: var(--dk-blue);
  --color-brand-content: var(--dk-blue);

  --color-link: var(--dk-blue);
  --color-link--hover: var(--dk-red);
  --color-link--visited: var(--dk-yellow);
}

/* --- Furo variable mapping (both themes) -------------------------------- */
html[data-theme="light"],
html[data-theme="dark"] {
  --color-brand-primary: var(--dk-blue);
  --color-brand-content: var(--dk-blue);

  /* Link variables used by Furo widgets/components */
  --color-link: var(--dk-blue);
  --color-link--hover: var(--dk-red);
  --color-link--visited: var(--dk-yellow);
}

/* Theme-agnostic dark fallback (for themes not using html[data-theme]) */
@media (prefers-color-scheme: dark) {
  .highlight, pre, code {
    background-color: #1b1b1b;
    color: #e6e6e6;
  }
}

/* ==========================================================================
   LINKS — one place to rule them all
   (covers content, sidebars, TOC, related, homepage toctree & tiles)
   ========================================================================== */

/* Theme-agnostic link colors (for themes that don't use html[data-theme]) */
a:link    { color: var(--dk-blue)   !important; }
a:visited { color: var(--dk-yellow) !important; }
a:hover   { color: var(--dk-red)    !important; }
a:active  { color: var(--dk-blue)   !important; }
a { text-decoration-color: currentColor; }

/* Base colors (Furo) */
html[data-theme] a:link    { color: var(--dk-blue)   !important; }
html[data-theme] a:visited { color: var(--dk-yellow) !important; }
html[data-theme] a:hover   { color: var(--dk-red)    !important; }
html[data-theme] a:active  { color: var(--dk-blue)   !important; }

/* Keep underline matching text color (Furo) */
html[data-theme] a { text-decoration-color: currentColor; }

/* Stronger targets for common doc regions (Furo) */
html[data-theme]
  :is(.content, .sidebar-container, nav.toc, .related, .toc-tree,
      .toctree-wrapper, table.contentstable) a:link       { color: var(--dk-blue)   !important; }
html[data-theme]
  :is(.content, .sidebar-container, nav.toc, .related, .toc-tree,
      .toctree-wrapper, table.contentstable) a:visited    { color: var(--dk-yellow) !important; }
html[data-theme]
  :is(.content, .sidebar-container, nav.toc, .related, .toc-tree,
      .toctree-wrapper, table.contentstable) a:hover      { color: var(--dk-red)    !important; }
html[data-theme]
  :is(.content, .sidebar-container, nav.toc, .related, .toc-tree,
      .toctree-wrapper, table.contentstable) a:active     { color: var(--dk-blue)   !important; }

/* Old Sphinx index tiles (noop if not used) */
html[data-theme] a.biglink:link    { color: var(--dk-blue)   !important; }
html[data-theme] a.biglink:visited { color: var(--dk-yellow) !important; }
html[data-theme] a.biglink:hover   { color: var(--dk-red)    !important; }
html[data-theme] a.biglink:active  { color: var(--dk-blue)   !important; }

/* FINAL hammer for the last offender: unvisited hover (Furo) */
html[data-theme] a:link:hover { color: var(--dk-red) !important; }

/* ==========================================================================
   CODE (Pygments) — light mode tokens
   ========================================================================== */
.highlight .k,
.highlight .kd,
.highlight .kn,
.highlight .kp,
.highlight .kr,
.highlight .kt { color: var(--dk-blue); font-weight: 600; }        /* keywords */

.highlight .nf, .highlight .fm,
.highlight .nc, .highlight .ne, .highlight .nn { color: var(--dk-yellow); }  /* funcs/classes */

.highlight .s, .highlight .m { color: var(--dk-red); }             /* strings & numbers */

.highlight .o, .highlight .ow { color: var(--dk-blue); }           /* operators */

.highlight .c, .highlight .ch, .highlight .cm, .highlight .c1,
.highlight .cs, .highlight .cp { color: #6a737d; font-style: italic; }  /* comments */

/* API signatures */
.sig .sig-name, code.descname { color: var(--dk-yellow); }
.sig .k { color: var(--dk-blue); }
a.reference code { color: var(--dk-blue); }

/* ==========================================================================
   CODE (Pygments) — dark mode fixes (Furo + generic)
   ========================================================================== */

/* Furo dark mode */
html[data-theme="dark"] .highlight .k,
html[data-theme="dark"] .highlight .kd,
html[data-theme="dark"] .highlight .kn,
html[data-theme="dark"] .highlight .kp,
html[data-theme="dark"] .highlight .kr,
html[data-theme="dark"] .highlight .kt {
  color: var(--dk-blue) !important;
  font-weight: 600 !important;
}

html[data-theme="dark"] .highlight .nf,
html[data-theme="dark"] .highlight .fm,
html[data-theme="dark"] .highlight .nc,
html[data-theme="dark"] .highlight .ne,
html[data-theme="dark"] .highlight .nn {
  color: var(--dk-yellow) !important;
}

html[data-theme="dark"] .highlight .s,
html[data-theme="dark"] .highlight .m {
  color: var(--dk-red) !important;
}

html[data-theme="dark"] .highlight .c {
  color: #8899aa !important;
  font-style: italic !important;
}

/* Optional: unify code block background/foreground in Furo dark */
html[data-theme="dark"] .highlight,
html[data-theme="dark"] pre,
html[data-theme="dark"] code {
  background-color: #1b1b1b;
  color: #e6e6e6;
}

/* ==========================================================================
   BRAND HEADER (Furo) — logo sizing
   ========================================================================== */

.sidebar-brand img,
.mobile-header .brand img {
  height: 82px;
  width: auto;
}


/* ==========================================================================
   COMPONENT ACCENTS
   ========================================================================== */

/* Admonition borders */
.admonition.note,
.admonition.tip,
.admonition.hint,
.admonition.important { border-left: 0.25rem solid var(--dk-yellow); }

.admonition.warning,
.admonition.caution,
.admonition.attention,
.admonition.danger,
.admonition.error { border-left: 0.25rem solid var(--dk-red); }

/* Team cards */
.team-grid { display: grid; gap: 1rem; }
@media (min-width: 700px){ .team-grid { grid-template-columns: repeat(3, minmax(0,1fr)); } }
.team-card { background: var(--color-background-secondary); padding: 1rem; border-radius: 12px; }
.team-card .headshot { width: 96px; height: 96px; border-radius: 9999px; object-fit: cover; }
.team-card h3 { margin: .5rem 0 0; font-size: 1.05rem; }
.team-card p.role { margin: .25rem 0 .5rem; color: var(--color-foreground-secondary); }
.team-links a { margin-right: .5rem; font-size: .95em; }

/* Names in red, roles in blue */
.name-red  { color: var(--dk-red) !important; font-weight: 700; }
.role-blue { color: var(--dk-blue) !important; font-style: italic; }


/* Make matplotlib plot_directive images smaller in HTML */
div.plot-directive img,
div.figure img {
  max-width: 520px;
  height: auto;
}