/* Datahub brand overrides for Material for MkDocs.
 *
 * Source of truth for these values is the app's design system at
 *   client/app/design-system/tokens/colors.ts
 *   client/app/design-system/presets/datahub.ts
 *   client/app/design-system/tokens/typography.ts
 *
 * Keep in sync when the brand palette or font stack changes in the app.
 * Lunaris orange is the only true brand color; everything else mirrors the
 * app's light / dark semantic surfaces so the docs site feels like an
 * extension of the product, not a third-party page. */

/* ─── Light scheme ────────────────────────────────────────────────── */
[data-md-color-scheme="default"] {
  /* Header / nav background = white (matches the app's white sidebar &
     top bar in light mode). The brand colour is reserved for accents,
     never the header chrome. */
  --md-primary-fg-color: #ffffff;
  --md-primary-fg-color--light: #ffffff;
  --md-primary-fg-color--dark: #f4f4f5;
  --md-primary-bg-color: #09090b;            /* text on header */
  --md-primary-bg-color--light: #71717a;

  /* Brand accent (links, focus rings, active nav, search highlights).
     We use the darker shade (#E67700) for body links to preserve AAA
     contrast on white. */
  --md-accent-fg-color: #e67700;
  --md-accent-fg-color--transparent: rgba(255, 132, 0, 0.1);
  --md-accent-bg-color: #ffffff;
  --md-accent-bg-color--light: #ffffff;

  /* Surfaces — match tokens/colors.ts lightSemanticColors */
  --md-default-bg-color: #ffffff;            /* surface (page) */
  --md-default-bg-color--light: rgba(0, 0, 0, 0.04);
  --md-default-bg-color--lighter: rgba(0, 0, 0, 0.02);
  --md-default-bg-color--lightest: #f8f8f9;  /* canvas */

  --md-default-fg-color: #09090b;            /* text */
  --md-default-fg-color--light: #71717a;     /* textSecondary */
  --md-default-fg-color--lighter: #a1a1aa;   /* textMuted */
  --md-default-fg-color--lightest: #f4f4f5;  /* surfaceShell */

  /* Code blocks — Sentry-style near-white inset */
  --md-code-bg-color: #f5f5f7;               /* surfaceInput */
  --md-code-fg-color: #09090b;
  --md-code-hl-color: rgba(255, 132, 0, 0.15);

  /* Body links use the darker brand shade for legibility */
  --md-typeset-a-color: #e67700;

  /* Footer */
  --md-footer-bg-color: #18181f;             /* lunaris.sidebar */
  --md-footer-bg-color--dark: #111118;       /* lunaris.bg */
  --md-footer-fg-color: #ffffff;
  --md-footer-fg-color--light: #b8b9c2;
  --md-footer-fg-color--lighter: #8a8a96;
}

/* ─── Dark scheme ─────────────────────────────────────────────────── */
[data-md-color-scheme="slate"] {
  /* Lunaris dark canvas for the header — matches the app's #18181F sidebar
     in dark mode. Brand orange stays an accent only. */
  --md-primary-fg-color: #18181f;
  --md-primary-fg-color--light: #1a1a22;
  --md-primary-fg-color--dark: #111118;
  --md-primary-bg-color: #ffffff;
  --md-primary-bg-color--light: #b8b9c2;

  /* Slightly brighter orange in dark mode for contrast on the dark canvas */
  --md-accent-fg-color: #ff9520;
  --md-accent-fg-color--transparent: rgba(255, 132, 0, 0.18);
  --md-accent-bg-color: #18181f;
  --md-accent-bg-color--light: #1a1a22;

  --md-default-bg-color: #111118;            /* canvas */
  --md-default-bg-color--light: #1a1a22;     /* surface */
  --md-default-bg-color--lighter: #232330;   /* surfaceMuted */
  --md-default-bg-color--lightest: #2a2a32;  /* surfaceShell */

  --md-default-fg-color: #ffffff;
  --md-default-fg-color--light: #b8b9c2;
  --md-default-fg-color--lighter: #8a8a96;
  --md-default-fg-color--lightest: #3a3a42;

  --md-code-bg-color: #16161e;               /* surfaceInput */
  --md-code-fg-color: #ffffff;
  --md-code-hl-color: rgba(255, 149, 32, 0.2);

  --md-typeset-a-color: #ff9520;

  --md-footer-bg-color: #18181f;
  --md-footer-bg-color--dark: #111118;
  --md-footer-fg-color: #ffffff;
  --md-footer-fg-color--light: #b8b9c2;
}

/* ─── Logo sizing + dark-mode swap ────────────────────────────────── *
 * The vendored SVG wordmarks are roughly 4 : 1 wide-to-tall. Material's
 * default header logo slot is square, so we widen it and let the image
 * fill naturally. Height matches the app's top-bar logo (~26 px on a
 * standard density screen).                                                */
