/*
Lucia Canon — Publish tuning v4.5
Goal: stay close to standard Obsidian/OpenAI-style docs.
Changes:
- added centralized tuning knobs
- no homepage logo
- callouts use #FEF8D9 fill and #FAD889 stroke
- black callout headers
- no gradients
- 5-8px radius site-wide
- sidebar/site title black
- coding-language fenced blocks use dark charcoal artifact styling
- added 20 semantic custom callout types for Lucia + Eval Labs docs
*/

body,
.lucia-note,
.published-container {
  --lucia-yellow: #FFD100;
  --lucia-gold: #FFBC17;
  --lucia-amber: #FEA91A;
  --lucia-orange: #FF8800;
  --lucia-deep-orange: #FF7D0E;
  --lucia-ink: #0A0A0A;
  --lucia-white: #FFFFFF;

  --lucia-link: #7a4d00;
  --lucia-link-hover: #0A0A0A;
  --lucia-border: rgba(10,10,10,.10);
  --lucia-callout-fill: #FEF8D9;
  --lucia-callout-stroke: #FAD889;
  --lucia-radius: 7px;

  /*
  ------------------------------------------------------------
  LUCIA CANON — TUNING KNOBS
  ------------------------------------------------------------
  Edit these values first for quick manual tuning.
  */

  /* Global reading rhythm */
  --lucia-body-line-height: 1.62;

  /* Status list rows */
  --lucia-status-list-gap: .38rem;
  --lucia-status-list-margin-top: .8rem;
  --lucia-status-list-margin-bottom: 1.2rem;

  --lucia-status-row-padding-y: .85rem;
  --lucia-status-row-padding-x: .65rem;
  --lucia-status-row-line-height: 1.35;
  --lucia-status-row-radius: var(--lucia-radius);
  --lucia-status-row-background: rgba(255,255,255,.72);
  --lucia-status-row-border: 1px solid rgba(10,10,10,.08);

  --lucia-status-bullet-size: .7rem;
  --lucia-status-bullet-gap: .42rem;
  --lucia-status-bullet-color: var(--lucia-yellow);

  /* Panels */
  --lucia-panel-padding-y: .8rem;
  --lucia-panel-padding-x: .9rem;
  --lucia-panel-gap: .65rem;

  /* Callouts */
  --lucia-callout-padding-y: 1.15rem;
  --lucia-callout-padding-x: 1.35rem;
  --lucia-callout-title-gap: .7rem;
  --lucia-callout-body-line-height: 1.55;

  /* Color swatches */
  --lucia-swatch-size: 30px;
  --lucia-swatch-radius: 2px;
  --lucia-swatch-gap: 12px;
  --lucia-hex-min-width: 100px;
  --lucia-hex-padding-y: 6px;
  --lucia-hex-padding-x: 10px;
  --lucia-hex-radius: 3px;

  /* Named fenced code blocks: ```json, ```html, ```css, ```js, etc. */
  --lucia-code-bg: #111111;
  --lucia-code-border: #000000;
  --lucia-code-radius: 10px;
  --lucia-code-padding-y: 18px;
  --lucia-code-padding-x: 20px;
  --lucia-code-font-size: 0.92rem;
  --lucia-code-line-height: 1.65;
  --lucia-code-text: #f5f5f5;

  /* Inline code */
  --lucia-inline-code-bg: #f1f1ef;
  --lucia-inline-code-text: #111111;
  --lucia-inline-code-border: #deded9;
}

/* Keep Obsidian baseline. Only small polish. */

.markdown-preview-view.lucia-note,
.markdown-rendered.lucia-note,
.published-container .markdown-rendered {
  color: var(--lucia-ink);
}

.lucia-note h1,
.published-container h1 {
  letter-spacing: -0.03em;
  line-height: 1.07;
}

.lucia-note h2,
.published-container h2 {
  letter-spacing: -0.018em;
  margin-top: 2.1em;
}

.lucia-note p,
.lucia-note li,
.published-container p,
.published-container li {
  line-height: var(--lucia-body-line-height);
}

.lucia-note a,
.published-container a {
  color: var(--lucia-link);
  text-underline-offset: .18em;
}

.lucia-note a:hover,
.published-container a:hover {
  color: var(--lucia-link-hover);
}

.lucia-note hr,
.published-container hr {
  border: 0;
  border-top: 1px solid rgba(10,10,10,.10);
  margin: 1.85rem 0;
}

