/* Overrides for TypeDoc 0.28 DOM that the legacy main.css predates.
   Each block targets a class introduced after the original Handlebars theme
   was authored, mapping it back to the visual conventions of main.css. */

/* ---------- 0.28 icon colors ---------- */
/* icons.svg references these CSS vars; main.css predates them so they're
   undefined and the SVG icons render with no fill/stroke (invisible).
   Define the light-theme palette so sidebar nav and member-heading icons
   show up. Values mirror TypeDoc 0.28 light defaults. */
:root {
    --color-icon-background: #ffffff;
    --color-icon-text: #222;
    --color-ts-keyword: #056bd6;
    --color-ts-project: #b111c9;
    --color-ts-module: #949494;
    --color-ts-namespace: #949494;
    --color-ts-enum: #7e6f15;
    --color-ts-enum-member: #7e6f15;
    --color-ts-variable: #4760ec;
    --color-ts-function: #572be7;
    --color-ts-class: #1f70c2;
    --color-ts-interface: #108024;
    --color-ts-constructor: #4d7fff;
    --color-ts-property: #9f5f30;
    --color-ts-method: #be3989;
    --color-ts-call-signature: #be3989;
    --color-ts-index-signature: #9f5f30;
    --color-ts-constructor-signature: #4d7fff;
    --color-ts-parameter: #4760ec;
    --color-ts-type-parameter: #a55c0e;
    --color-ts-accessor: #c73c3c;
    --color-ts-get-signature: #c73c3c;
    --color-ts-set-signature: #c73c3c;
    --color-ts-type-alias: #d51270;
    --color-ts-reference: #ff4d82;
    --color-document: #000000;
}

/* ---------- Accordion (tsd-accordion / tsd-accordion-summary) ---------- */
/* TypeDoc 0.28 wraps each member group in <details><summary>. main.css has
   no rules for these, so the browser default chevron + clickable heading
   leak through. Force them open and visually flatten back to the old
   <section><h2> shape. */
details.tsd-panel-group.tsd-accordion {
    display: block;
    margin: 0;
    padding: 0;
}
details.tsd-panel-group.tsd-accordion > summary.tsd-accordion-summary {
    list-style: none;
    cursor: default;
    display: block;
    padding: 0;
    margin: 0;
}
details.tsd-panel-group.tsd-accordion > summary.tsd-accordion-summary::-webkit-details-marker {
    display: none;
}
details.tsd-panel-group.tsd-accordion > summary.tsd-accordion-summary > svg {
    display: none;
}
details.tsd-panel-group.tsd-accordion > summary.tsd-accordion-summary > h2 {
    color: #282828;
    font-size: 2rem;
    font-weight: 300;
    line-height: 3rem;
    margin: 0;
    padding: 0 24px;
}
.tsd-member-group {
    margin: 0 0 1em 0;
}
.tsd-member-group > section > .tsd-panel.tsd-member,
.tsd-member-group > section > section {
    display: block;
}

/* Generic accordion summaries elsewhere (e.g. nav) */
summary.tsd-accordion-summary svg {
    width: 1em;
    height: 1em;
}

/* ---------- Anchor links on member headings ---------- */
/* 0.28 emits <h3 class="tsd-anchor-link" id="x"><span>Name</span><a class="tsd-anchor-icon">…</a></h3>.
   main.css only knew the old shape (<a class="tsd-anchor"></a><h3>Name</h3>).
   Restore plain h3 appearance and tame the permalink icon. */
h3.tsd-anchor-link {
    margin-top: 0;
    margin-bottom: 0;
    border-bottom: none;
    font-weight: 500;
}
h3.tsd-anchor-link > span {
    display: inline;
}
.tsd-anchor-icon {
    display: inline-flex;
    align-items: center;
    margin-left: 0.25em;
    opacity: 0.25;
    text-decoration: none;
}
.tsd-anchor-icon:hover {
    opacity: 1;
}
.tsd-anchor-icon svg,
.tsd-anchor-icon use,
a.tsd-anchor-icon svg {
    width: 1em;
    height: 1em;
}

/* ---------- Reflection / kind icons ---------- */
/* On the index page, main.css's sprite-sheet pseudo-element on
   .tsd-kind-icon (with parent .tsd-kind-class etc.) provides the production
   icon, so hide the inline SVG that 0.28's main.js injects to avoid double
   icons / oversized renders. */
