/* ============================================================
   LVE SDK — TypeDoc theme (TypeDoc v0.26+)
   Production-quality design. Light-mode enforced.
   ============================================================ */

/* ── Design tokens ───────────────────────────────────────── */
:root {
  --lve-bg:          #f8f9fb;
  --lve-surface:     #ffffff;
  --lve-border:      #e5e7eb;
  --lve-text:        #111827;
  --lve-muted:       #6b7280;
  --lve-accent:      #374151;
  --lve-accent-soft: #f3f4f6;
  --lve-blue:        #2563eb;
  --lve-code-bg:     #18181b;
  --lve-code-text:   #e4e4e7;
  --lve-nav-active:  #111827;
  --lve-t:           150ms cubic-bezier(.4,0,.2,1);

  /* TypeDoc bridge — MUST set text vars to prevent white-on-white in dark OS */
  --color-background:           var(--lve-bg);
  --color-background-secondary: var(--lve-surface);
  --color-background-active:    var(--lve-accent-soft);
  --color-text:                 var(--lve-text);
  --color-contrast-text:        #000;
  --color-text-aside:           var(--lve-muted);
  --color-icon-text:            var(--lve-text);
  --color-comment-tag-text:     var(--lve-text);
  --color-comment-tag:          var(--lve-bg);
  --color-warning-text:         #92400e;
  --color-background-warning:   #fffbeb;
  --color-accent:               #d1d5db;
  --color-active-menu-item:     var(--lve-accent-soft);
  --color-link:                 var(--lve-accent);
  --color-focus-outline:        var(--lve-blue);

  /* TypeScript kind colors */
  --color-ts-interface:  #059669;
  --color-ts-class:      #374151;
  --color-ts-function:   #2563eb;
  --color-ts-enum:       #7c3aed;
  --color-ts-type-alias: #b45309;
  --color-ts-variable:   #0891b2;
  --color-ts-property:   #be185d;
  --color-ts-method:     #2563eb;
}

/* ── Page-load animation ─────────────────────────────────── */
@keyframes lve-in {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}

body {
  animation: lve-in 0.3s cubic-bezier(.4,0,.2,1) both;
  -webkit-font-smoothing: antialiased;
  font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text",
               "Inter", "Segoe UI", sans-serif;
}

/* ── Kill all panel cards completely ────────────────────── */
.tsd-panel {
  background: transparent !important;
  border: none !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  padding: 0 !important;
  margin-bottom: 2rem !important;
}

.tsd-panel.tsd-member {
  border-top: 1px solid var(--lve-border) !important;
  padding-top: 1.5rem !important;
}

.tsd-panel-group {
  margin-bottom: 0 !important;
}

.tsd-index-panel {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
}

/* ── Toolbar ─────────────────────────────────────────────── */
.tsd-page-toolbar {
  background: var(--lve-surface) !important;
  border-bottom: 1px solid var(--lve-border) !important;
  box-shadow: none !important;
}

/* ── Page title ──────────────────────────────────────────── */
.tsd-page-title {
  padding: 2.5rem 0 1.5rem !important;
  border-bottom: 2px solid var(--lve-text);
  margin-bottom: 2.5rem;
}

.tsd-page-title h1 {
  font-size: 2rem;
  font-weight: 800;
  letter-spacing: -0.03em;
  color: var(--lve-text);
  margin: 0;
  line-height: 1.1;
}

/* ── Section headings ────────────────────────────────────── */
.tsd-panel > h2,
.tsd-panel-group > .tsd-accordion-summary h2 {
  font-size: 0.68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--lve-muted);
  margin: 0 0 1rem;
  padding-bottom: 0.5rem;
  border-bottom: 1px solid var(--lve-border);
}

.tsd-member .tsd-anchor + h3 {
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--lve-text);
  margin: 0 0 0.6rem;
}

/* ── Sidebar nav with animated left-border ───────────────── */
.col-sidebar {
  background: var(--lve-surface) !important;
  border-right: 1px solid var(--lve-border);
}

.tsd-navigation a,
.tsd-navigation summary > span {
  font-size: 0.82rem;
  color: var(--lve-muted) !important;
  border-radius: 0 !important;
  padding: 0.28rem 0.75rem !important;
  display: block;
  position: relative;
  transition: color var(--lve-t), background var(--lve-t);
  text-decoration: none;
}

.tsd-navigation a::before {
  content: '';
  position: absolute;
  left: 0;
  top: 20%;
  bottom: 20%;
  width: 2px;
  background: var(--lve-nav-active);
  transform: scaleY(0);
  transition: transform var(--lve-t);
}

.tsd-navigation a:hover {
  color: var(--lve-text) !important;
  background: var(--lve-accent-soft) !important;
}