/* Global radius tightening */
.lucia-note .callout,
.published-container .callout,
.lucia-note pre,
.published-container pre,
.lucia-panel,
.lucia-status-list li,
input,
.search-input-container input {
  border-radius: var(--lucia-radius) !important;
}

/* Callouts: simple, black header, no gradients */
.lucia-note .callout,
.published-container .callout {
  background: var(--lucia-callout-fill) !important;
  border: 1px solid var(--lucia-callout-stroke) !important;
  box-shadow: none !important;
}

.lucia-note .callout-title,
.published-container .callout-title {
  color: var(--lucia-ink) !important;
  background: transparent !important;
  font-weight: 750;
  letter-spacing: -0.01em;
}

.lucia-note .callout-content,
.published-container .callout-content {
  background: transparent !important;
}

/* Remove per-callout theme colors/gradients */
.lucia-note .callout[data-callout],
.published-container .callout[data-callout] {
  background: var(--lucia-callout-fill) !important;
  border-color: var(--lucia-callout-stroke) !important;
}

/* ============================================================
   Lucia Canon — Custom Callout Types Library v4
   Search marker: LUCIA_CUSTOM_CALLOUT_TYPES_LIBRARY

   v4 note:
   Verified and Atom use embedded SVG icons so Obsidian cannot fall back
   to the default pencil icon when its bundled Lucide version lags.

   Usage in Obsidian:
   > [!runtime] Runtime behavior
   > This note explains live implementation behavior.

   Naming rule:
   Use the semantic callout name in docs. The Lucide icon is only
   the visual treatment behind that meaning.
   ============================================================ */

/* 01 — Verified / approved / confirmed
   Icon source: Lucide badge-check
   Embedded as SVG to force the badge-shaped checkmark instead of Obsidian's fallback pencil/circle-check. */
.callout[data-callout="verified"],
.callout[data-callout="badge-check"] {
  --callout-icon: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg>';
  --callout-color: 34, 197, 94;
}

/* 02 — Canon / doctrine / product truth */
.callout[data-callout="canon"] {
  --callout-icon: lucide-book-open;
  --callout-color: 255, 209, 0;
}

/* 03 — Runtime / live system behavior */
.callout[data-callout="runtime"] {
  --callout-icon: lucide-network;
  --callout-color: 14, 165, 233;
}

/* 04 — Eval / evaluation coverage */
.callout[data-callout="eval"] {
  --callout-icon: lucide-beaker;
  --callout-color: 168, 85, 247;
}

/* 05 — Source / source of truth / inspect this file */
.callout[data-callout="source"] {
  --callout-icon: lucide-file-search;
  --callout-color: 120, 113, 108;
}

/* 06 — Decision / routing / selected path */
.callout[data-callout="decision"] {
  --callout-icon: lucide-git-branch;
  --callout-color: 249, 115, 22;
}

/* 07 — Risk / caution / regression watch */
.callout[data-callout="risk"] {
  --callout-icon: lucide-alert-triangle;
  --callout-color: 245, 158, 11;
}

/* 08 — Blocker / stop-ship / critical issue */
.callout[data-callout="blocker"] {
  --callout-icon: lucide-alert-octagon;
  --callout-color: 239, 68, 68;
}

/* 09 — Deploy / release / environment move */
.callout[data-callout="deploy"] {
  --callout-icon: lucide-rocket;
  --callout-color: 59, 130, 246;
}

/* 10 — Data / records / fixtures / state */
.callout[data-callout="data"] {
  --callout-icon: lucide-database;
  --callout-color: 20, 184, 166;
}

/* 11 — Prompt / language / behavior surface */
.callout[data-callout="prompt"] {
  --callout-icon: lucide-message-square;
  --callout-color: 236, 72, 153;
}

/* 12 — Model / intelligence / reasoning layer */
.callout[data-callout="model"] {
  --callout-icon: lucide-cpu;
  --callout-color: 99, 102, 241;
}

/* 13 — Workflow / process / operating loop */
.callout[data-callout="workflow"] {
  --callout-icon: lucide-list-checks;
  --callout-color: 132, 204, 22;
}

/* 14 — Test / validation / must-pass checks */
.callout[data-callout="test"] {
  --callout-icon: lucide-clipboard-check;
  --callout-color: 34, 197, 94;
}

/* 15 — Bug / defect / broken behavior */
.callout[data-callout="bug"] {
  --callout-icon: lucide-bug;
  --callout-color: 220, 38, 38;
}