.tsd-index-list .tsd-index-link > svg.tsd-kind-icon,
.tsd-index-list .tsd-index-link svg.tsd-kind-icon {
    display: none;
}
/* In sidebar nav, 0.28's navigation.js does NOT add tsd-kind-* class to the
   <li>, so main.css's sprite rule cannot fire there. Let the inline SVG
   icon render at a small size to match production's per-item icon. */
nav.tsd-navigation svg.tsd-kind-icon {
    width: 14px;
    height: 14px;
    margin-right: 6px;
    vertical-align: middle;
    flex-shrink: 0;
}
/* For other contexts (member headings, signatures) leave SVG visible but at sane size. */
svg.tsd-kind-icon {
    width: 1em;
    height: 1em;
    vertical-align: middle;
}

/* ---------- Signatures wrapper ---------- */
/* In 0.28 the <li> inside <ul class="tsd-signatures"> no longer carries the
   tsd-signature class itself; signature/description live in inner divs. */
.tsd-signatures > li {
    list-style: none;
    padding: 0;
    margin: 0;
}
.tsd-signatures > li > .tsd-signature {
    border-width: 1px 0;
}
.tsd-signatures > li > .tsd-description {
    padding: 0 24px;
}

/* Old descriptions list rules expected ul.tsd-descriptions; new shape skips
   that list. Mirror its h4 spacing on plain headings inside descriptions. */
.tsd-description > h4,
.tsd-description .tsd-parameters-title,
.tsd-description .tsd-returns-title,
.tsd-description .tsd-type-parameters-title {
    font-size: 16px;
    font-weight: 500;
    margin: 1em 0 0.5em 0;
}

/* ---------- Parameters ---------- */
/* Old DOM used <ul class="tsd-parameters">; 0.28 emits a wrapping
   <div class="tsd-parameters"> + <ul class="tsd-parameter-list">. */
.tsd-parameters,
ul.tsd-parameter-list {
    margin: 0;
    padding-left: 20px;
}
ul.tsd-parameter-list,
ul.tsd-parameter-list ul {
    list-style: none;
    padding-left: 0;
}
ul.tsd-parameter-list > li {
    margin: 0.25em 0 0.75em 0;
}
ul.tsd-parameter-list > li > .tsd-comment {
    margin-top: -0.5em;
}

/* Parameter name spans (replaces inline <h5>name</h5> styling). */
.tsd-kind-parameter {
    color: #282828;
    font-weight: 500;
}

/* ---------- Comment tags (@default, @deprecated, @see) ---------- */
/* Old DOM used <dl class="tsd-comment-tags">; 0.28 emits inline
   <div class="tsd-tag tsd-tag-{name}">. Pill style mirroring tsd-comment-tags dt. */
.tsd-tag {
    display: inline-block;
    padding: 1px 8px;
    margin: 2px 4px 2px 0;
    border-radius: 4px;
    color: #fff;
    background-color: #09f;
    font-size: 14px;
    font-weight: 400;
    line-height: 1.5;
}
/* Inline pill variant only (when combined with .tsd-tag). */
.tsd-tag.tsd-tag-deprecated {
    background-color: #c00;
}
.tsd-tag-see,
.tsd-tag-default {
    background-color: #888;
}

/* Block variant: 0.28 emits <div class="tsd-tag-deprecated"> wrapping the
   "Deprecated" heading and body text. Without scoping, the .tsd-tag-deprecated
   rule above paints the whole block solid red and the text becomes unreadable.
   Render it as a subtle inline note: italic gray text with a red bar at left. */
div.tsd-tag-deprecated {
    background-color: transparent;
    color: #666;
    font-style: italic;
    border-left: 3px solid #c00;
    padding: 4px 0 4px 12px;
    margin: 8px 0;
}
div.tsd-tag-deprecated > h4,
div.tsd-tag-deprecated h4.tsd-anchor-link {
    color: #c00;
    font-style: normal;
    font-size: 14px;
    font-weight: 600;
    margin: 0 0 4px 0;
}
div.tsd-tag-deprecated p {
    margin: 0;
}

