/* =========================================================================
   Faragiri - Advanced Table of Contents (single movie)
   Backlinko-style: collapsible inline card + desktop sticky scroll-spy rail.
   Dark theme aware, RTL-first, desktop + mobile optimized.
   ========================================================================= */

/* explicit Persian digits - reliable across browsers that support @counter-style */
@counter-style fgri-persian{
    system: numeric;
    symbols: "\06F0" "\06F1" "\06F2" "\06F3" "\06F4" "\06F5" "\06F6" "\06F7" "\06F8" "\06F9";
}

:root{
    --fgri-toc-accent: #24baef;
    --fgri-toc-accent-soft: rgba(36,186,239,.14);
    --fgri-toc-bg: #191e2a;
    --fgri-toc-bg-2: #11141f;
    --fgri-toc-border: #252a37;
    --fgri-toc-text: #cfd6e4;
    --fgri-toc-text-dim: #8b93a7;
    --fgri-toc-offset: 90px;     /* scroll offset for sticky site header */
    --fgri-toc-radius: 14px;
}

/* keep anchored headings clear of the sticky header */
.movie__description h2[id],
.movie__description h3[id],
.entry-content h2[id],
.entry-content h3[id]{ scroll-margin-top: var(--fgri-toc-offset); }

/* ---------- inline card ---------- */
.fgri-toc{
    --pad: 18px;
    margin: 4px 0 30px;
    background: linear-gradient(180deg, var(--fgri-toc-bg) 0%, var(--fgri-toc-bg-2) 100%);
    border: 1px solid var(--fgri-toc-border);
    border-radius: var(--fgri-toc-radius);
    box-shadow: 0 10px 30px -18px rgba(0,0,0,.7);
    overflow: clip;
    font-family: inherit;
}

.fgri-toc__bar{
    all: unset;
    box-sizing: border-box;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    width: 100%;
    padding: 16px var(--pad);
    cursor: pointer;
    user-select: none;
}
.fgri-toc__bar:focus-visible{ outline: 2px solid var(--fgri-toc-accent); outline-offset: -2px; }

.fgri-toc__title{
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-weight: 700;
    font-size: 1.05rem;
    color: #fff;
    letter-spacing: .2px;
}
.fgri-toc__title svg{ width: 20px; height: 20px; color: var(--fgri-toc-accent); flex: none; }

.fgri-toc__count{
    font-size: .72rem;
    font-weight: 600;
    color: var(--fgri-toc-accent);
    background: var(--fgri-toc-accent-soft);
    border-radius: 999px;
    padding: 2px 9px;
    margin-inline-start: 2px;
}

.fgri-toc__chevron{
    display: inline-flex;
    color: var(--fgri-toc-text-dim);
    transition: transform .3s ease;
}
.fgri-toc__chevron svg{ width: 20px; height: 20px; }
.fgri-toc.is-collapsed .fgri-toc__chevron{ transform: rotate(-90deg); }

/* smooth collapse using grid-rows trick */
.fgri-toc__body{
    display: grid;
    grid-template-rows: 1fr;
    transition: grid-template-rows .32s ease;
}
.fgri-toc.is-collapsed .fgri-toc__body{ grid-template-rows: 0fr; }
.fgri-toc__body-inner{ overflow: hidden; min-height: 0; }

/* ---------- the list ---------- */
.fgri-toc__list, .fgri-toc__sublist{
    list-style: none;
    margin: 0;
    padding: 0;
}
.fgri-toc__list{
    counter-reset: fgri-toc;
    padding: 2px var(--pad) 18px;
    border-top: 1px solid var(--fgri-toc-border);
}
.fgri-toc__item{ margin: 0; }

.fgri-toc__item a{
    display: block;
    position: relative;
    color: var(--fgri-toc-text);
    text-decoration: none;
    line-height: 1.6;
    padding: 7px 0;
    transition: color .18s ease, transform .18s ease;
}
.fgri-toc__item a:hover{ color: var(--fgri-toc-accent); }
.fgri-toc__item a:hover{ transform: translateX(-3px); }
html[dir="ltr"] .fgri-toc__item a:hover{ transform: translateX(3px); }

/* h2 level - numbered with Persian/Arabic-indic digits */
.fgri-toc__item--h2{ counter-increment: fgri-toc; }
.fgri-toc__item--h2 > a{
    font-weight: 600;
    padding-inline-start: 34px;
    font-size: .97rem;
}
.fgri-toc__item--h2 > a::before{
    content: counter(fgri-toc, decimal);
    position: absolute;
    inset-inline-start: 0;
    top: 7px;
    width: 24px;
    height: 24px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: .72rem;
    font-weight: 700;
    color: var(--fgri-toc-accent);
    background: var(--fgri-toc-accent-soft);
    border-radius: 7px;
    line-height: 1;
    transition: background .18s ease, color .18s ease;
}
:root:lang(fa) .fgri-toc__item--h2 > a::before,
[dir="rtl"] .fgri-toc__item--h2 > a::before{ content: counter(fgri-toc, fgri-persian); }