/* 16 — Owner / operator / human-in-the-loop */
.callout[data-callout="owner"] {
  --callout-icon: lucide-user-check;
  --callout-color: 217, 119, 6;
}

/* 17 — Villa / property / flagship context */
.callout[data-callout="villa"] {
  --callout-icon: lucide-home;
  --callout-color: 180, 83, 9;
}

/* 18 — Payment / revenue / money movement */
.callout[data-callout="payment"] {
  --callout-icon: lucide-dollar-sign;
  --callout-color: 22, 163, 74;
}

/* 19 — Trust / safety / confidence boundary */
.callout[data-callout="trust"] {
  --callout-icon: lucide-shield-check;
  --callout-color: 37, 99, 235;
}

/* 20 — Maintenance / repair / property ops */
.callout[data-callout="maintenance"] {
  --callout-icon: lucide-wrench;
  --callout-color: 75, 85, 99;
}

/* 21 — Atom / intelligence / systems thinking
   Icon source: Lucide atom
   Embedded as SVG to force the exact atom icon. */
.callout[data-callout="atom"],
.callout[data-callout="intelligence"] {
  --callout-icon: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="1"/><path d="M20.2 20.2c2.04-2.03.02-7.36-4.5-11.9-4.54-4.52-9.87-6.54-11.9-4.5-2.04 2.03-.02 7.36 4.5 11.9 4.54 4.52 9.87 6.54 11.9 4.5Z"/><path d="M15.7 15.7c4.52-4.54 6.54-9.87 4.5-11.9-2.03-2.04-7.36-.02-11.9 4.5-4.52 4.54-6.54 9.87-4.5 11.9 2.03 2.04 7.36-.02 11.9-4.5Z"/></svg>';
  --callout-color: 99, 102, 241;
}

/* Code: close to docs default for unnamed/plain fenced blocks */
.lucia-note pre,
.published-container pre {
  border: 1px solid rgba(10,10,10,.08);
  background: #f7f7f5;
}

/* Inline code — keep one-line snippets light and subtle */
.lucia-note :not(pre) > code,
.published-container :not(pre) > code,
.markdown-rendered :not(pre) > code,
.markdown-preview-view :not(pre) > code {
  background: var(--lucia-inline-code-bg) !important;
  color: var(--lucia-inline-code-text) !important;
  border: 1px solid var(--lucia-inline-code-border) !important;
  border-radius: 5px !important;
  padding: .12em .35em !important;
  font-family: "JetBrains Mono", "SF Mono", Menlo, Monaco, Consolas, monospace !important;
  font-size: .88em !important;
}

/* Sidebar and Publish chrome */
.site-body-left-column-site-name,
.site-body-left-column-site-name a,
.published-container .site-body-left-column-site-name,
.published-container .site-body-left-column-site-name a {
  color: var(--lucia-ink) !important;
  font-weight: 760 !important;
  letter-spacing: -0.02em;
}

.tree-item-self.is-clickable:hover {
  background-color: rgba(255,209,0,.07);
  border-radius: 6px;
}

.tree-item-self.mod-active,
.tree-item-self.is-active {
  background-color: rgba(255,209,0,.14);
  color: var(--lucia-ink);
  border-radius: 6px;
}

/* Homepage hero — standard docs feel */
.lucia-home-hero {
  margin: .15rem 0 1.65rem;
  padding: 0 0 1.25rem;
  border-bottom: 1px solid rgba(10,10,10,.10);
}

.lucia-home-kicker {
  display: block;
  margin: 0 0 .55rem;
  color: #7a4d00;
  font-size: .72rem;
  font-weight: 800;
  letter-spacing: .095em;
  text-transform: uppercase;
}

.lucia-home-title {
  margin: 0 0 .7rem;
  max-width: 780px;
  font-size: clamp(2rem, 4vw, 3.25rem);
  line-height: 1.04;
  letter-spacing: -0.05em;
  color: var(--lucia-ink);
}

.lucia-home-subtitle {
  max-width: 720px;
  margin: 0;
  color: rgba(10,10,10,.70);
  font-size: 1rem;
  line-height: 1.55;
}

/* Simple docs-style panels */
.lucia-panel-grid {
  display: grid;
  gap: var(--lucia-panel-gap);
  margin: .95rem 0 1.35rem;
}

.lucia-panel {
  padding: var(--lucia-panel-padding-y) var(--lucia-panel-padding-x);
  border: 1px solid rgba(10,10,10,.09);
  background: rgba(255,255,255,.72);
}