.tsd-navigation a:hover::before {
  transform: scaleY(0.6);
  opacity: 0.5;
}

.tsd-navigation a.current {
  color: var(--lve-nav-active) !important;
  background: var(--lve-accent-soft) !important;
  font-weight: 600;
}

.tsd-navigation a.current::before {
  transform: scaleY(1);
}

.tsd-navigation > a,
.tsd-navigation .tsd-accordion-summary {
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--lve-muted) !important;
}

/* ── Links with animated underline ──────────────────────── */
a {
  color: var(--lve-accent);
  text-decoration: none;
  transition: color var(--lve-t);
}

a:hover { color: var(--lve-blue); }

.tsd-typography a,
.tsd-comment a {
  color: var(--lve-blue);
  background-image: linear-gradient(var(--lve-blue), var(--lve-blue));
  background-size: 0 1px;
  background-repeat: no-repeat;
  background-position: 0 100%;
  transition: background-size var(--lve-t);
}

.tsd-typography a:hover,
.tsd-comment a:hover {
  background-size: 100% 1px;
}

/* ── Code blocks — minimal ───────────────────────────────── */
code, pre {
  font-family: "SF Mono", "Fira Code", ui-monospace, monospace;
}

pre {
  background: var(--lve-code-bg) !important;
  color: var(--lve-code-text) !important;
  border: 1px solid #3f3f46 !important;
  border-radius: 6px !important;
  padding: 1rem 1.25rem !important;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  box-shadow: none !important;
  font-size: 0.84rem;
  line-height: 1.65;
}

:not(pre) > code {
  background: var(--lve-code-bg);
  color: var(--lve-code-text);
  border: 1px solid #3f3f46;
  border-radius: 4px;
  padding: 0.15em 0.4em;
  font-size: 0.88em;
}

.tsd-signature {
  font-family: "SF Mono", "Fira Code", ui-monospace, monospace;
  font-size: 0.84rem;
  background: var(--lve-code-bg) !important;
  color: var(--lve-code-text) !important;
  border: 1px solid #3f3f46 !important;
  border-radius: 6px !important;
  padding: 0.75rem 1rem !important;
  overflow-x: auto;
  box-shadow: none !important;
  margin-bottom: 1rem;
}

.tsd-signatures {
  border: none !important;
  background: transparent !important;
}

/* ── Index links ─────────────────────────────────────────── */
a.tsd-index-link {
  font-size: 0.85rem;
  color: var(--lve-blue) !important;
  transition: opacity var(--lve-t);
  display: inline-block;
  padding: 0.1rem 0;
}

a.tsd-index-link:hover { opacity: 0.65; }

/* ── Misc polish ─────────────────────────────────────────── */
code.tsd-tag {
  font-size: 0.68rem;
  font-weight: 600;
  border-radius: 4px !important;
  padding: 0.1em 0.45em !important;
  letter-spacing: 0.02em;
  border: none;
}

.tsd-breadcrumb {
  font-size: 0.78rem;
  color: var(--lve-muted);
}

.tsd-breadcrumb a {
  color: var(--lve-muted) !important;
  transition: color var(--lve-t);
}

.tsd-breadcrumb a:hover { color: var(--lve-text) !important; }

dl.tsd-comment-tag-group dt {
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--lve-muted);
}

a.tsd-anchor-link {
  opacity: 0;
  transition: opacity var(--lve-t);
  margin-left: 0.3rem;
}

*:hover > a.tsd-anchor-link { opacity: 0.45; }

details summary {
  cursor: pointer;
  transition: opacity var(--lve-t);
}

details summary:hover { opacity: 0.75; }

dialog#tsd-search {
  background: var(--lve-surface);
  border: 1px solid var(--lve-border);
  border-radius: 12px;
  box-shadow: 0 20px 60px rgba(0,0,0,0.1);
}

#tsd-search-input {
  background: var(--lve-bg);
  border: 1px solid var(--lve-border);
  border-radius: 8px;
  font-size: 0.95rem;
  transition: border-color var(--lve-t);
}

#tsd-search-input:focus {
  border-color: var(--lve-blue);
  outline: none;
}

button.tsd-widget {
  transition: opacity var(--lve-t);
}

button.tsd-widget:hover { opacity: 0.65; }

/* ── Responsive ──────────────────────────────────────────── */
@media (max-width: 768px) {
  .tsd-page-title h1 { font-size: 1.5rem; }
  .tsd-page-title { padding: 1.75rem 0 1.25rem !important; }
  pre, .tsd-signature, code { font-size: 0.8rem !important; overflow-x: auto; max-width: 100%; }
  table { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .container { padding: 0 1rem; }
}

@media (max-width: 480px) {
  .tsd-page-title h1 { font-size: 1.2rem; letter-spacing: -0.025em; }
  body { font-size: 0.93rem; }
}
