/* Techfalz TOC — lightweight, RTL-safe (logical properties), dark-mode ready */
.tfz-toc{--tfz-bg:#f8fafc;--tfz-text:#1e293b;--tfz-link:#334155;--tfz-active:#2563eb;--tfz-border:#e2e8f0;--tfz-fs:15px;--tfz-radius:8px;
box-sizing:border-box;background:var(--tfz-bg);color:var(--tfz-text);border:1px solid var(--tfz-border);border-radius:var(--tfz-radius);padding:14px 18px;margin:0 0 1.5em;font-size:var(--tfz-fs);line-height:1.5;max-width:100%;position:relative}
.tfz-toc *{box-sizing:border-box}
.tfz-sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.tfz-skip{position:absolute;inset-inline-start:8px;top:-60px;background:var(--tfz-active);color:#fff;padding:4px 10px;border-radius:4px;z-index:2;font-size:.85em}
.tfz-skip:focus{top:8px}
.tfz-header{display:flex;align-items:center;justify-content:space-between;gap:12px}
.tfz-title{margin:0;font-weight:700;font-size:1.1em;color:var(--tfz-text)}
.tfz-toggle{all:unset;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;color:var(--tfz-text)}
.tfz-toggle:hover{background:rgba(127,127,127,.15)}
.tfz-toggle:focus-visible,.tfz-link:focus-visible,.tfz-fab:focus-visible,.tfz-top:focus-visible,.tfz-filter:focus-visible{outline:2px solid var(--tfz-active);outline-offset:2px}
.tfz-ico{display:inline-flex}.tfz-ico-close{display:none}
.tfz-collapsed .tfz-ico-open{display:none}.tfz-collapsed .tfz-ico-close{display:inline-flex}
.tfz-svg{display:block;width:1.1em;height:1.1em}
/* collapse animation */
.tfz-body{display:grid;grid-template-rows:1fr;transition:grid-template-rows .3s ease,visibility 0s}
.tfz-body-inner{overflow:hidden;min-height:0}
.tfz-collapsed .tfz-body{grid-template-rows:0fr;visibility:hidden;transition:grid-template-rows .3s ease,visibility 0s .3s}
.tfz-meta{margin:.5em 0 0;font-size:.85em;opacity:.75}
.tfz-list,.tfz-sub{list-style:none;margin:0;padding:0}
.tfz-list{margin-top:.6em}
.tfz-sub{margin:.15em 0 .15em 0;padding-inline-start:1.1em}
.tfz-item{margin:.2em 0;padding:0}
.tfz-link{display:block;padding:3px 8px;color:var(--tfz-link);text-decoration:none;border-inline-start:3px solid transparent;border-radius:4px;transition:color .2s,background .2s,border-color .2s,transform .2s}
.tfz-link:hover{color:var(--tfz-active)}
.tfz-num{opacity:.7;margin-inline-end:.35em;font-variant-numeric:tabular-nums}
.tfz-cols-2 .tfz-list{column-count:2;column-gap:2em}.tfz-cols-3 .tfz-list{column-count:3;column-gap:2em}.tfz-cols-4 .tfz-list{column-count:4;column-gap:2em}
.tfz-cols-2 .tfz-item,.tfz-cols-3 .tfz-item,.tfz-cols-4 .tfz-item{break-inside:avoid}
@media(max-width:782px){.tfz-cols-2 .tfz-list,.tfz-cols-3 .tfz-list,.tfz-cols-4 .tfz-list{column-count:1}}
/* active highlight styles */
.tfz-link.tfz-active{color:var(--tfz-active);font-weight:600}
.tfz-act-bar .tfz-link.tfz-active{border-inline-start-color:var(--tfz-active)}
.tfz-act-bg .tfz-link.tfz-active{background:color-mix(in srgb,var(--tfz-active) 14%,transparent)}
.tfz-act-underline .tfz-link.tfz-active .tfz-text{text-decoration:underline;text-underline-offset:4px}
.tfz-act-glow .tfz-link.tfz-active{text-shadow:0 0 12px var(--tfz-active)}
.tfz-act-bold .tfz-link.tfz-active{font-weight:800}
.tfz-hc .tfz-link.tfz-active{outline:2px solid currentColor}
.tfz-link.tfz-read .tfz-num{opacity:.4}
/* animations */
@keyframes tfz-fade{from{opacity:0}to{opacity:1}}
@keyframes tfz-slide{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
@keyframes tfz-in{from{opacity:0;transform:translateX(-10px)}to{opacity:1;transform:none}}
.tfz-anim-fade{animation:tfz-fade .5s ease both}
.tfz-anim-slide{animation:tfz-slide .45s ease both}
.tfz-anim-stagger .tfz-item{animation:tfz-in .4s ease both}
.tfz-anim-stagger .tfz-item:nth-child(2){animation-delay:.05s}.tfz-anim-stagger .tfz-item:nth-child(3){animation-delay:.1s}.tfz-anim-stagger .tfz-item:nth-child(4){animation-delay:.15s}.tfz-anim-stagger .tfz-item:nth-child(5){animation-delay:.2s}.tfz-anim-stagger .tfz-item:nth-child(n+6){animation-delay:.25s}
.tfz-anim-glow .tfz-link:hover{box-shadow:0 0 14px color-mix(in srgb,var(--tfz-active) 45%,transparent)}
.tfz-anim-underline .tfz-text{background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat;transition:background-size .3s}
.tfz-anim-underline .tfz-link:hover .tfz-text{background-size:100% 1px}
/* themes */
.tfz-theme-dark{--tfz-bg:#0f172a;--tfz-text:#e2e8f0;--tfz-link:#cbd5e1;--tfz-active:#60a5fa;--tfz-border:#334155}
@media(prefers-color-scheme:dark){.tfz-theme-auto{--tfz-bg:#0f172a;--tfz-text:#e2e8f0;--tfz-link:#cbd5e1;--tfz-active:#60a5fa;--tfz-border:#334155}}
.tfz-theme-minimal{background:transparent;border:0;border-inline-start:3px solid var(--tfz-border);border-radius:0;padding:4px 0 4px 16px}
.tfz-theme-modern{background:#fff;border-color:transparent;box-shadow:0 6px 24px rgba(15,23,42,.1);--tfz-active:#7c3aed}
.tfz-theme-glass{background:rgba(255,255,255,.55);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-color:rgba(255,255,255,.6);box-shadow:0 8px 32px rgba(15,23,42,.12)}
.tfz-theme-boxed{background:#fff;border:2px solid var(--tfz-text);border-radius:2px;box-shadow:5px 5px 0 var(--tfz-text)}
.tfz-theme-gradient{background:linear-gradient(135deg,#eef2ff,#fdf2f8);border-color:#e9d5ff;--tfz-active:#9333ea}
.tfz-theme-techfalz{--tfz-bg:#0b1220;--tfz-text:#e6edf7;--tfz-link:#b8c5da;--tfz-active:#22d3ee;--tfz-border:#1e2a44;border-top:3px solid var(--tfz-active)}
.tfz-details>summary{cursor:pointer;font-weight:700}
.tfz-credit{margin-top:.6em;font-size:.75em;opacity:.6;text-align:end}
.tfz-credit a{color:inherit}
.tfz-filter{width:100%;margin:.6em 0 0;padding:6px 10px;border:1px solid var(--tfz-border);border-radius:6px;background:transparent;color:inherit;font:inherit}
.tfz-item[hidden]{display:none}
/* alignment */
.tfz-align-left{float:left;margin-inline-end:1.5em;max-width:340px}.tfz-align-right{float:right;margin-inline-start:1.5em;max-width:340px}.tfz-align-center{margin-inline:auto}
.tfz-rtl.tfz-align-left{float:right}.tfz-rtl.tfz-align-right{float:left}
/* reading progress inside TOC */
.tfz-pct{display:flex;align-items:center;gap:8px;margin-top:.6em;font-size:.8em;opacity:.85}
.tfz-pct-bar{flex:1;height:4px;border-radius:4px;background:var(--tfz-border);overflow:hidden}
.tfz-pct-bar i{display:block;height:100%;width:0;background:var(--tfz-active);transition:width .2s}
/* sticky (JS pin) & widget (CSS sticky) */
.tfz-widget-sticky{position:sticky;top:var(--tfz-top);max-height:calc(100vh - var(--tfz-top) - 20px);overflow:auto}
.tfz-toc.tfz-pinned{position:fixed;z-index:99;max-height:calc(100vh - var(--tfz-top) - 20px);overflow:auto;margin:0}
/* documentation / KB layout */
.tfz-doc{display:grid;grid-template-columns:var(--tfz-doc-w) minmax(0,1fr);gap:2em;align-items:start}
.tfz-doc-end{grid-template-columns:minmax(0,1fr) var(--tfz-doc-w)}.tfz-doc-end .tfz-doc-aside{order:2}
.tfz-doc-aside{align-self:stretch}
.tfz-doc-aside .tfz-toc{position:sticky;top:var(--tfz-top);max-height:calc(100vh - var(--tfz-top) - 20px);overflow:auto;margin:0}
@media(max-width:900px){.tfz-doc,.tfz-doc-end{display:block}.tfz-doc-aside .tfz-toc{position:static;max-height:none;margin-bottom:1.5em}}
/* floating sidebar */
.tfz-toc.tfz-floating{position:fixed;top:var(--tfz-top);width:var(--tfz-w);max-width:calc(100vw - 32px);max-height:calc(100vh - var(--tfz-top) - 20px);overflow:auto;margin:0;z-index:9990;box-shadow:0 10px 30px rgba(15,23,42,.18);transition:transform .3s ease,opacity .3s}
.tfz-floating.tfz-side-end{inset-inline-end:var(--tfz-x)}.tfz-floating.tfz-side-start{inset-inline-start:var(--tfz-x)}
.tfz-floating.tfz-hidden{opacity:0;pointer-events:none;visibility:hidden}
.tfz-floating.tfz-side-end.tfz-hidden{transform:translateX(30px)}.tfz-floating.tfz-side-start.tfz-hidden{transform:translateX(-30px)}
[dir=rtl] .tfz-floating.tfz-side-end.tfz-hidden{transform:translateX(-30px)}[dir=rtl] .tfz-floating.tfz-side-start.tfz-hidden{transform:translateX(30px)}
.tfz-fab{position:fixed;bottom:24px;inset-inline-end:var(--tfz-x);z-index:9991;width:46px;height:46px;border-radius:50%;border:0;cursor:pointer;background:#2563eb;color:#fff;box-shadow:0 6px 18px rgba(0,0,0,.25);display:flex;align-items:center;justify-content:center;font-size:20px}
.tfz-fab.tfz-side-start{inset-inline-end:auto;inset-inline-start:var(--tfz-x)}
@media(max-width:782px){.tfz-toc.tfz-floating{inset-inline:12px;top:auto;bottom:80px;width:auto;max-height:60vh}}
/* progress bar & scroll-top */
.tfz-progress{position:fixed;inset-inline:0;z-index:99999;background:transparent;pointer-events:none}
.tfz-progress i{display:block;height:100%;width:0;background:#2563eb}
.tfz-top{position:fixed;bottom:24px;inset-inline-start:24px;z-index:9989;width:42px;height:42px;border-radius:50%;border:0;cursor:pointer;background:#0f172a;color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 18px rgba(0,0,0,.25);opacity:0;transform:translateY(10px);transition:opacity .25s,transform .25s}
.tfz-top.tfz-show{opacity:1;transform:none}
.tfz-top[hidden]{display:none}
.tfz-top .tfz-svg{width:20px;height:20px;margin:auto}
@media(prefers-reduced-motion:reduce){.tfz-toc,.tfz-toc *{animation:none!important;transition:none!important}}
@media print{.tfz-floating,.tfz-fab,.tfz-top,.tfz-progress{display:none!important}}