.lucia-panel strong {
  display: block;
  margin-bottom: .2rem;
}

.lucia-panel p {
  margin: 0;
  color: rgba(10,10,10,.68);
}

/* Compact current-state list */
.lucia-status-list {
  display: grid;
  gap: var(--lucia-status-list-gap);
  padding: 0 !important;
  margin: var(--lucia-status-list-margin-top) 0 var(--lucia-status-list-margin-bottom) 0 !important;
  list-style: none !important;
}

/* Lucia status list: fully remove Obsidian default list indentation */
body .published-container .markdown-rendered ul.lucia-status-list,
body .published-container ul.lucia-status-list,
body .lucia-note ul.lucia-status-list,
.markdown-rendered ul.lucia-status-list {
  margin-inline-start: 0 !important;
  padding-inline-start: 0 !important;
  margin-left: 0 !important;
  padding-left: 0 !important;
  list-style: none !important;
}

/* Lucia status list rows: control row height here */
.lucia-status-list li,
body .published-container .markdown-rendered ul.lucia-status-list > li,
body .published-container ul.lucia-status-list > li,
body .lucia-note ul.lucia-status-list > li,
.markdown-rendered ul.lucia-status-list > li {
  margin-inline-start: 0 !important;
  margin-left: 0 !important;
  padding: var(--lucia-status-row-padding-y) var(--lucia-status-row-padding-x) !important;
  line-height: var(--lucia-status-row-line-height) !important;
  border: var(--lucia-status-row-border);
  border-radius: var(--lucia-status-row-radius) !important;
  background: var(--lucia-status-row-background);
}

/* Lucia status list bullet */
.lucia-status-list li::before {
  content: "●";
  color: var(--lucia-status-bullet-color);
  margin-right: var(--lucia-status-bullet-gap);
  font-size: var(--lucia-status-bullet-size);
}

@media (max-width: 700px) {
  .lucia-home-title {
    font-size: 2.05rem;
  }
}

/*
Lucia Canon — Callout Fix v4
Add this to the bottom of:
- publish.css
- .obsidian/snippets/Lucia Canon - Primary Friendly.css
*/

/* Kill default teal callout icons */
.callout-icon,
.callout-icon svg,
.callout-icon svg path,
.callout-icon svg line,
.callout-icon svg polyline,
.callout-icon svg circle,
.lucia-note .callout-icon,
.lucia-note .callout-icon svg,
.published-container .callout-icon,
.published-container .callout-icon svg {
  color: #0A0A0A !important;
  stroke: #0A0A0A !important;
}

/* Cleaner callout vertical rhythm */
.callout {
  display: flex !important;
  flex-direction: column !important;
  justify-content: center !important;
  min-height: 0 !important;
  padding: var(--lucia-callout-padding-y) var(--lucia-callout-padding-x) !important;
}

/* Title and body should feel like one centered content block */
.callout-title {
  margin: 0 0 var(--lucia-callout-title-gap) 0 !important;
  padding: 0 !important;
  min-height: 0 !important;
  align-items: center !important;
}

.callout-title-inner {
  line-height: 1.25 !important;
}

.callout-content {
  margin: 0 !important;
  padding: 0 !important;
}

.callout-content > *:first-child {
  margin-top: 0 !important;
}

.callout-content > *:last-child {
  margin-bottom: 0 !important;
}

/* Homepage callout body text size should stay documentation-like */
.callout-content p {
  line-height: var(--lucia-callout-body-line-height) !important;
}

/*
Lucia Canon — Color Swatches
Mirrors .obsidian/snippets/color-swatches.css so swatches render on Obsidian Publish.
*/

.color-family-row {
  display: flex;
  align-items: center;
  gap: var(--lucia-swatch-gap);
  margin: 18px 0;
}

.color-swatch {
  display: inline-block;
  width: var(--lucia-swatch-size);
  height: var(--lucia-swatch-size);
  border-radius: var(--lucia-swatch-radius);
  background: var(--swatch);
  border: 1px solid rgba(0, 0, 0, 0.28);
  vertical-align: -9px;
  margin-right: 8px;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.22);
  flex: 0 0 auto;
}

.color-swatch.small {
  width: 20px;
  height: 20px;
  vertical-align: -5px;
}

.color-swatch.large {
  width: 40px;
  height: 40px;
  vertical-align: -13px;
}

