.reader-head { background: var(--vop-parchment-100); border-bottom: 1px solid var(--vop-line); padding-block: 1.5rem; }
.reader-head h1 { margin: 0; font-size: clamp(1.6rem, 3.4vw, 2.4rem); }
.flipbook { position: relative; padding: 0 0 36px; overflow: hidden;
  /* local palette (the reader predates the --vop-* tokens) */
  --paper: #fffdf7; --line: var(--vop-line); --cream: var(--vop-parchment-100); --ink: var(--vop-ink); --olive: var(--vop-olive-600); --muted: var(--vop-ink-muted); --gold: var(--vop-gold-500);
  background:
    radial-gradient(ellipse 70% 55% at 50% 45%, rgba(255, 214, 150, .16) 0%, transparent 70%),
    repeating-linear-gradient(92deg, rgba(255,255,255,.018) 0 2px, transparent 2px 9px),
    radial-gradient(ellipse at center, #5a3d2a 0%, #2a1b12 70%, #170e09 100%); }
.flipbook:fullscreen { padding: 0; display: flex; flex-direction: column; height: 100vh; }
.flipbook:fullscreen .fb-stage { flex: 1; max-width: none; }
.fb-toolbar { position: sticky; top: 0; z-index: 5; display: flex; justify-content: space-between; align-items: center; gap: 8px; flex-wrap: wrap; padding: 10px 16px; background: rgba(30, 20, 13, .92); backdrop-filter: blur(4px); font-family: var(--vop-font-body); }
.fb-group { display: flex; align-items: center; gap: 6px; }
.fb-btn { background: rgba(255, 255, 255, .08); color: #f3e7cf; border: 1px solid rgba(255, 255, 255, .18); border-radius: 8px; min-height: 42px; min-width: 42px; padding: 0 12px; font: inherit; font-size: .95rem; cursor: pointer; }
.fb-btn:hover { background: rgba(255, 255, 255, .18); }
.fb-btn[aria-pressed="true"], .fb-btn[aria-expanded="true"] { background: var(--gold); color: #1e140d; border-color: var(--gold); }
.fb-page { color: #f3e7cf; display: flex; align-items: center; gap: 6px; font-size: .95rem; }
.fb-page input { width: 64px; text-align: center; padding: 8px 6px; border-radius: 8px; border: 1px solid rgba(255,255,255,.25); background: rgba(0,0,0,.25); color: #fff; font: inherit; }
.fb-stage { position: relative; max-width: 1800px; margin: 0 auto; padding: 24px 60px 0; min-height: 320px; }
/* size is set by reader.js (bookSize) so the whole page always fits the visible window */
.fb-book { margin: 0 auto; }
.flipbook:fullscreen .fb-stage { display: flex; flex-direction: column; justify-content: center; padding-top: 12px; }
.fb-book .fb-leaf { background: #fffdf7 url('../img/tau.svg') center / 64px no-repeat; overflow: hidden; }
.fb-book .fb-leaf.ready { background: #fffdf7; }
.fb-book .fb-leaf:not(.fb-leaf-html) > img { width: 100%; height: 100%; object-fit: contain; display: block; user-select: none; -webkit-user-drag: none; }
.fb-simple { text-align: center; }
.fb-simple img { display: inline-block; max-width: min(100%, 820px); max-height: 85vh; width: auto; box-shadow: 0 10px 40px rgba(0,0,0,.45); background: #fffdf7; min-height: 300px; }
.fb-edge { position: absolute; top: 50%; transform: translateY(-50%); width: 44px; height: 88px; border: 0; border-radius: 8px; background: rgba(255,255,255,.08); color: #f3e7cf; font-size: 2rem; cursor: pointer; }
.fb-edge:hover { background: rgba(255,255,255,.2); }
.fb-edge.left { left: 6px; }
.fb-edge.right { right: 6px; }
.fb-status { color: #f3e7cf; text-align: center; padding: 80px 0; font-family: var(--vop-font-body); }
.fb-spinner { width: 42px; height: 42px; border: 4px solid rgba(255,255,255,.2); border-top-color: var(--gold); border-radius: 50%; margin: 0 auto 14px; animation: spin 1s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .fb-spinner { animation: none; } }
.fb-error { color: #f3e7cf; text-align: center; padding: 60px 16px; font-family: var(--vop-font-body); }
.fb-toc { position: absolute; z-index: 6; top: 62px; left: 16px; width: min(420px, calc(100% - 32px)); max-height: 70vh; overflow: auto; background: var(--paper); border-radius: 12px; box-shadow: 0 20px 50px rgba(0,0,0,.4); padding: 8px; }
.fb-toc ol { list-style: none; margin: 0; padding: 0; }
.fb-toc li { border-bottom: 1px solid var(--line); padding: 4px 0; }
.fb-toc li:last-child { border-bottom: 0; }
.fb-toc button { display: flex; justify-content: space-between; gap: 12px; width: 100%; text-align: left; background: none; border: 0; padding: 10px; font: inherit; font-size: 1rem; color: var(--ink); cursor: pointer; border-radius: 8px; }
.fb-toc button:hover { background: var(--cream); }
.fb-toc button small { display: block; font-family: var(--vop-font-body); font-size: .72rem; color: var(--olive); text-transform: uppercase; letter-spacing: .06em; }
.fb-toc .pg { font-family: var(--vop-font-body); color: var(--muted); }
.fb-toc-link { display: inline-block; font-family: var(--vop-font-body); font-size: .82rem; padding: 0 10px 8px; }
.fb-zoom { position: fixed; inset: 0; z-index: 50; background: rgba(20, 13, 8, .96); display: flex; flex-direction: column; }
.fb-zoom-bar { display: flex; gap: 8px; align-items: center; justify-content: center; padding: 10px; color: #f3e7cf; font-family: var(--vop-font-body); }
.fb-zoom-scroll { flex: 1; overflow: auto; text-align: center; padding: 10px; }
.fb-zoom-scroll img { display: inline-block; max-width: none; background: #fff; }
@media (max-width: 767px) {
  .fb-btn .lbl { display: none; }
  .fb-stage { padding: 14px 8px 0; }
  .fb-edge { display: none; }
  .fb-toolbar { padding: 8px; justify-content: center; }
}
.fb-error .btn-outline-light { color: #f3e7cf; border-color: rgba(255,255,255,.4); }
.fb-leaf img[src=""], .fb-simple img:not([src]) { visibility: hidden; }

/* ---------- HTML magazine pages: printed-magazine layout ---------- */
.fb-leaf-html { background: #fffdf8; overflow: hidden; container-type: size; }
.fb-book .fb-leaf-html { background: #fffdf8; }
.fb-simple-html { display: flex; justify-content: center; }
.fb-simple-html .fb-leaf-html { width: min(100%, 720px, calc((100vh - 150px) / 1.4142)); aspect-ratio: 1 / 1.4142; box-shadow: 0 10px 40px rgba(0,0,0,.45); text-align: left; }
.fbh { --ink: #1f1712; --accent: #9b2d20; --rule: #d8cbb1; --sans: 'Source Sans 3', 'Noto Sans Tamil', sans-serif; --head: 'Playfair Display', 'Noto Serif Tamil', Georgia, serif;
  position: relative; height: 100%; color: var(--ink); background: #fffdf8;
  font-family: 'Crimson Pro', 'Noto Serif Tamil', Georgia, serif; font-size: calc(3.05cqw * var(--fit, 1)); line-height: 1.42; font-kerning: normal; }
.lang-ta .fbh { font-family: 'Noto Serif Tamil', serif; font-size: calc(2.55cqw * var(--fit, 1)); line-height: 1.66; }
.fbh-pad { padding: 4cqw 6.5cqw 12cqw; }
.fbh p { margin: 0; }

/* running header + folio */
.fbh-head { position: absolute; top: 4.2cqw; left: 6.5cqw; right: 6.5cqw; display: flex; justify-content: space-between; gap: 2em; white-space: nowrap;
  font: 700 2cqw/1 var(--sans); letter-spacing: .2em; text-transform: uppercase; color: #8a6a55; border-bottom: .3cqw solid var(--ink); padding-bottom: 1.2cqw; }
.fbh-head span:last-child { overflow: hidden; text-overflow: ellipsis; color: var(--accent); }
.side-right .fbh-head { flex-direction: row-reverse; }
.lang-ta .fbh-head { letter-spacing: .04em; text-transform: none; font-size: 2.1cqw; }
.fbh-foot { position: absolute; bottom: 4cqw; left: 6.5cqw; right: 6.5cqw; display: flex; justify-content: space-between; align-items: center;
  font: 600 1.9cqw/1 var(--sans); letter-spacing: .14em; text-transform: uppercase; color: #8f7e6a; border-top: .15cqw solid var(--rule); padding-top: 1.6cqw; }
.side-right .fbh-foot { flex-direction: row-reverse; }
.fbh-foot b { font: 900 3.4cqw/1 var(--head); color: var(--ink); letter-spacing: 0; }
.lang-ta .fbh-foot { letter-spacing: 0; text-transform: none; }

/* two-column body */
.fbh-cols { column-count: 2; column-gap: 4.6cqw; column-rule: .12cqw solid var(--rule); text-align: justify; hyphens: auto; -webkit-hyphens: auto; }
.lang-ta .fbh-cols { text-align: left; }
.fbh-cols p { text-indent: 1.25em; orphans: 2; widows: 2; }
.fbh-cols > p:first-child, .fbh-cols h2 + p, .fbh-cols h3 + p, .fbh-cols h4 + p, .fbh-cols ul + p, .fbh-cols blockquote + p { text-indent: 0; }
.fbh-first > p:first-child::first-letter { float: left; font: 900 3.9em/.78 var(--head); color: var(--accent); padding: .06em .07em 0 0; }
.lang-ta .fbh-first > p:first-child::first-letter { float: none; font: inherit; color: inherit; padding: 0; }
.fbh-cols h2, .fbh-cols h3, .fbh-cols h4 { font: 800 .74em/1.25 var(--sans); letter-spacing: .14em; text-transform: uppercase; color: var(--accent); margin: 1.1em 0 .35em; break-after: avoid; text-align: left; }
.lang-ta .fbh-cols h2, .lang-ta .fbh-cols h3 { letter-spacing: 0; text-transform: none; font-size: .9em; }
.fbh-cols ul, .fbh-cols ol { margin: .35em 0 .5em; padding-left: 1.1em; text-align: left; }
.fbh-cols li { margin-bottom: .2em; }
.fbh-cols li::marker { color: var(--accent); }
.fbh-cols blockquote { margin: .6em 0; padding-left: .8em; border-left: .4cqw solid #b08d3c; font-style: italic; }
.fbh-cols em { font-style: italic; }
.fbh-end { display: inline-block; width: .62em; height: .62em; margin-left: .35em; background: var(--accent); vertical-align: baseline; }

/* pull quote spanning both columns */
.fbh-pull { margin: 0 0 3.2cqw; padding: 2.6cqw 3cqw 2.4cqw; border-top: .5cqw solid var(--ink); border-bottom: .15cqw solid var(--ink); text-align: center; }
.fbh-pull span { display: block; font: italic 700 1.32em/1.3 var(--head); color: var(--ink); }
.fbh-pull span::before { content: "“"; display: block; font: 900 2.4em/.6 var(--head); color: var(--accent); margin-bottom: .1em; }
.lang-ta .fbh-pull span { font: 600 1.05em/1.6 'Noto Serif Tamil', serif; }

/* article opener */
.fbh-hero { position: relative; margin: 0; height: 43cqh; }
.fbh-hero img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fbh-hero figcaption { position: absolute; right: 3cqw; top: 3cqw; max-width: 60%; text-align: right; font: italic 1.7cqw/1.3 var(--sans); color: #fff; text-shadow: 0 1px 6px rgba(0,0,0,.7); }
.fbh-tag { position: absolute; left: 6.5cqw; bottom: -2.4cqw; background: var(--accent); color: #fff; font: 800 1.9cqw/1 var(--sans); letter-spacing: .18em; text-transform: uppercase; padding: 1.3cqw 2.2cqw; }
.lang-ta .fbh-tag { letter-spacing: 0; text-transform: none; font-size: 2.1cqw; }
.fbh-opener .fbh-pad { padding-top: 6.5cqw; }
.fbh-opener .fbh-noimg { padding-top: 14cqw; }
.fbh-title { font: 900 2.5em/1.02 var(--head); letter-spacing: -.01em; color: var(--ink) !important; margin: 0 0 .28em !important; }
.lang-ta .fbh-title { font: 700 1.62em/1.32 'Noto Serif Tamil', serif; }
.fbh-dek { font-style: italic; font-size: 1.12em; line-height: 1.32; color: #5b4636; margin-bottom: .6em !important; }
.lang-ta .fbh-dek { font-style: normal; font-size: .98em; line-height: 1.6; }
.fbh-by { font: 700 1.9cqw/1 var(--sans); letter-spacing: .16em; text-transform: uppercase; color: var(--ink); border-top: .15cqw solid var(--rule); padding-top: 1.4cqw; margin-bottom: 2.4cqw !important; }
.fbh-by span { color: #8f7e6a; font-weight: 600; }
.lang-ta .fbh-by { letter-spacing: 0; text-transform: none; font-size: 2.1cqw; }
.fbh-kicker { font: 800 1.9cqw/1 var(--sans); letter-spacing: .18em; text-transform: uppercase; color: var(--accent); margin-bottom: 1.6cqw !important; }
.lang-ta .fbh-kicker { letter-spacing: 0; text-transform: none; font-size: 2.1cqw; }

/* contents */
.fbh-contents .fbh-pad { padding-top: 8cqw; }
.fbh-contents-mast { font: 900 3.5em/.92 var(--head); letter-spacing: -.02em; border-bottom: .7cqw solid var(--ink); padding-bottom: 1.6cqw; }
.lang-ta .fbh-contents-mast { font: 700 2em/1.3 'Noto Serif Tamil', serif; }
.fbh-contents-sub { font: 700 1.9cqw/1.4 var(--sans); letter-spacing: .16em; text-transform: uppercase; color: var(--accent); margin: 1.6cqw 0 2.6cqw !important; }
.lang-ta .fbh-contents-sub { letter-spacing: 0; text-transform: none; }
.fbh-toc { list-style: none; padding: 0; margin: 0; }
.fbh-toc li { display: flex; gap: 3cqw; align-items: baseline; padding: .55em 0; border-bottom: .12cqw solid var(--rule); }
.fbh-toc b { flex: none; min-width: 1.6em; font: 900 1.7em/1 var(--head); color: var(--accent); }
.fbh-toc small { display: block; font: 800 1.7cqw/1.3 var(--sans); letter-spacing: .14em; text-transform: uppercase; color: #5f6d33; }
.lang-ta .fbh-toc small { letter-spacing: 0; text-transform: none; font-size: 1.9cqw; }
.fbh-toc strong { display: block; font: 700 1.05em/1.2 var(--head); }
.lang-ta .fbh-toc strong { font: 600 .92em/1.5 'Noto Serif Tamil', serif; }
.fbh-note { margin-top: 3.4cqw; background: #f6efe0; border-left: .8cqw solid #b08d3c; padding: 2.8cqw 3.6cqw; font-style: italic; font-size: .92em; }
.lang-ta .fbh-note { font-style: normal; }
.fbh-sign { text-align: right; font: 700 1.8cqw/1.3 var(--sans) !important; letter-spacing: .12em; text-transform: uppercase; margin-top: .6em !important; color: #8f7e6a; font-style: normal; }

/* cover */
.fbh-cover { background: #2e1d14; color: #fff; overflow: hidden; }
.fbh-cover-inner { position: absolute; inset: 0; }
.fbh-cover-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.fbh-cover-shade { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(20,12,6,.78) 0%, rgba(20,12,6,0) 30%, rgba(20,12,6,0) 52%, rgba(20,12,6,.9) 100%); }
.fbh-cover-plain { background: radial-gradient(circle at 50% 35%, #6b4a33, #2e1d14 75%); }
.fbh-cover-mast { position: absolute; top: 5cqw; left: 0; right: 0; text-align: center; font: 900 11cqw/1 'Playfair Display', Georgia, serif; letter-spacing: -.01em; margin: 0; text-shadow: 0 2px 14px rgba(0,0,0,.5); }
.fbh-cover-issue { position: absolute; top: 18.5cqw; left: 6cqw; right: 6cqw; display: flex; justify-content: center; font: 700 2.2cqw/1 'Source Sans 3', sans-serif; letter-spacing: .3em; text-transform: uppercase; color: #e8d8ad; border-top: .25cqw solid rgba(232,216,173,.7); border-bottom: .25cqw solid rgba(232,216,173,.7); padding: 1.2cqw 0; }
.fbh-cover-foot { position: absolute; left: 7cqw; right: 7cqw; bottom: 8cqw; }
.fbh-cover-foot::before { content: ""; display: block; width: 16cqw; height: .8cqw; background: #b08d3c; margin-bottom: 3cqw; }
.fbh-cover-foot h2 { color: #fff; font: 900 8cqw/1.02 'Playfair Display', 'Noto Serif Tamil', serif; margin: 0 0 .25em; text-shadow: 0 2px 14px rgba(0,0,0,.6); }
.lang-ta .fbh-cover-foot h2 { font: 700 6.2cqw/1.3 'Noto Serif Tamil', serif; }
.fbh-cover-foot p { color: #f3e7cf; font: italic 3.4cqw/1.3 'Crimson Pro', 'Noto Serif Tamil', serif; margin: 0; }

/* back cover, blank */
.fbh-back { position: relative; overflow: hidden; color: #f3e7cf; background: #241710; }
.fbh-back-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: blur(.4cqw) saturate(.7); transform: scale(1.06); opacity: .38; }
.fbh-back-shade { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(36,23,16,.82) 0%, rgba(36,23,16,.6) 40%, rgba(36,23,16,.94) 100%); }
.fbh-back-in { position: absolute; inset: 0; display: flex; flex-direction: column; padding: 9cqw 8cqw 6cqw; text-align: center; }
.fbh-back-top { margin-bottom: 5cqw; }
.fbh-back .fbh-tau { width: 13cqw; height: auto; margin-bottom: 2.4cqw; filter: drop-shadow(0 .6cqw 1.6cqw rgba(0,0,0,.5)); }
.fbh-mast { font: 900 7.6cqw/1 'Playfair Display', serif; color: #fff; margin: 0 0 1.4cqw !important; letter-spacing: -.01em; }
.fbh-back-tag { font: italic 3.1cqw/1.3 'Crimson Pro', 'Noto Serif Tamil', serif; color: #e8d8ad; }
.lang-ta .fbh-back-tag { font: 2.6cqw/1.5 'Noto Serif Tamil', serif; }
.fbh-back-quote { margin: 0 auto 6cqw; max-width: 78%; padding: 4cqw 0; border-top: .25cqw solid rgba(232,216,173,.55); border-bottom: .25cqw solid rgba(232,216,173,.55); }
.fbh-back-quote span { display: block; font: italic 700 4.6cqw/1.3 'Playfair Display', serif; color: #fff; }
.lang-ta .fbh-back-quote span { font: 700 3.5cqw/1.6 'Noto Serif Tamil', serif; }
.fbh-back-quote cite { display: block; margin-top: 1.8cqw; font: 600 1.9cqw/1.3 'Source Sans 3', sans-serif; letter-spacing: .14em; text-transform: uppercase; color: #b08d3c; font-style: normal; }
.lang-ta .fbh-back-quote cite { letter-spacing: 0; text-transform: none; font-size: 2.1cqw; }
.fbh-back-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 3cqw; margin-bottom: 5cqw; }
.fbh-back-item { display: flex; flex-direction: column; align-items: center; gap: .8cqw; }
.fbh-back-item i { width: 9cqw; height: 9cqw; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 4cqw; color: #241710; background: #b08d3c; margin-bottom: .8cqw; }
.fbh-back-item b { font: 700 2.6cqw/1.2 'Playfair Display', 'Noto Serif Tamil', serif; color: #fff; }
.fbh-back-item span { font: 1.95cqw/1.4 'Source Sans 3', 'Noto Sans Tamil', sans-serif; color: #d9c8a8; }
.fbh-back-sub { margin-top: auto; background: #f6efe0; color: #241710; border-radius: 1.4cqw; padding: 3cqw 4cqw; display: flex; flex-direction: column; gap: .6cqw; }
.fbh-back-sub b { font: 900 3.4cqw/1.2 'Playfair Display', 'Noto Serif Tamil', serif; }
.lang-ta .fbh-back-sub b { font: 700 2.8cqw/1.5 'Noto Serif Tamil', serif; }
.fbh-back-sub span { font: 700 2.1cqw/1.2 'Source Sans 3', sans-serif; color: #9b2d20; letter-spacing: .04em; }
.fbh-back-foot { display: flex; justify-content: space-between; gap: 2cqw; margin-top: 3.4cqw; padding-top: 2cqw; border-top: .15cqw solid rgba(232,216,173,.35); font: 600 1.75cqw/1.3 'Source Sans 3', 'Noto Sans Tamil', sans-serif; color: #c9b896; letter-spacing: .06em; }
.fbh-blank { background: #fffdf8 url('../img/pattern.svg') center / 40% no-repeat; }

/* StPageFlip base styles. The library injects these as an inline <style>, which the site's Content-Security-Policy
 * (style-src 'self') blocks — without them pages render at 0×0 and the flipbook looks empty. Shipped here instead. */
.stf__parent { position: relative; display: block; box-sizing: border-box; transform: translateZ(0); touch-action: pan-y; }
.sft__wrapper, .stf__wrapper { position: relative; width: 100%; box-sizing: border-box; }
.stf__parent canvas { position: absolute; width: 100%; height: 100%; left: 0; top: 0; }
.stf__block { position: absolute; width: 100%; height: 100%; box-sizing: border-box; perspective: 2000px; }
.stf__item { display: none; position: absolute; transform-style: preserve-3d; }
.stf__outerShadow, .stf__innerShadow, .stf__hardShadow, .stf__hardInnerShadow { position: absolute; left: 0; top: 0; }
.fb-measure { position: fixed; left: -4000px; top: 0; visibility: hidden; }
.fb-measure .fb-leaf-html { width: 500px; height: 707px; }
.fb-book .fb-leaf-html .fbh-hero img, .fb-book .fb-leaf-html .fbh-cover-img, .fb-simple-html .fbh-hero img, .fb-simple-html .fbh-cover-img { object-fit: cover; height: 100%; width: 100%; }

/* ---------- 3D book presentation ---------- */
.fb-stage { perspective: 2400px; }
.fb-book { filter: drop-shadow(0 28px 34px rgba(0, 0, 0, .55)) drop-shadow(0 6px 10px rgba(0, 0, 0, .35)); }
.fb-book .stf__block { transform-style: preserve-3d; }
/* spine: darker toward the fold on both pages */
.fb-book .fb-leaf::after { content: ""; position: absolute; top: 0; bottom: 0; width: 14%; pointer-events: none; z-index: 5; }
.fb-book .fb-leaf.--left::after { right: 0; background: linear-gradient(90deg, rgba(0,0,0,0) 0%, rgba(60,35,15,.08) 55%, rgba(40,22,10,.28) 100%); }
.fb-book .fb-leaf.--right::after { left: 0; background: linear-gradient(270deg, rgba(0,0,0,0) 0%, rgba(60,35,15,.08) 55%, rgba(40,22,10,.28) 100%); }
.fb-book .fb-leaf.--hard::after { display: none; }
/* stacked paper edges */
.fb-book .fb-leaf.--left { box-shadow: -3px 1px 0 -1px #efe5cf, -6px 2px 0 -2px #e0d2b6, -9px 3px 0 -3px #cdbd9c; }
.fb-book .fb-leaf.--right { box-shadow: 3px 1px 0 -1px #efe5cf, 6px 2px 0 -2px #e0d2b6, 9px 3px 0 -3px #cdbd9c; }
/* paper grain */
.fb-edge { backdrop-filter: blur(4px); border: 1px solid rgba(255,255,255,.14); transition: background-color .2s ease, transform .2s ease; }
.fb-edge:hover { transform: translateY(-50%) scale(1.06); background: var(--vop-gold-500); color: #1e140d; }
.fb-progress { position: absolute; left: 0; right: 0; bottom: 0; height: 3px; background: rgba(255,255,255,.08); }
.fb-progress span { display: block; height: 100%; width: 0; background: linear-gradient(90deg, var(--vop-gold-600), var(--vop-gold-200)); transition: width .4s ease; }
.fb-toolbar { box-shadow: 0 6px 20px rgba(0,0,0,.25); }
.fb-toc { top: 66px; border: 1px solid var(--vop-gold-500); padding: 6px 6px 10px; }
.fb-toc-head { display: flex; justify-content: space-between; align-items: center; padding: 10px 12px 8px; border-bottom: 2px solid var(--vop-gold-500); margin-bottom: 4px; font-family: var(--vop-font-display); font-size: 1.3rem; font-weight: 700; color: var(--vop-brown-900); }
.fb-toc-head button { border: 0; background: none; font-size: 1.1rem; color: var(--vop-brown-600); cursor: pointer; }
.fb-toc .pg { font-weight: 700; color: var(--vop-gold-600); }
.fb-toc .is-locked .pg::after { content: " \F47B"; font-family: bootstrap-icons; font-size: .8em; }
.fb-hint { text-align: center; color: rgba(243, 231, 207, .6); font-size: .82rem; margin: 14px 0 0; font-family: var(--vop-font-body); }

/* ---------- Locked pages (subscribers only) ---------- */
.fbh-lock { position: relative; height: 100%; overflow: hidden; display: flex; align-items: center; justify-content: center; text-align: center;
  background: radial-gradient(circle at 50% 30%, #fff8ea 0%, #f1e6cf 60%, #e7d7b8 100%); }
.fbh-lock::before { content: ""; position: absolute; inset: 7cqw; border: .4cqw solid rgba(176, 141, 60, .45); outline: .2cqw solid rgba(176, 141, 60, .35); outline-offset: 1.4cqw; pointer-events: none; }
.fbh-lock-ghost { position: absolute; inset: 9cqw 10cqw; filter: blur(1.6cqw); opacity: .5; }
.fbh-lock-ghost i { display: block; height: 2.4cqw; border-radius: 2cqw; background: #b9a582; margin-bottom: 2.4cqw; }
.fbh-lock-ghost i:nth-child(3n) { width: 70%; } .fbh-lock-ghost i:nth-child(4n+1) { width: 90%; height: 4cqw; background: #9c8664; }
.fbh-lock-card { position: relative; z-index: 2; width: 74%; background: rgba(255, 253, 247, .94); border-radius: 3cqw; padding: 7cqw 6cqw; box-shadow: 0 2cqw 6cqw rgba(60, 35, 15, .25); }
.fbh-lock-icon { width: 15cqw; height: 15cqw; border-radius: 50%; margin: 0 auto 3cqw; display: flex; align-items: center; justify-content: center; font-size: 7cqw; color: #fff; background: linear-gradient(135deg, var(--vop-gold-500), var(--vop-brown-700)); }
.fbh-lock-card h3 { font-size: 1.35em; margin: 0 0 .3em; }
.fbh-lock-card p { font-size: .9em; color: var(--vop-ink-muted); }
.fbh-lock-title { font-family: var(--vop-font-display); font-style: italic; color: var(--vop-brown-700) !important; }
.fbh-lock-btn { display: inline-block; margin: .3em; padding: .55em 1.2em; border-radius: 999px; font-weight: 700; font-size: .85em; text-decoration: none; background: var(--vop-gold-500); color: var(--vop-brown-900); }
.fbh-lock-btn.alt { background: transparent; border: .3cqw solid var(--vop-brown-400); color: var(--vop-brown-700); }
.fbh-lock-n { position: absolute; bottom: 4cqw; left: 0; right: 0; font-size: .7em; color: var(--vop-brown-400); letter-spacing: .1em; }
.fb-locked-banner { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: .5rem 1rem; margin: 18px auto 0; max-width: 760px; padding: .8rem 1.2rem; border-radius: 999px; background: rgba(176, 141, 60, .16); border: 1px solid rgba(176, 141, 60, .5); color: #f3e7cf; font-family: var(--vop-font-body); font-size: .95rem; }
.fb-locked-banner .btn { padding: .35rem 1rem; }
.fb-toc .fb-toc-head button { width: auto; flex: none; padding: 4px 8px; display: inline-flex; }
.fbh-text .fbh-pad { padding-top: 11cqw; }