/* ---------- Signature tokens ---------- */
.tsd-signature-keyword {
    color: #d73a49;
    font-weight: normal;
}
/* Reinforce existing tsd-signature-symbol/type colors in case main.css
   ordering loses to layout.css imports. */
.tsd-signature-symbol {
    color: gray;
    font-weight: normal;
}
.tsd-signature-type {
    font-style: italic;
    font-weight: normal;
}

/* ---------- Index link colors ---------- */
/* main.css 2561 sets .tsd-index-panel a to purple #9600ff and only paints
   blue under .tsd-parent-kind-class. 0.28 no longer emits tsd-parent-kind-*
   classes (only tsd-kind-* on the <li>), so every link falls through to
   purple. Force the production blue for index links. */
.tsd-index-panel a,
.tsd-index-panel ul.tsd-index-list li a,
.tsd-index-panel .tsd-index-link {
    color: #4da6ff;
}

/* ---------- Member section icons ---------- */
/* memberReveal partial adds tsd-kind-* to <section> and tsd-kind-icon to
   the <h3>, so main.css's sprite rule (.tsd-kind-property > .tsd-kind-icon
   ::before) paints the small icon next to the heading. Tweak the h3 layout
   so the sprite sits inline with the title rather than starting a new line. */
section.tsd-member > h3.tsd-anchor-link.tsd-kind-icon {
    display: flex;
    align-items: center;
    gap: 0;
}
section.tsd-member > h3.tsd-anchor-link.tsd-kind-icon::before {
    flex-shrink: 0;
}
/* Hide the inline SVG icon that 0.28's runtime injects into the h3, since
   main.css's sprite already provides the icon via ::before. */
section.tsd-member > h3.tsd-anchor-link.tsd-kind-icon > svg.tsd-kind-icon {
    display: none;
}

/* ---------- Index page wrappers ---------- */
.tsd-panel-group.tsd-index-group {
    margin: 0;
}
.tsd-index-list {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0 1rem;
    list-style: none;
    padding-left: 0;
}
@media (max-width: 900px) {
    .tsd-index-list {
        grid-template-columns: repeat(2, 1fr);
    }
}
@media (max-width: 640px) {
    .tsd-index-list {
        grid-template-columns: 1fr;
    }
}
.tsd-index-list li {
    margin: 0;
}
.tsd-index-list li a {
    display: block;
    padding: 2px 0;
}

/* ---------- Sidebar EXPORTS label ---------- */
nav.tsd-navigation.primary li.label > span {
    display: block;
    padding: 16px 0 4px 5px;
    color: #000;
    font-weight: bold;
    text-transform: uppercase;
    font-size: 13px;
}

/* ---------- Sidebar navigation ---------- */
/* 0.28's hydrated nav uses tsd-small-nested-navigation; main.css applied
   uppercase to .tsd-navigation.primary li>a (specificity 0,2,2) which beats
   a single-class selector. Bump specificity so we win on source order. */
nav.tsd-navigation.primary .tsd-small-nested-navigation a,
nav.tsd-navigation.primary li > a {
    text-transform: none;
    font-weight: normal;
    color: #666;
    padding: 2px 4px;
    font-size: 13px;
    line-height: 1.4;
    display: block;
}
nav.tsd-navigation.primary .tsd-small-nested-navigation,
nav.tsd-navigation.primary ul {
    list-style: none;
    padding-left: 0;
}
/* Indent members nested under the current class/enum entry (matches the
   production sidebar tree). Top-level globals stay flush since the project
   root renders children flat without a wrapper <li>. */
nav.tsd-navigation.primary .tsd-small-nested-navigation li > ul {
    padding-left: 16px;
}
nav.tsd-navigation.primary .tsd-small-nested-navigation li {
    margin: 0;
}
nav.tsd-navigation.primary li > a:hover {
    color: #09f;
}
/* SVG kind icon next to each nav link */
nav.tsd-navigation.primary .tsd-small-nested-navigation a > svg.tsd-kind-icon {
    width: 1em;
    height: 1em;
    margin-right: 0.4em;
    flex-shrink: 0;
}
nav.tsd-navigation.primary .tsd-small-nested-navigation a {
    display: flex;
    align-items: center;
    gap: 0;
}