.color-hex {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: var(--lucia-hex-min-width);
  padding: var(--lucia-hex-padding-y) var(--lucia-hex-padding-x);
  border-radius: var(--lucia-hex-radius);
  background: #111111;
  color: #FFFFFF !important;
  border: 1px solid rgba(255, 255, 255, 0.18);
  font-family: var(--font-monospace);
  font-weight: 300;
  line-height: 1;
  letter-spacing: 0.02em;
  vertical-align: 0px;
  margin-left: 8px;
  box-shadow: none;
  text-decoration: none;
  flex: 0 0 auto;
}

.color-name {
  color: rgba(10, 10, 10, 0.72);
  font-size: 0.95em;
  line-height: 1.2;
}

/* Hide Obsidian Publish footer credit */
.site-footer {
  display: none !important;
}
/* ============================================================
   Lucia Canon — Dark Code Artifacts v4.6
   ------------------------------------------------------------
   Dark styling applies ONLY to explicit coding/export languages.

   Dark examples:
   ```json, ```html, ```css, ```javascript, ```js,
   ```typescript, ```ts, ```jsx, ```tsx,
   ```bash, ```shell, ```sh, ```zsh,
   ```python, ```py, ```sql, ```yaml, ```yml,
   ```toml, ```xml, ```dockerfile

   Light examples:
   ```text, ```plain, ```plaintext, and unnamed ```
   ============================================================ */

:where(.published-container, .markdown-rendered, .markdown-preview-view, .lucia-note) pre:is(.language-json, .language-html, .language-css, .language-scss, .language-sass, .language-javascript, .language-js, .language-typescript, .language-ts, .language-jsx, .language-tsx, .language-bash, .language-shell, .language-sh, .language-zsh, .language-python, .language-py, .language-sql, .language-yaml, .language-yml, .language-toml, .language-xml, .language-dockerfile),
:where(.published-container, .markdown-rendered, .markdown-preview-view, .lucia-note) pre:has(code:is(.language-json, .language-html, .language-css, .language-scss, .language-sass, .language-javascript, .language-js, .language-typescript, .language-ts, .language-jsx, .language-tsx, .language-bash, .language-shell, .language-sh, .language-zsh, .language-python, .language-py, .language-sql, .language-yaml, .language-yml, .language-toml, .language-xml, .language-dockerfile)) {
  background: var(--lucia-code-bg) !important;
  border: 2px solid var(--lucia-code-border) !important;
  border-radius: var(--lucia-code-radius) !important;
  padding: var(--lucia-code-padding-y) var(--lucia-code-padding-x) !important;
  box-shadow: none !important;
  overflow-x: auto !important;
}

:where(.published-container, .markdown-rendered, .markdown-preview-view, .lucia-note) pre:is(.language-json, .language-html, .language-css, .language-scss, .language-sass, .language-javascript, .language-js, .language-typescript, .language-ts, .language-jsx, .language-tsx, .language-bash, .language-shell, .language-sh, .language-zsh, .language-python, .language-py, .language-sql, .language-yaml, .language-yml, .language-toml, .language-xml, .language-dockerfile) code,
:where(.published-container, .markdown-rendered, .markdown-preview-view, .lucia-note) pre:has(code:is(.language-json, .language-html, .language-css, .language-scss, .language-sass, .language-javascript, .language-js, .language-typescript, .language-ts, .language-jsx, .language-tsx, .language-bash, .language-shell, .language-sh, .language-zsh, .language-python, .language-py, .language-sql, .language-yaml, .language-yml, .language-toml, .language-xml, .language-dockerfile)) code {
  background: transparent !important;
  color: var(--lucia-code-text) !important;
  font-family: "JetBrains Mono", "SF Mono", Menlo, Monaco, Consolas, monospace !important;
  font-size: var(--lucia-code-font-size) !important;
  line-height: var(--lucia-code-line-height) !important;
  text-shadow: none !important;
}

/* Syntax colors inside approved dark code artifacts only */
:where(.published-container, .markdown-rendered, .markdown-preview-view, .lucia-note) pre:is(.language-json, .language-html, .language-css, .language-scss, .language-sass, .language-javascript, .language-js, .language-typescript, .language-ts, .language-jsx, .language-tsx, .language-bash, .language-shell, .language-sh, .language-zsh, .language-python, .language-py, .language-sql, .language-yaml, .language-yml, .language-toml, .language-xml, .language-dockerfile) :is(.token.property, .token.attr-name),
:where(.published-container, .markdown-rendered, .markdown-preview-view, .lucia-note) pre:has(code:is(.language-json, .language-html, .language-css, .language-scss, .language-sass, .language-javascript, .language-js, .language-typescript, .language-ts, .language-jsx, .language-tsx, .language-bash, .language-shell, .language-sh, .language-zsh, .language-python, .language-py, .language-sql, .language-yaml, .language-yml, .language-toml, .language-xml, .language-dockerfile)) :is(.token.property, .token.attr-name) {
  color: #93c5fd !important;
}