.md-header__button.md-logo {
  margin: 0.2rem 0.4rem 0.2rem 0;
  padding: 0;
}
.md-header__button.md-logo img,
.md-header__button.md-logo svg {
  height: 1.6rem;
  width: auto;
}

/* The default theme logo is the dark-wordmark SVG (legible on the white
 * light-mode header). When the user flips to the slate scheme, swap to the
 * white-wordmark variant so the wordmark stays readable on the Lunaris dark
 * header. ``content`` works for <img> in modern browsers; we set the same
 * size to avoid a layout shift on the swap. */
[data-md-color-scheme="slate"] .md-header__button.md-logo img {
  content: url("../assets/datahub-logo-dark.svg");
}

/* ─── Typography polish ───────────────────────────────────────────── *
 * Mirror the app's heading scale (tokens/typography.ts: tight letter-
 * spacing, semibold weight) so docs headings feel native.            */
.md-typeset h1,
.md-typeset h2,
.md-typeset h3 {
  font-weight: 600;
  letter-spacing: -0.01em;
}
.md-typeset h1 {
  font-weight: 700;
  letter-spacing: -0.02em;
}

/* Slightly tighter body line-height than Material's default 1.6 — matches
   the app's body-md (1.6) but feels more compact in docs prose. */
.md-typeset {
  line-height: 1.65;
}

/* ─── Admonition tint with brand orange (the "tip" / "info" callouts) */
.md-typeset .admonition.tip,
.md-typeset details.tip {
  border-color: #ff8400;
}
.md-typeset .tip > .admonition-title,
.md-typeset .tip > summary {
  background-color: rgba(255, 132, 0, 0.1);
  border-color: rgba(255, 132, 0, 0.3);
}
.md-typeset .tip > .admonition-title::before,
.md-typeset .tip > summary::before {
  background-color: #ff8400;
}

/* ─── Sidebar polish ──────────────────────────────────────────────── *
 * Supabase-style uppercase section labels. Material's nav.sections
 * already groups items; we just restyle the section header so the
 * left rail reads as "FUNDAMENTALS / WORKING WITH YOUR DATABASE".    */
.md-nav__title[for] {
  text-transform: uppercase;
  font-size: 0.68rem;
  letter-spacing: 0.08em;
  font-weight: 600;
  color: var(--md-default-fg-color--lighter);
  padding-top: 1rem;
}
/* Tighter active-link emphasis to mirror Supabase's bright accent */
.md-nav__link--active {
  font-weight: 600;
}

/* ─── Breadcrumbs ─────────────────────────────────────────────────── */
.md-path {
  margin-bottom: 0.4rem;
  font-size: 0.72rem;
  letter-spacing: 0.01em;
  color: var(--md-default-fg-color--light);
}
.md-path__item + .md-path__item::before {
  opacity: 0.5;
}

/* ─── Code block polish (Supabase / Sentry near-flat style) ───────── */
.md-typeset pre > code,
.md-typeset .highlight pre {
  border: 1px solid var(--md-default-fg-color--lightest);
  border-radius: 8px;
}
[data-md-color-scheme="slate"] .md-typeset pre > code,
[data-md-color-scheme="slate"] .md-typeset .highlight pre {
  border-color: rgba(255, 255, 255, 0.06);
}
.md-typeset .highlight .filename,
.md-typeset .highlighttable .filename {
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.02em;
  color: var(--md-default-fg-color--light);
  border-radius: 8px 8px 0 0;
}
/* Copy-button: lighter, hover-only like Supabase */
.md-clipboard {
  color: var(--md-default-fg-color--lighter);
  opacity: 0;
  transition: opacity 120ms ease, color 120ms ease;
}
.md-typeset .highlight:hover .md-clipboard {
  opacity: 1;
}
.md-clipboard:hover {
  color: var(--md-accent-fg-color);
}

/* ─── Right-rail (AI tools + feedback) ────────────────────────────── *
 * The custom partial in overrides/partials/toc.html injects
 * <div class="dh-rail">…</div> ABOVE the default Material TOC.       *
 * Material includes partials/toc.html in TWO places: the dedicated
 * secondary sidebar (where we want the rail) AND inside the active
 * nav item in the primary sidebar (the mobile / navigation.indexes
 * inline expansion). We only want one rail per page, so suppress the
 * nav-item copy. */
