/* Dynamic-island table of contents for trusted custom HTML reports only. */
#mmr-custom-toc {
    --mmr-toc-bg: rgba(255, 255, 255, .97);
    --mmr-toc-fg: #17191d;
    --mmr-toc-muted: #68707c;
    --mmr-toc-border: rgba(20, 24, 31, .12);
    --mmr-toc-hover: rgba(20, 24, 31, .055);
    --mmr-toc-active: rgba(20, 24, 31, .10);
    font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
#mmr-custom-toc[hidden] { display: none !important; }
#mmr-custom-toc,
#mmr-custom-toc * { box-sizing: border-box; }
#mmr-custom-toc button,
#mmr-custom-toc a { -webkit-tap-highlight-color: transparent; }

#mmr-custom-toc .mmr-custom-toc__backdrop {
    position: fixed;
    inset: 0;
    z-index: 10010;
    background: rgba(0, 0, 0, .20);
    -webkit-backdrop-filter: blur(4px);
    backdrop-filter: blur(4px);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity .3s ease, visibility 0s linear .3s;
}
#mmr-custom-toc.is-open .mmr-custom-toc__backdrop {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transition: opacity .3s ease, visibility 0s;
}
#mmr-custom-toc .mmr-custom-toc__island {
    position: fixed;
    z-index: 10011;
    left: 50%;
    bottom: calc(92px + env(safe-area-inset-bottom, 0px));
    width: min(280px, calc(100vw - 24px));
    height: 52px;
    transform: translateX(-50%);
    overflow: hidden;
    border: 1px solid var(--mmr-toc-border);
    border-radius: 26px;
    background: var(--mmr-toc-bg);
    -webkit-backdrop-filter: blur(18px);
    backdrop-filter: blur(18px);
    box-shadow: 0 14px 40px rgba(0, 0, 0, .22);
    color: var(--mmr-toc-fg);
    animation: mmr-toc-enter .45s cubic-bezier(.22, 1, .36, 1) both;
    transition: width .5s cubic-bezier(.22, 1, .36, 1),
                height .5s cubic-bezier(.22, 1, .36, 1),
                border-radius .5s cubic-bezier(.22, 1, .36, 1);
}
#mmr-custom-toc.is-open .mmr-custom-toc__island {
    width: min(340px, calc(100vw - 24px));
    height: min(400px, calc(100dvh - 180px));
    border-radius: 24px;
}
@keyframes mmr-toc-enter {
    from { opacity: 0; transform: translate(-50%, 50px); }
    to { opacity: 1; transform: translate(-50%, 0); }
}

#mmr-custom-toc .mmr-custom-toc__trigger {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    gap: 16px;
    width: 100%;
    height: 52px;
    padding: 0 18px;
    border: 0;
    background: transparent;
    color: var(--mmr-toc-fg);
    cursor: pointer;
    text-align: left;
    font: 500 14px/1.2 system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    opacity: 1;
    transform: scale(1);
    filter: blur(0);
    transition: opacity .28s ease .1s, transform .28s ease .1s, filter .28s ease .1s;
}
#mmr-custom-toc.is-open .mmr-custom-toc__trigger {
    opacity: 0;
    transform: scale(.95);
    filter: blur(4px);
    pointer-events: none;
    transition-delay: 0s;
}
#mmr-custom-toc .mmr-custom-toc__status-dot {
    flex: 0 0 8px;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--mmr-toc-fg);
}
#mmr-custom-toc .mmr-custom-toc__current {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
#mmr-custom-toc .mmr-custom-toc__progress {
    display: block;
    flex: 0 0 24px;
    width: 24px;
    height: 24px;
    transform: rotate(-90deg);
    fill: none;
    stroke-width: 2.5;
}
#mmr-custom-toc .mmr-custom-toc__progress-track { stroke: var(--mmr-toc-border); }
#mmr-custom-toc .mmr-custom-toc__progress-value {
    stroke: var(--mmr-toc-fg);
    stroke-linecap: round;
    stroke-dasharray: 67.54;
    stroke-dashoffset: 67.54;
    transition: stroke-dashoffset .15s ease-out;
}