:where(.published-container, .markdown-rendered, .markdown-preview-view, .lucia-note) pre:is(.language-json, .language-html, .language-css, .language-scss, .language-sass, .language-javascript, .language-js, .language-typescript, .language-ts, .language-jsx, .language-tsx, .language-bash, .language-shell, .language-sh, .language-zsh, .language-python, .language-py, .language-sql, .language-yaml, .language-yml, .language-toml, .language-xml, .language-dockerfile) :is(.token.string, .token.attr-value),
:where(.published-container, .markdown-rendered, .markdown-preview-view, .lucia-note) pre:has(code:is(.language-json, .language-html, .language-css, .language-scss, .language-sass, .language-javascript, .language-js, .language-typescript, .language-ts, .language-jsx, .language-tsx, .language-bash, .language-shell, .language-sh, .language-zsh, .language-python, .language-py, .language-sql, .language-yaml, .language-yml, .language-toml, .language-xml, .language-dockerfile)) :is(.token.string, .token.attr-value) {
  color: #86efac !important;
}

:where(.published-container, .markdown-rendered, .markdown-preview-view, .lucia-note) pre:is(.language-json, .language-html, .language-css, .language-scss, .language-sass, .language-javascript, .language-js, .language-typescript, .language-ts, .language-jsx, .language-tsx, .language-bash, .language-shell, .language-sh, .language-zsh, .language-python, .language-py, .language-sql, .language-yaml, .language-yml, .language-toml, .language-xml, .language-dockerfile) .token.number,
:where(.published-container, .markdown-rendered, .markdown-preview-view, .lucia-note) pre:has(code:is(.language-json, .language-html, .language-css, .language-scss, .language-sass, .language-javascript, .language-js, .language-typescript, .language-ts, .language-jsx, .language-tsx, .language-bash, .language-shell, .language-sh, .language-zsh, .language-python, .language-py, .language-sql, .language-yaml, .language-yml, .language-toml, .language-xml, .language-dockerfile)) .token.number {
  color: #fbbf24 !important;
}

:where(.published-container, .markdown-rendered, .markdown-preview-view, .lucia-note) pre:is(.language-json, .language-html, .language-css, .language-scss, .language-sass, .language-javascript, .language-js, .language-typescript, .language-ts, .language-jsx, .language-tsx, .language-bash, .language-shell, .language-sh, .language-zsh, .language-python, .language-py, .language-sql, .language-yaml, .language-yml, .language-toml, .language-xml, .language-dockerfile) :is(.token.boolean, .token.null),
:where(.published-container, .markdown-rendered, .markdown-preview-view, .lucia-note) pre:has(code:is(.language-json, .language-html, .language-css, .language-scss, .language-sass, .language-javascript, .language-js, .language-typescript, .language-ts, .language-jsx, .language-tsx, .language-bash, .language-shell, .language-sh, .language-zsh, .language-python, .language-py, .language-sql, .language-yaml, .language-yml, .language-toml, .language-xml, .language-dockerfile)) :is(.token.boolean, .token.null) {
  color: #f472b6 !important;
}

:where(.published-container, .markdown-rendered, .markdown-preview-view, .lucia-note) pre:is(.language-json, .language-html, .language-css, .language-scss, .language-sass, .language-javascript, .language-js, .language-typescript, .language-ts, .language-jsx, .language-tsx, .language-bash, .language-shell, .language-sh, .language-zsh, .language-python, .language-py, .language-sql, .language-yaml, .language-yml, .language-toml, .language-xml, .language-dockerfile) :is(.token.punctuation, .token.operator),
:where(.published-container, .markdown-rendered, .markdown-preview-view, .lucia-note) pre:has(code:is(.language-json, .language-html, .language-css, .language-scss, .language-sass, .language-javascript, .language-js, .language-typescript, .language-ts, .language-jsx, .language-tsx, .language-bash, .language-shell, .language-sh, .language-zsh, .language-python, .language-py, .language-sql, .language-yaml, .language-yml, .language-toml, .language-xml, .language-dockerfile)) :is(.token.punctuation, .token.operator) {
  color: #d4d4d4 !important;
}