/* ---------- Sidebar search box ---------- */
/* Mirror main.css #tsd-search rules under our renamed #tsd-sidebar-search.
   The original #tsd-search id collides with the offscreen 0.28 dialog stub
   so the sidebar search field uses the -sidebar- variant. */
#tsd-sidebar-search {
    margin: 0 -15px;
    transition: background-color .2s;
}
#tsd-sidebar-search .field {
    position: relative;
    display: flex;
    background: #fff;
}
#tsd-sidebar-search .field input {
    position: relative;
    box-sizing: border-box;
    z-index: 1;
    width: 100%;
    height: 36px;
    font-size: 13px;
    outline: 0;
    border: 0;
    color: #666;
}
#tsd-sidebar-search .field label {
    position: relative;
    display: inline-flex;
    font-size: 18px;
    width: 36px;
    height: 36px;
    justify-content: center;
    align-items: center;
    color: #09f;
    z-index: 2;
}
#tsd-sidebar-search .results {
    position: absolute;
    visibility: hidden;
    font-size: 15px;
    top: 36px;
    margin: 0;
    padding: 0;
    list-style: none;
    border: 1px solid #dedede;
    box-shadow: 0 6px 24px rgba(0, 0, 0, .08);
    z-index: 3;
    opacity: .94;
}
#tsd-sidebar-search .results li {
    padding: 0;
    background-color: #fff;
}
#tsd-sidebar-search .results li.state {
    display: none;
}
#tsd-sidebar-search .results li.current,
#tsd-sidebar-search .results li:hover {
    background-color: #dedede;
}
#tsd-sidebar-search .results a {
    display: block;
    padding: 10px;
}
#tsd-sidebar-search.has-focus {
    background-color: #dedede;
}
#tsd-sidebar-search.has-focus .results {
    visibility: visible;
}
#tsd-sidebar-search.loading .results li.state.loading {
    display: block;
}
#tsd-sidebar-search.failure .results li.state.failure {
    display: block;
}

/* ---------- Narrow-viewport fallback ---------- */
/* Production used a hamburger button to toggle html.has-menu, which slid the
   off-canvas col-menu in. We never ported the hamburger, so on narrow widths
   the menu either renders inline at 28% (901-1024px) and overlaps the header,
   or stays as a hidden 100%-width drawer that flashes on load (<=900px).
   Just collapse to a single content column below the two-column threshold so
   no toggle is required. */
@media (max-width: 1024px) {
    html.default .col-menu,
    html.default .col-2.col-menu {
        display: none !important;
    }
    html.default .col-content,
    html.default .col-10.col-content {
        width: 100% !important;
        float: none !important;
    }
}

/* ---------- Hide the 0.28 default toolbar ---------- */
/* We render our own header; the offscreen toolbar stub stays (search uses it). */
.tsd-page-toolbar {
    display: none;
}

/* Defensive: if the 0.28 search dialog ever opens (shouldn't, since the
   sidebar bridge no longer calls showModal), keep it invisible so it
   doesn't pop into the browser top-layer. */
dialog#tsd-search {
    display: none !important;
}

/* Hierarchy heading: production rendered a horizontal rule beneath
   "Hierarchy" rather than the heavy h4 block default. Match that with a
   light border-bottom and reset the heading weight. */
section.tsd-panel.tsd-hierarchy > h4 {
    font-size: 16px;
    font-weight: normal;
    margin: 0 0 8px 0;
    padding: 0 0 8px 0;
    border-bottom: 1px solid #dedede;
}

/* Anchor scroll offset: the infragistics top nav sits above the page, so
   :target / hash-link jumps land underneath it. Push the scroll target down
   so the heading clears the header. */
html {
    scroll-padding-top: 100px;
}
[id]:target,
h1.tsd-anchor-link,
h2.tsd-anchor-link,
h3.tsd-anchor-link,
h4.tsd-anchor-link {
    scroll-margin-top: 100px;
}

/* Copy buttons inside <pre> (new in 0.28). */
pre > button {
    float: right;
    margin: -2px 0 4px 8px;
    padding: 2px 8px;
    border: 1px solid #dedede;
    background: #fff;
    color: #666;
    font-size: 12px;
    cursor: pointer;
    border-radius: 3px;
}
pre > button:hover {
    color: #09f;
    border-color: #09f;
}