.md-sidebar--primary .dh-rail {
  display: none;
}
.dh-rail {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  margin-bottom: 1.25rem;
  padding-bottom: 1rem;
  border-bottom: 1px solid var(--md-default-fg-color--lightest);
}
.dh-rail__group {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}
.dh-rail__label {
  font-size: 0.66rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--md-default-fg-color--light);
  margin: 0;
}
.dh-rail__buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}
.dh-rail__btn {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.32rem 0.55rem;
  font-size: 0.72rem;
  font-weight: 500;
  color: var(--md-default-fg-color--light);
  background: transparent;
  border: 1px solid var(--md-default-fg-color--lightest);
  border-radius: 6px;
  cursor: pointer;
  text-decoration: none;
  font-family: inherit;
  transition: color 120ms ease, border-color 120ms ease, background 120ms ease;
}
.dh-rail__btn:hover,
.dh-rail__btn:focus-visible {
  color: var(--md-accent-fg-color);
  border-color: var(--md-accent-fg-color);
  background: var(--md-accent-fg-color--transparent);
  outline: none;
}
.dh-rail__btn[aria-pressed="true"] {
  color: var(--md-accent-fg-color);
  border-color: var(--md-accent-fg-color);
  background: var(--md-accent-fg-color--transparent);
}
.dh-rail__btn svg {
  flex-shrink: 0;
}
.dh-rail__feedback-thanks {
  font-size: 0.74rem;
  color: var(--md-default-fg-color--light);
  margin: 0;
}
.dh-rail__feedback-thanks a {
  color: var(--md-accent-fg-color);
  text-decoration: none;
}
.dh-rail__feedback-thanks a:hover {
  text-decoration: underline;
}

/* ─── Hero landing ────────────────────────────────────────────────── *
 * Mirrors Supabase docs landing: brand intro on the left, a raised
 * "Getting Started" panel on the right, then product/module/library
 * card rows below.                                                    */
.dh-hero {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 360px);
  gap: 2.5rem;
  align-items: center;
  margin: 1rem 0 3.5rem;
}
.dh-hero__intro h1 {
  font-size: 2rem;
  margin: 0 0 0.75rem;
}
.dh-hero__intro p {
  font-size: 0.95rem;
  color: var(--md-default-fg-color--light);
  max-width: 36rem;
  margin: 0;
}

@media (max-width: 960px) {
  .dh-hero {
    grid-template-columns: minmax(0, 1fr);
    gap: 2rem;
  }
}

.dh-quickstart {
  background: var(--md-default-bg-color--lightest);
  border: 1px solid var(--md-default-fg-color--lightest);
  border-radius: 12px;
  padding: 1.25rem;
}
[data-md-color-scheme="slate"] .dh-quickstart {
  background: rgba(255, 255, 255, 0.02);
  border-color: rgba(255, 255, 255, 0.06);
}
.dh-quickstart__header {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  margin: 0 0 0.35rem;
}
.dh-quickstart__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 6px;
  background: var(--md-accent-fg-color--transparent);
  color: var(--md-accent-fg-color);
}
.dh-quickstart__header h2 {
  font-size: 1rem;
  font-weight: 600;
  margin: 0;
}
.dh-quickstart__lede {
  font-size: 0.78rem;
  color: var(--md-default-fg-color--light);
  margin: 0 0 1rem;
}
.dh-quickstart__grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.5rem;
}
.dh-quickstart__tile {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.4rem;
  padding: 0.85rem 0.5rem;
  border-radius: 8px;
  background: var(--md-default-bg-color);
  border: 1px solid var(--md-default-fg-color--lightest);
  color: var(--md-default-fg-color);
  text-decoration: none;
  text-align: center;
  transition: border-color 120ms ease, transform 120ms ease, color 120ms ease;
}
[data-md-color-scheme="slate"] .dh-quickstart__tile {
  background: rgba(255, 255, 255, 0.03);
  border-color: rgba(255, 255, 255, 0.06);
}
.dh-quickstart__tile:hover,
.dh-quickstart__tile:focus-visible {
  border-color: var(--md-accent-fg-color);
  color: var(--md-accent-fg-color);
  transform: translateY(-1px);
  outline: none;
}
.dh-quickstart__tile-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--md-default-fg-color--light);
}
.dh-quickstart__tile:hover .dh-quickstart__tile-icon,
.dh-quickstart__tile:focus-visible .dh-quickstart__tile-icon {
  color: var(--md-accent-fg-color);
}
.dh-quickstart__tile-label {
  font-size: 0.72rem;
  font-weight: 500;
}

/* ─── Section headers ─────────────────────────────────────────────── */
.dh-section {
  margin: 3rem 0;
}
.dh-section__header {
  margin-bottom: 1rem;
}
.dh-section__header h2 {
  font-size: 1rem;
  font-weight: 600;
  letter-spacing: -0.005em;
  color: var(--md-default-fg-color);
  margin: 0;
}