:where(.published-container, .markdown-rendered, .markdown-preview-view, .lucia-note) pre:is(.language-json, .language-html, .language-css, .language-scss, .language-sass, .language-javascript, .language-js, .language-typescript, .language-ts, .language-jsx, .language-tsx, .language-bash, .language-shell, .language-sh, .language-zsh, .language-python, .language-py, .language-sql, .language-yaml, .language-yml, .language-toml, .language-xml, .language-dockerfile) .token.keyword,
:where(.published-container, .markdown-rendered, .markdown-preview-view, .lucia-note) pre:has(code:is(.language-json, .language-html, .language-css, .language-scss, .language-sass, .language-javascript, .language-js, .language-typescript, .language-ts, .language-jsx, .language-tsx, .language-bash, .language-shell, .language-sh, .language-zsh, .language-python, .language-py, .language-sql, .language-yaml, .language-yml, .language-toml, .language-xml, .language-dockerfile)) .token.keyword {
  color: #c084fc !important;
}

:where(.published-container, .markdown-rendered, .markdown-preview-view, .lucia-note) pre:is(.language-json, .language-html, .language-css, .language-scss, .language-sass, .language-javascript, .language-js, .language-typescript, .language-ts, .language-jsx, .language-tsx, .language-bash, .language-shell, .language-sh, .language-zsh, .language-python, .language-py, .language-sql, .language-yaml, .language-yml, .language-toml, .language-xml, .language-dockerfile) .token.function,
:where(.published-container, .markdown-rendered, .markdown-preview-view, .lucia-note) pre:has(code:is(.language-json, .language-html, .language-css, .language-scss, .language-sass, .language-javascript, .language-js, .language-typescript, .language-ts, .language-jsx, .language-tsx, .language-bash, .language-shell, .language-sh, .language-zsh, .language-python, .language-py, .language-sql, .language-yaml, .language-yml, .language-toml, .language-xml, .language-dockerfile)) .token.function {
  color: #fde68a !important;
}

:where(.published-container, .markdown-rendered, .markdown-preview-view, .lucia-note) pre:is(.language-json, .language-html, .language-css, .language-scss, .language-sass, .language-javascript, .language-js, .language-typescript, .language-ts, .language-jsx, .language-tsx, .language-bash, .language-shell, .language-sh, .language-zsh, .language-python, .language-py, .language-sql, .language-yaml, .language-yml, .language-toml, .language-xml, .language-dockerfile) :is(.token.tag, .token.selector),
:where(.published-container, .markdown-rendered, .markdown-preview-view, .lucia-note) pre:has(code:is(.language-json, .language-html, .language-css, .language-scss, .language-sass, .language-javascript, .language-js, .language-typescript, .language-ts, .language-jsx, .language-tsx, .language-bash, .language-shell, .language-sh, .language-zsh, .language-python, .language-py, .language-sql, .language-yaml, .language-yml, .language-toml, .language-xml, .language-dockerfile)) :is(.token.tag, .token.selector) {
  color: #fca5a5 !important;
}

:where(.published-container, .markdown-rendered, .markdown-preview-view, .lucia-note) pre:is(.language-json, .language-html, .language-css, .language-scss, .language-sass, .language-javascript, .language-js, .language-typescript, .language-ts, .language-jsx, .language-tsx, .language-bash, .language-shell, .language-sh, .language-zsh, .language-python, .language-py, .language-sql, .language-yaml, .language-yml, .language-toml, .language-xml, .language-dockerfile) .token.comment,
:where(.published-container, .markdown-rendered, .markdown-preview-view, .lucia-note) pre:has(code:is(.language-json, .language-html, .language-css, .language-scss, .language-sass, .language-javascript, .language-js, .language-typescript, .language-ts, .language-jsx, .language-tsx, .language-bash, .language-shell, .language-sh, .language-zsh, .language-python, .language-py, .language-sql, .language-yaml, .language-yml, .language-toml, .language-xml, .language-dockerfile)) .token.comment {
  color: #a3a3a3 !important;
}

/* ============================================================
   Lucia Canon — Exact Callout Icon Renderer v4.8
   Search marker: LUCIA_EXACT_CALLOUT_ICON_RENDERER

   Why this exists:
   Some Obsidian Publish builds render embedded SVG callout icons as
   solid black blobs. This bypasses Obsidian's default callout SVG
   renderer for the exact icons that need perfect shape fidelity.

   Exact icons handled here:
   - [!verified]
   - [!badge-check]
   - [!atom]
   - [!intelligence]
   ============================================================ */