#mmr-custom-toc .mmr-custom-toc__panel {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    min-height: 0;
    opacity: 0;
    visibility: hidden;
    transform: scale(1.05);
    pointer-events: none;
    transition: opacity .3s ease, transform .3s cubic-bezier(.22, 1, .36, 1), visibility 0s linear .3s;
}
#mmr-custom-toc.is-open .mmr-custom-toc__panel {
    opacity: 1;
    visibility: visible;
    transform: scale(1);
    pointer-events: auto;
    transition: opacity .3s ease .1s, transform .3s cubic-bezier(.22, 1, .36, 1) .1s, visibility 0s;
}
#mmr-custom-toc .mmr-custom-toc__header {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 18px 18px 10px 24px;
    color: var(--mmr-toc-muted);
    font: 600 11px/1.2 system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    letter-spacing: .08em;
}
#mmr-custom-toc .mmr-custom-toc__close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 36px;
    width: 36px;
    height: 36px;
    border: 0;
    border-radius: 10px;
    background: transparent;
    color: var(--mmr-toc-muted);
    cursor: pointer;
}
#mmr-custom-toc .mmr-custom-toc__close:hover { background: var(--mmr-toc-hover); color: var(--mmr-toc-fg); }
#mmr-custom-toc .mmr-custom-toc__close svg {
    width: 20px;
    height: 20px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
}
#mmr-custom-toc .mmr-custom-toc__nav {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: 0 12px 16px;
    scrollbar-width: thin;
}
#mmr-custom-toc .mmr-custom-toc__list { display: flex; flex-direction: column; gap: 2px; margin: 0; padding: 0; list-style: none; }
#mmr-custom-toc .mmr-custom-toc__link {
    display: flex;
    align-items: center;
    gap: 12px;
    width: 100%;
    min-height: 38px;
    padding: 8px 12px 8px var(--mmr-toc-indent, 12px);
    border-radius: 8px;
    background: transparent;
    color: var(--mmr-toc-muted);
    text-align: left;
    text-decoration: none;
    font: 400 14px/1.3 system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    transition: background-color .2s ease, color .2s ease;
}
#mmr-custom-toc .mmr-custom-toc__link:hover { background: var(--mmr-toc-hover); color: var(--mmr-toc-fg); text-decoration: none; }
#mmr-custom-toc .mmr-custom-toc__link.is-active { background: var(--mmr-toc-active); color: var(--mmr-toc-fg); font-weight: 600; }
#mmr-custom-toc .mmr-custom-toc__link-label {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    transition: transform .25s ease;
}
#mmr-custom-toc .mmr-custom-toc__link:hover .mmr-custom-toc__link-label { transform: translateX(4px); }
#mmr-custom-toc .mmr-custom-toc__link::after {
    content: "";
    flex: 0 0 6px;
    width: 6px;
    height: 6px;
    margin-left: auto;
    border-radius: 50%;
    background: currentColor;
    opacity: 0;
    transform: scale(0);
    transition: opacity .2s ease, transform .2s ease;
}
#mmr-custom-toc .mmr-custom-toc__link.is-active::after { opacity: 1; transform: scale(1); }
#mmr-custom-toc button:focus-visible,
#mmr-custom-toc a:focus-visible {
    outline: 2px solid #d3440b;
    outline-offset: -2px;
}
#report-long-description h2[id],
#report-long-description h3[id],
#report-long-description section[id] { scroll-margin-top: var(--mmr-custom-toc-scroll-offset, 120px); }

@media (max-width: 640px) {
    #mmr-custom-toc .mmr-custom-toc__island { bottom: calc(84px + env(safe-area-inset-bottom, 0px)); }
    #mmr-custom-toc.is-open .mmr-custom-toc__island { height: min(400px, calc(100dvh - 172px)); }
    #mmr-custom-toc .mmr-custom-toc__link { min-height: 44px; }
}
@media (prefers-color-scheme: dark) {
    #mmr-custom-toc {
        --mmr-toc-bg: rgba(25, 27, 32, .97);
        --mmr-toc-fg: #f5f6f7;
        --mmr-toc-muted: #afb5bf;
        --mmr-toc-border: rgba(255, 255, 255, .17);
        --mmr-toc-hover: rgba(255, 255, 255, .07);
        --mmr-toc-active: rgba(255, 255, 255, .13);
    }
}
@media (prefers-reduced-motion: reduce) {
    #mmr-custom-toc .mmr-custom-toc__island { animation: none; transition: none; }
    #mmr-custom-toc .mmr-custom-toc__backdrop,
    #mmr-custom-toc .mmr-custom-toc__trigger,
    #mmr-custom-toc .mmr-custom-toc__panel,
    #mmr-custom-toc .mmr-custom-toc__progress-value,
    #mmr-custom-toc .mmr-custom-toc__link,
    #mmr-custom-toc .mmr-custom-toc__link-label,
    #mmr-custom-toc .mmr-custom-toc__link::after { transition: none; }
}