/* h3 level - indented, ticked */
.fgri-toc__sublist{ padding-inline-start: 34px; }
.fgri-toc__item--h3 > a{
    font-size: .9rem;
    color: var(--fgri-toc-text-dim);
    padding-inline-start: 16px;
}
.fgri-toc__item--h3 > a::before{
    content: "";
    position: absolute;
    inset-inline-start: 2px;
    top: 50%;
    width: 6px; height: 6px;
    margin-top: -3px;
    border-radius: 50%;
    background: var(--fgri-toc-border);
    transition: background .18s ease;
}

/* active (scroll-spy) */
.fgri-toc__item.is-active > a{ color: var(--fgri-toc-accent); font-weight: 700; }
.fgri-toc__item--h2.is-active > a::before{ background: var(--fgri-toc-accent); color: #06121b; }
.fgri-toc__item--h3.is-active > a::before{ background: var(--fgri-toc-accent); box-shadow: 0 0 0 3px var(--fgri-toc-accent-soft); }

/* =========================================================================
   Desktop sticky rail (mounted by JS only when there is room in the gutter)
   ========================================================================= */
.fgri-toc-rail{
    position: fixed;
    z-index: 40;
    width: 260px;
    max-height: 74vh;
    display: flex;
    flex-direction: column;
    background: linear-gradient(180deg, var(--fgri-toc-bg) 0%, var(--fgri-toc-bg-2) 100%);
    border: 1px solid var(--fgri-toc-border);
    border-radius: var(--fgri-toc-radius);
    box-shadow: 0 18px 50px -24px rgba(0,0,0,.85);
    opacity: 0;
    visibility: hidden;
    transform: translateY(8px);
    transition: opacity .25s ease, transform .25s ease, visibility .25s;
    pointer-events: none;
}
.fgri-toc-rail.is-visible{
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
    pointer-events: auto;
}
.fgri-toc-rail__head{
    padding: 14px 16px 12px;
    border-bottom: 1px solid var(--fgri-toc-border);
}
.fgri-toc-rail__title{
    display: flex; align-items: center; gap: 8px;
    color: #fff; font-weight: 700; font-size: .92rem; margin: 0 0 10px;
}
.fgri-toc-rail__title svg{ width: 17px; height: 17px; color: var(--fgri-toc-accent); }
.fgri-toc-rail__progress{ height: 4px; border-radius: 999px; background: var(--fgri-toc-border); overflow: hidden; }
.fgri-toc-rail__progress > i{ display: block; height: 100%; width: 0; background: var(--fgri-toc-accent); transition: width .15s ease; }

.fgri-toc-rail__scroll{
    overflow-y: auto;
    padding: 8px 14px 14px;
    scrollbar-width: thin;
    scrollbar-color: var(--fgri-toc-border) transparent;
}
.fgri-toc-rail__scroll::-webkit-scrollbar{ width: 7px; }
.fgri-toc-rail__scroll::-webkit-scrollbar-thumb{ background: var(--fgri-toc-border); border-radius: 999px; }

/* rail reuses list styles but slightly tighter.
   NB: only tighten the block padding - keep the inline-start gutter that
   reserves room for the number badge, otherwise the digit overlaps the text. */
.fgri-toc-rail .fgri-toc__list{ border-top: 0; padding: 0; }
.fgri-toc-rail .fgri-toc__item a{ padding-block: 5px; font-size: .88rem; }
.fgri-toc-rail .fgri-toc__item--h2 > a{ font-size: .9rem; padding-inline-start: 34px; }
.fgri-toc-rail .fgri-toc__item--h3 > a{ padding-inline-start: 16px; }

/* hide rail on smaller screens - inline card is enough there */
@media (max-width: 1199px){
    .fgri-toc-rail{ display: none !important; }
}

@media (max-width: 600px){
    .fgri-toc{ --pad: 14px; margin-bottom: 22px; }
    .fgri-toc__title{ font-size: .98rem; }
}

@media (prefers-reduced-motion: reduce){
    .fgri-toc__body, .fgri-toc__chevron, .fgri-toc-rail, .fgri-toc__item a{ transition: none !important; }
    html{ scroll-behavior: auto !important; }
}