.callout[data-callout="verified"] .callout-icon,
.callout[data-callout="badge-check"] .callout-icon,
.callout[data-callout="atom"] .callout-icon,
.callout[data-callout="intelligence"] .callout-icon {
  width: 1.15em !important;
  height: 1.15em !important;
  min-width: 1.15em !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  color: #0A0A0A !important;
}

.callout[data-callout="verified"] .callout-icon svg,
.callout[data-callout="badge-check"] .callout-icon svg,
.callout[data-callout="atom"] .callout-icon svg,
.callout[data-callout="intelligence"] .callout-icon svg {
  display: none !important;
}

.callout[data-callout="verified"] .callout-icon::before,
.callout[data-callout="badge-check"] .callout-icon::before,
.callout[data-callout="atom"] .callout-icon::before,
.callout[data-callout="intelligence"] .callout-icon::before {
  content: "" !important;
  display: block !important;
  width: 1.15em !important;
  height: 1.15em !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
  background-size: contain !important;
}

/* Lucide badge-check — exact SVG rendered as a background image. */
.callout[data-callout="verified"] .callout-icon::before,
.callout[data-callout="badge-check"] .callout-icon::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%230A0A0A' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z'/%3E%3Cpath d='m9 12 2 2 4-4'/%3E%3C/svg%3E") !important;
}

/* Lucide atom — exact SVG rendered as a background image. */
.callout[data-callout="atom"] .callout-icon::before,
.callout[data-callout="intelligence"] .callout-icon::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%230A0A0A' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Cpath d='M20.2 20.2c2.04-2.03.02-7.36-4.5-11.9-4.54-4.52-9.87-6.54-11.9-4.5-2.04 2.03-.02 7.36 4.5 11.9 4.54 4.52 9.87 6.54 11.9 4.5Z'/%3E%3Cpath d='M15.7 15.7c4.52-4.54 6.54-9.87 4.5-11.9-2.03-2.04-7.36-.02-11.9 4.5-4.52 4.54-6.54 9.87-4.5 11.9 2.03 2.04 7.36-.02 11.9-4.5Z'/%3E%3C/svg%3E") !important;
}

/* ============================================================
   Lucia Canon — Dark Interactive Graph Card
   Hex-only version for easy tuning
   ============================================================ */

.graph-view,
.published-container .graph-view,
.markdown-rendered .graph-view {
  background: #0A0A0A !important;
  border-color: #000000 !important;
}

/* Canvas/WebGL color bridge */
.graph-view.color-fill {
  color: #ffb400 !important; /* nodes */
}

.graph-view.color-line {
  color: #FFFFFF38 !important; /* connection lines */
}

.graph-view.color-text {
  color: #FFFFFFE0 !important; /* labels */
}

.graph-view.color-circle {
  color: #FFD10047 !important; /* node outline / circle */
}

.graph-view.color-fill-highlight {
  color: #FFBC17 !important; /* hovered/active node */
}

.graph-view.color-line-highlight {
  color: #FFBC17AD !important; /* hovered/active lines */
}

.graph-view.color-fill-unresolved {
  color: #FFFFFF59 !important; /* unresolved/unpublished nodes */
}

/* ============================================================
   Lucia Canon — Hide Always-On Scrollbars
   Obsidian Publish gives each column its own internal scroll
   region (the center reading pane .markdown-preview-view, the
   left nav, and the right sidebar). With the macOS "always show
   scroll bars" setting on, those render as permanent 15px bars —
   most visibly a bar stranded in the gutter between the article
   and the right sidebar on long pages like the homepage.
   Hide the bars cross-browser while preserving scroll (wheel /
   trackpad still work). Matches the clean OpenAI-style docs intent
   and the EvaluationLabs.ai docs.
   Search marker: LUCIA_HIDE_SCROLLBARS
   ============================================================ */
.markdown-preview-view,
.nav-view-outer,
.site-body-right-column-inner {
  scrollbar-width: none !important; /* Firefox */
}

.markdown-preview-view::-webkit-scrollbar,
.nav-view-outer::-webkit-scrollbar,
.site-body-right-column-inner::-webkit-scrollbar {
  width: 0 !important;
  height: 0 !important;
  display: none !important; /* Chrome / Safari / Edge */
}