/* ─── Products grid ───────────────────────────────────────────────── */
.dh-product-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 1rem;
}
.dh-product-card {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  padding: 1.25rem;
  background: var(--md-default-bg-color--lightest);
  border: 1px solid var(--md-default-fg-color--lightest);
  border-radius: 12px;
  text-decoration: none;
  color: var(--md-default-fg-color);
  transition: border-color 120ms ease, transform 120ms ease, background 120ms ease;
}
[data-md-color-scheme="slate"] .dh-product-card {
  background: rgba(255, 255, 255, 0.02);
  border-color: rgba(255, 255, 255, 0.06);
}
.dh-product-card:hover,
.dh-product-card:focus-visible {
  border-color: var(--md-accent-fg-color);
  transform: translateY(-2px);
  outline: none;
}
.dh-product-card__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: 6px;
  background: var(--md-default-bg-color);
  border: 1px solid var(--md-default-fg-color--lightest);
  color: var(--md-default-fg-color--light);
  margin-bottom: 0.25rem;
}
[data-md-color-scheme="slate"] .dh-product-card__icon {
  background: rgba(255, 255, 255, 0.04);
  border-color: rgba(255, 255, 255, 0.08);
}
.dh-product-card:hover .dh-product-card__icon,
.dh-product-card:focus-visible .dh-product-card__icon {
  color: var(--md-accent-fg-color);
  border-color: var(--md-accent-fg-color);
}
.dh-product-card h3 {
  font-size: 0.92rem;
  font-weight: 600;
  margin: 0;
  color: var(--md-default-fg-color);
}
.dh-product-card p {
  font-size: 0.78rem;
  line-height: 1.5;
  color: var(--md-default-fg-color--light);
  margin: 0;
}

/* ─── Modules row (smaller text-link cards) ───────────────────────── */
.dh-module-row {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 0.6rem;
}
.dh-module-card {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  padding: 0.7rem 0.85rem;
  background: var(--md-default-bg-color--lightest);
  border: 1px solid var(--md-default-fg-color--lightest);
  border-radius: 8px;
  text-decoration: none;
  color: var(--md-default-fg-color);
  font-size: 0.82rem;
  transition: border-color 120ms ease, color 120ms ease;
}
[data-md-color-scheme="slate"] .dh-module-card {
  background: rgba(255, 255, 255, 0.02);
  border-color: rgba(255, 255, 255, 0.06);
}
.dh-module-card:hover,
.dh-module-card:focus-visible {
  border-color: var(--md-accent-fg-color);
  color: var(--md-accent-fg-color);
  outline: none;
}
.dh-module-card__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--md-default-fg-color--light);
}
.dh-module-card:hover .dh-module-card__icon,
.dh-module-card:focus-visible .dh-module-card__icon {
  color: var(--md-accent-fg-color);
}

/* ─── Libraries row (icon + label) ────────────────────────────────── */
.dh-library-row {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 0.6rem;
}
.dh-library-card {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  padding: 0.7rem 0.9rem;
  background: var(--md-default-bg-color--lightest);
  border: 1px solid var(--md-default-fg-color--lightest);
  border-radius: 8px;
  color: var(--md-default-fg-color--light);
  font-size: 0.82rem;
}
[data-md-color-scheme="slate"] .dh-library-card {
  background: rgba(255, 255, 255, 0.02);
  border-color: rgba(255, 255, 255, 0.06);
}
.dh-library-card[aria-disabled="true"] {
  opacity: 0.6;
  cursor: not-allowed;
}
.dh-library-card__icon {
  color: var(--md-default-fg-color--lighter);
}
.dh-library-card__label {
  font-weight: 500;
}

/* ─── Fallback "Where to start" section on the landing ────────────── */
.dh-fallback {
  margin-top: 4rem;
  padding-top: 2rem;
  border-top: 1px solid var(--md-default-fg-color--lightest);
}
.dh-fallback h2 {
  font-size: 1rem;
  font-weight: 600;
  margin-bottom: 0.75rem;
}

/* ─── Toast (used by ai-tools.js + feedback.js) ───────────────────── */
.dh-toast {
  position: fixed;
  bottom: 1.5rem;
  left: 50%;
  transform: translateX(-50%) translateY(20px);
  background: var(--md-default-bg-color);
  color: var(--md-default-fg-color);
  border: 1px solid var(--md-default-fg-color--lightest);
  border-radius: 8px;
  padding: 0.55rem 0.95rem;
  font-size: 0.8rem;
  font-weight: 500;
  box-shadow: 0 4px 18px rgba(0, 0, 0, 0.12);
  opacity: 0;
  pointer-events: none;
  transition: opacity 160ms ease, transform 160ms ease;
  z-index: 9999;
}
[data-md-color-scheme="slate"] .dh-toast {
  background: #1a1a22;
  border-color: rgba(255, 255, 255, 0.08);
  box-shadow: 0 6px 22px rgba(0, 0, 0, 0.45);
}
.dh-toast--visible {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}
