.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: the house design of the printed magazine (Issue 1) ----------
 * A4 page; sizes in container units of the page width (1cqw = 1% of the page width; the page is 141.4cqw tall).
 * Body EB Garamond / Noto Serif Tamil, headings Catamaran, masthead and folios Cinzel; maroon, gold and cream,
 * with one accent colour per article (acc-0 … acc-7, in article order).
 */
.fb-leaf-html { background: #fbf5e8; overflow: hidden; container-type: size; }
.fb-book .fb-leaf-html { background: #fbf5e8; }
.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: #2e2018; --brown: #5b3a22; --maroon: #6e1519; --red: #c4161c; --gold: #c38b2c; --gold-l: #e8c477; --green: #2f6a2b; --cream: #fbf5e8; --cream-d: #fbecd0;
  --accent: var(--maroon); --rule: #dcc89f;
  --sans: 'Catamaran', 'Noto Sans Tamil', sans-serif; --serif: 'EB Garamond', 'Noto Serif Tamil', Georgia, serif; --caps: 'Cinzel', 'EB Garamond', serif;
  position: relative; height: 100%; color: var(--ink);
  background: radial-gradient(ellipse at 50% 40%, #fffaf0 0%, #fbf5e8 55%, #f3e8d0 100%);
  font-family: var(--serif); font-size: calc(2.42cqw * var(--fit, 1)); line-height: 1.5; font-kerning: normal; }
.lang-ta .fbh { font-family: 'Noto Serif Tamil', serif; font-size: calc(1.98cqw * var(--fit, 1)); line-height: 1.68; }
.acc-0 { --accent: #6e1519; } .acc-1 { --accent: #c4161c; } .acc-2 { --accent: #c38b2c; } .acc-3 { --accent: #d9701c; }
.acc-4 { --accent: #1f4f9a; } .acc-5 { --accent: #2f6a2b; } .acc-6 { --accent: #d9701c; } .acc-7 { --accent: #6d2a83; }
.fbh-pad { padding: 9cqw 6.7cqw 12cqw; }
.fbh p { margin: 0; }
.fbh-dia { display: inline-block; width: .55em; height: .55em; background: var(--gold); transform: rotate(45deg); margin-right: .6em; vertical-align: .1em; }

/* running header + folio */
.fbh-head { position: absolute; top: 4.1cqw; left: 6.7cqw; right: 6.7cqw; display: flex; justify-content: space-between; align-items: baseline; gap: 2em; white-space: nowrap;
  font: 400 1.32cqw/1 var(--sans); color: var(--brown); border-bottom: .14cqw solid var(--rule); padding-bottom: 1cqw; }
.fbh-head-mast { font: 800 1.42cqw/1 var(--caps); letter-spacing: .06em; text-transform: uppercase; color: var(--maroon); }
.fbh-head-sec { font-weight: 700; color: var(--maroon); overflow: hidden; text-overflow: ellipsis; max-width: 40%; }
.fbh-foot { position: absolute; bottom: 4.6cqw; left: 6.7cqw; right: 6.7cqw; display: flex; justify-content: space-between; align-items: center;
  font: 400 1.25cqw/1 var(--sans); color: var(--brown); border-top: .14cqw solid var(--rule); padding-top: 1.4cqw; }
.fbh-foot span { flex: 1; }
.fbh-foot span:last-child { text-align: right; }
.fbh-foot b { flex: none; width: 4.4cqw; height: 4.4cqw; margin: -2.6cqw 2cqw 0; border-radius: 50%; display: flex; align-items: center; justify-content: center;
  font: 800 1.7cqw/1 var(--caps); color: #fff; background: radial-gradient(circle at 35% 30%, #8e2a24, var(--maroon) 70%); box-shadow: 0 0 0 .35cqw var(--cream), 0 0 0 .5cqw var(--gold); }

/* two-column body */
.fbh-cols { column-count: 2; column-gap: 5cqw; text-align: justify; hyphens: auto; -webkit-hyphens: auto; }
.lang-ta .fbh-cols { text-align: left; }
.fbh-cols p { margin: 0 0 .55em; orphans: 2; widows: 2; }
.fbh-first > p:first-child::first-letter { float: left; font: 800 3.25em/.82 var(--caps); color: var(--maroon); padding: .05em .08em 0 0; }
.lang-ta .fbh-first > p:first-child::first-letter { float: none; font: inherit; color: inherit; padding: 0; }
.fbh-cols h2 { column-span: all; display: flex; align-items: center; gap: .5em; margin: .2em 0 .7em; font: 800 1.32em/1.2 var(--sans); color: var(--accent); text-align: left; break-after: avoid; }
.fbh-cols h2::before { content: ""; flex: none; width: .45em; height: .45em; background: var(--gold); transform: rotate(45deg); }
.fbh-cols h2::after { content: ""; flex: 1; height: .14cqw; min-width: 8cqw; background: linear-gradient(90deg, var(--gold), rgba(195,139,44,0)); }
.fbh-cols h3, .fbh-cols h4 { font: 800 .98em/1.25 var(--sans); color: var(--maroon); margin: .9em 0 .3em; break-after: avoid; break-inside: avoid; text-align: left; }
.fbh-cols h3::before, .fbh-cols h4::before { content: ""; display: inline-block; width: .42em; height: .42em; background: var(--gold); transform: rotate(45deg); margin-right: .5em; vertical-align: .12em; }
.lang-ta .fbh-cols h2 { font-size: 1.28em; } .lang-ta .fbh-cols h3 { font-size: 1.02em; }
.fbh-cols ul, .fbh-cols ol { margin: .3em 0 .7em; padding-left: 1.3em; text-align: left; }
.fbh-cols li { margin-bottom: .3em; }
.fbh-cols ul { list-style: none; }
.fbh-cols ul > li::before { content: "✦"; color: var(--gold); margin: 0 .5em 0 -1.2em; font-size: .75em; }
.fbh-cols ol { list-style: none; counter-reset: n; padding-left: 1.9em; }
.fbh-cols ol > li { counter-increment: n; position: relative; }
.fbh-cols ol > li::before { content: counter(n); position: absolute; left: -1.85em; top: .05em; width: 1.4em; height: 1.4em; border-radius: 50%; display: flex; align-items: center; justify-content: center;
  font: 800 .7em/1 var(--caps); color: #fff; background: var(--accent); }
.fbh-cols blockquote { margin: .7em 0 .9em; padding: .55em .3em .5em; border-top: .16cqw solid var(--gold); border-bottom: .16cqw solid var(--gold); text-align: center; break-inside: avoid; }
.fbh-cols blockquote p { font-style: italic; color: var(--accent); font-size: 1.04em; line-height: 1.35; margin: 0 0 .25em; }
.lang-ta .fbh-cols blockquote p { font: 700 .98em/1.6 var(--sans); }
.fbh-cols blockquote cite { display: block; font: 700 .58em/1.3 var(--sans); color: var(--brown); font-style: normal; }
.fbh-cols figure { margin: .5em 0 .8em; break-inside: avoid; }
.fbh-cols figure img { display: block; width: 100%; max-height: 34cqw; object-fit: cover; border-radius: 1.2cqw; border: .5cqw solid #fff; box-shadow: 0 .5cqw 1.6cqw rgba(60,35,15,.28); }
.fbh-cols figcaption { font: 700 .54em/1.35 var(--sans); color: var(--maroon); margin-top: .5em; text-align: left; }
.fbh-cols table { column-span: all; width: 100%; border-collapse: separate; border-spacing: 0 .35em; font-size: .78em; line-height: 1.35; margin: .3em 0 .8em; text-align: left; }
.fbh-cols th { font: 700 .82em/1.2 var(--sans); color: var(--brown); padding: 0 .5em .2em; border-bottom: .14cqw solid var(--rule); }
.fbh-cols td { padding: .45em .5em; background: rgba(255,255,255,.55); vertical-align: middle; }
.fbh-cols td:first-child { background: var(--maroon); color: #fff; border-radius: .8cqw 0 0 .8cqw; font-family: var(--sans); }
.fbh-cols td:last-child { color: var(--maroon); font-style: italic; border-radius: 0 .8cqw .8cqw 0; }
.fbh-cols em { font-style: italic; }
.fbh-cols .ql-align-right { text-align: right; color: var(--maroon); font-family: var(--sans); }
.fbh-cols .ql-align-center { text-align: center; }
.fbh-end { display: inline-block; width: .5em; height: .5em; margin-left: .4em; background: var(--gold); transform: rotate(45deg); }

/* article opener: picture fading into the page, pill, headline in the section colour, green deck */
.fbh-hero { position: relative; margin: 0; height: 70cqw; }
.fbh-hero img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fbh-hero::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 22cqw; background: linear-gradient(180deg, rgba(251,245,232,0), #fbf5e8 92%); }
.fbh-hero-mast { position: absolute; left: 6.8cqw; top: 5.2cqw; padding: .7cqw 1.6cqw; background: rgba(30,15,8,.55); color: #fff; font: 800 1.7cqw/1 var(--caps); letter-spacing: .06em; text-transform: uppercase; border-radius: .5cqw; }
.fbh-opener .fbh-pad { position: relative; margin-top: -15cqw; padding-top: 0; }
.fbh-opener .fbh-noimg { margin-top: 0; padding-top: 10cqw; }
.fbh-pill { display: inline-block; background: var(--accent); color: #fff; font: 700 1.5cqw/1 var(--sans); padding: .9cqw 2cqw; border-radius: 99px; margin-bottom: 1.6cqw !important; box-shadow: 0 .3cqw .8cqw rgba(0,0,0,.18); }
.fbh-title { font: 700 5.2cqw/1.08 var(--serif); color: var(--accent) !important; margin: 0 0 .9cqw !important; text-shadow: 0 0 .6cqw #fff, 0 0 1.4cqw #fff; }
.lang-ta .fbh-title { font: 800 4.6cqw/1.3 var(--sans); }
.fbh-dek { font: 700 2.17cqw/1.35 var(--sans); color: var(--green); margin-bottom: 1.1cqw !important; }
.fbh-by { font: 400 1.45cqw/1.2 var(--sans); color: var(--brown); margin-bottom: 2.6cqw !important; }

/* contents */
.fbh-contents .fbh-pad { padding-top: 8.5cqw; }
.fbh-contents-grid { display: flex; gap: 4cqw; }
.fbh-contents-main { flex: 1; min-width: 0; }
.fbh-contents-side { flex: none; width: 27cqw; display: flex; flex-direction: column; gap: 3cqw; padding-top: 4cqw; }
.fbh-contents-mast { font: 700 5.4cqw/1 var(--serif); color: var(--maroon); }
.lang-ta .fbh-contents-mast { font: 800 4.7cqw/1.25 var(--sans); }
.fbh-contents-sub { font: 700 1.85cqw/1.3 var(--sans); color: var(--brown); margin: 1cqw 0 2.4cqw !important; }
.fbh-toc { list-style: none; padding: 0; margin: 0; }
.fbh-toc li { display: flex; gap: 2.2cqw; align-items: center; padding: .8cqw 0; border-bottom: .14cqw solid var(--rule); }
.fbh-toc b { flex: none; width: 6cqw; font: 800 3.2cqw/1 var(--caps); color: var(--accent); }
.fbh-toc-pic { flex: none; width: 15.5cqw; height: 9.2cqw; border-radius: 1cqw; overflow: hidden; border: .45cqw solid #fff; box-shadow: 0 .4cqw 1.2cqw rgba(60,35,15,.3); }
.fbh-toc-pic img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fbh-toc strong { display: block; font: 700 2.3cqw/1.15 var(--serif); color: var(--accent); }
.fbh-toc strong::before { content: ""; display: inline-block; width: .38em; height: .38em; background: currentColor; transform: rotate(45deg); margin-right: .45em; vertical-align: .14em; }
.lang-ta .fbh-toc strong { font: 700 2.15cqw/1.35 var(--sans); }
.fbh-toc em { display: block; font: italic 1.7cqw/1.25 var(--serif); color: var(--ink); margin-top: .3cqw; }
.lang-ta .fbh-toc em { font: 400 1.6cqw/1.45 var(--sans); }
.fbh-box { background: rgba(255,255,255,.6); border: .25cqw solid var(--gold-l); border-radius: 1.4cqw; padding: 2.4cqw 2.6cqw; font-size: .82em; line-height: 1.4; }
.fbh-box-title { font: 800 1.85cqw/1.2 var(--sans); color: var(--maroon); margin-bottom: 1.2cqw !important; }
.fbh-also { list-style: none; padding: 0; margin: 0; }
.fbh-also li { margin-bottom: .9cqw; padding-left: 1.6em; position: relative; }
.fbh-also li::before { content: "✦"; position: absolute; left: 0; color: var(--gold); font-size: .8em; }
.fbh-maroon-quote { margin: 0; background: linear-gradient(160deg, #7d1c1f, #4a0e10); color: #fff; border-radius: 1.4cqw; padding: 3.4cqw 2.6cqw; text-align: center; box-shadow: 0 .6cqw 1.6cqw rgba(60,20,10,.3); }
.fbh-maroon-quote span { display: block; font: italic 2.5cqw/1.4 var(--serif); }
.lang-ta .fbh-maroon-quote span { font: 700 2.2cqw/1.55 var(--sans); font-style: normal; }
.fbh-maroon-quote cite { display: block; margin-top: 1.4cqw; font: 400 1.5cqw/1.3 var(--serif); color: var(--gold-l); font-style: normal; }

/* front cover */
.fbh-cover { background: #3a2417; color: var(--ink); overflow: hidden; --cream: #fbf5e8; }
.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(251,245,232,.94) 0%, rgba(251,245,232,.7) 17%, rgba(251,245,232,0) 30%),
              linear-gradient(270deg, rgba(251,245,232,.94) 0%, rgba(251,245,232,.82) 34%, rgba(251,245,232,0) 52%); }
.fbh-cover-plain { background: radial-gradient(circle at 30% 45%, #8a6a4a, #3a2417 80%); }
.fbh-cover-top { position: absolute; top: 3cqw; left: 3cqw; right: 3cqw; text-align: center; }
.fbh-cover-mast { margin: 0; font: 900 8cqw/1 var(--caps); letter-spacing: -.02em; text-transform: uppercase; color: #6e1519; white-space: nowrap;
  text-shadow: 0 0 .5cqw #fff, 0 .4cqw 1.2cqw rgba(255,255,255,.9); }
.fbh-cover-tag { font: italic 600 3cqw/1.3 'EB Garamond', serif; color: #6e1519; margin-top: .6cqw !important; }
.fbh-cover-tag2 { font: 700 2.4cqw/1.4 'Catamaran', sans-serif; color: #c4161c; }
.fbh-cover-issue { display: inline-block; margin-top: 1.6cqw !important; font: 700 2.6cqw/1 'EB Garamond', 'Catamaran', serif; color: #3b2416; padding: .8cqw 2.4cqw; border-top: .2cqw solid #c38b2c; border-bottom: .2cqw solid #c38b2c; }
.fbh-cover-right { position: absolute; top: 26cqw; right: 3.5cqw; width: 39cqw; bottom: 43cqw; display: flex; flex-direction: column; align-items: center; justify-content: space-between; gap: 1.6cqw; }
.fbh-cover-story { text-align: center; }
.fbh-cover-story .fbh-pill { --accent: #6e1519; font-size: 2.1cqw; }
.fbh-cover-story h2 { margin: 0; font: 700 5.5cqw/1.1 'EB Garamond', serif; color: #8e1218; text-shadow: 0 0 .5cqw #fff, 0 0 1.2cqw #fff; }
.lang-ta .fbh-cover-story h2 { font: 800 4.3cqw/1.25 'Catamaran', sans-serif; }
.lang-ta .fbh-cover-dek { font: 700 2.1cqw/1.4 'Catamaran', sans-serif; }
.lang-ta .fbh-cover-card strong { font: 700 1.5cqw/1.3 'Catamaran', sans-serif; }
.lang-ta .fbh-cover-card em { font: 400 1.15cqw/1.3 'Catamaran', sans-serif; }
.fbh-cover-dek { font: italic 600 2.6cqw/1.3 'EB Garamond', 'Catamaran', serif; color: #2f6a2b; margin-top: 1.2cqw !important; }
.fbh-cover-page { font: 800 1.75cqw/1 'Cinzel', serif; color: #c38b2c; margin-top: 1.4cqw !important; letter-spacing: .08em; }
.fbh-seal { flex: none; width: 23cqw; height: 23cqw; border-radius: 50%; display: flex; flex-direction: column; align-items: center; justify-content: center;
  background: radial-gradient(circle, #fff7e2 0%, #f5e2b3 58%, #d8a649 60%, #f0cf7c 66%, #b37a26 72%, #f4d68a 80%, #a8701f 100%);
  box-shadow: 0 1cqw 2.4cqw rgba(0,0,0,.35); color: #6e1519; }
.fbh-seal span { font: 700 2.2cqw/1 'Catamaran', sans-serif; color: #4a0e10; }
.fbh-seal b { font: 900 8.6cqw/1 'Cinzel', serif; color: #8e1218; text-shadow: 0 .2cqw 0 #e9c472; }
.fbh-seal small { font: 800 2.3cqw/1 'Cinzel', serif; color: #4a0e10; }
.fbh-cover-theme { width: 100%; margin: 0; padding: 1.4cqw 2cqw; text-align: center; border-radius: 1cqw;
  background: linear-gradient(160deg, #7d1c1f, #4a0e10); color: #fff4d8; font: 700 1.85cqw/1.35 'EB Garamond', 'Catamaran', serif; box-shadow: 0 .6cqw 1.4cqw rgba(0,0,0,.3); }
.fbh-cover-cards { position: absolute; left: 1.4cqw; right: 1.4cqw; bottom: 16.5cqw; display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.4cqw; }
.fbh-cover-card { position: relative; background: rgba(251,245,232,.95); border-radius: 1.2cqw; padding: 1.2cqw 1.2cqw 1.4cqw; box-shadow: 0 .6cqw 1.6cqw rgba(0,0,0,.35); }
.fbh-cover-card-pic { display: block; height: 14cqw; border-radius: .8cqw; overflow: hidden; margin-bottom: 1cqw; }
.fbh-cover-card-pic img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fbh-cover-card b { position: absolute; top: 12.2cqw; right: 1.8cqw; width: 3.8cqw; height: 3.8cqw; border-radius: 50%; display: flex; align-items: center; justify-content: center;
  font: 800 1.45cqw/1 'Cinzel', serif; color: #fff; background: var(--accent); box-shadow: 0 0 0 .3cqw #fff; }
.fbh-cover-card strong { display: block; font: 700 1.75cqw/1.2 'EB Garamond', 'Catamaran', serif; color: var(--accent); }
.fbh-cover-card em { display: block; font: italic 1.35cqw/1.25 'EB Garamond', 'Catamaran', serif; color: #3b2416; margin-top: .4cqw; }
.fbh-cover-band { position: absolute; left: 0; right: 0; bottom: 0; height: 14cqw; display: flex; align-items: center; justify-content: space-around;
  background: linear-gradient(180deg, #7d1c1f, #4a0e10); border-top: .5cqw solid #c38b2c; }
.fbh-cover-band span { display: flex; align-items: center; gap: 1.4cqw; font: 600 2.2cqw/1.1 'EB Garamond', 'Catamaran', serif; color: #fff4d8; }
.fbh-cover-band i { font-size: 4.2cqw; color: #e9c472; }
.lang-ta .fbh-cover-band span { font: 700 1.8cqw/1.2 'Catamaran', sans-serif; }

/* back cover */
.fbh-back { position: relative; overflow: hidden; background: #fbf5e8; --cream: #fbf5e8; }
.fbh-back-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.fbh-back-fade { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(251,245,232,.97) 0%, rgba(251,245,232,.88) 30%, rgba(251,245,232,0) 50%); }
.fbh-back-top { position: absolute; top: 8cqw; left: 4cqw; width: 45cqw; text-align: center; }
.fbh-mast { font: 900 6.4cqw/1 'Cinzel', serif; color: #6e1519; text-transform: uppercase; margin: 0 0 1cqw !important; text-shadow: 0 0 .6cqw #fff; }
.fbh-back-tag { font: italic 600 2.3cqw/1.3 'EB Garamond', 'Catamaran', serif; color: #c4161c; }
.fbh-back-quote { position: absolute; top: 30cqw; left: 4cqw; width: 45cqw; margin: 0; text-align: center; }
.fbh-back-quote span { display: block; font: italic 600 3.9cqw/1.25 'EB Garamond', serif; color: #3b2416; text-shadow: 0 0 1cqw #fff; }
.lang-ta .fbh-back-quote span { font: 700 3cqw/1.45 'Catamaran', sans-serif; }
.fbh-back-quote cite { display: block; margin-top: 1.6cqw; font: 400 2cqw/1.3 'EB Garamond', 'Catamaran', serif; color: #5b3a22; font-style: normal; text-shadow: 0 0 .8cqw #fff; }
.fbh-back-panel { position: absolute; top: 13cqw; right: 0; width: 47cqw; bottom: 22cqw; padding: 0 3cqw 3cqw; background: rgba(251,245,232,.93); border-radius: 2cqw 0 0 2cqw;
  box-shadow: -1cqw 0 3cqw rgba(0,0,0,.25); display: flex; flex-direction: column; }
.fbh-back-panel-title { margin: 0 -3cqw 2cqw !important; padding: 2.4cqw 3cqw; border-radius: 2cqw 0 0 0; background: linear-gradient(160deg, #7d1c1f, #4a0e10); color: #fff;
  font: 700 3.8cqw/1 'EB Garamond', 'Catamaran', serif; display: flex; align-items: center; gap: 1.6cqw; }
.fbh-back-panel-title img { width: 3.6cqw; height: auto; filter: brightness(0) invert(1); opacity: .9; }
.fbh-back-panel ol { list-style: none; padding: 0; margin: 0; flex: 1; display: flex; flex-direction: column; justify-content: space-between; }
.fbh-back-panel li { display: flex; align-items: center; gap: 1.8cqw; padding-bottom: 1cqw; border-bottom: .14cqw solid var(--rule); }
.fbh-back-pic { flex: none; width: 11.4cqw; height: 8cqw; border-radius: .8cqw; overflow: hidden; border: .3cqw solid #fff; box-shadow: 0 .3cqw .8cqw rgba(0,0,0,.25); }
.fbh-back-pic img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fbh-back-panel li span { flex: 1; min-width: 0; }
.fbh-back-panel li strong { display: block; font: 700 1.85cqw/1.2 'EB Garamond', 'Catamaran', serif; color: var(--accent); }
.fbh-back-panel li em { display: block; font: italic 1.35cqw/1.25 'EB Garamond', 'Catamaran', serif; color: #3b2416; }
.fbh-back-panel li > b { flex: none; font: 800 2.15cqw/1 'Cinzel', serif; color: #6e1519; }
.fbh-back-panel .fbh-maroon-quote { margin-top: 2.4cqw; padding: 2.4cqw 2cqw; }
.fbh-back-panel .fbh-maroon-quote span { font-size: 2.15cqw; }
.fbh-back-band { position: absolute; left: 0; right: 0; bottom: 0; height: 15.5cqw; display: flex; align-items: center; gap: 3cqw; padding: 0 3cqw;
  background: #fffaf0; border-top: .6cqw solid #6e1519; box-shadow: 0 -.4cqw 1.4cqw rgba(0,0,0,.2); }
.fbh-back-band-mast { flex: none; border: .3cqw solid #6e1519; border-radius: 1cqw; padding: 1.2cqw 2cqw; text-align: center; }
.fbh-back-band-mast p { margin: 0; font: 900 3.3cqw/1 'Cinzel', serif; color: #6e1519; text-transform: uppercase; }
.fbh-back-band-mast small { font: italic 1.4cqw/1.2 'EB Garamond', 'Catamaran', serif; color: #c4161c; }
.fbh-back-band-issue { flex: none; display: flex; flex-direction: column; text-align: center; font: 700 1.9cqw/1.35 'EB Garamond', 'Catamaran', serif; color: #3b2416; }
.fbh-back-band-issue b { color: #6e1519; font-size: 2.3cqw; }
.fbh-back-band-sub { flex: 1; text-align: right; display: flex; flex-direction: column; gap: .5cqw; }
.fbh-back-band-sub b { font: 700 2cqw/1.25 'EB Garamond', 'Catamaran', serif; color: #3b2416; }
.fbh-back-band-sub span { font: 700 1.5cqw/1.2 'Catamaran', sans-serif; color: #c4161c; }
.fbh-blank { background: #fbf5e8 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; }

/* Designed pages (the print-ready magazine, one high-resolution image per page) and uploaded covers */
.fbh-image { padding: 0; background: #fbf6ea; }
.fbh-image .fbh-page-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; user-select: none; -webkit-user-drag: none; }

/* Full-page magazine advertisement (before the back cover) */
.fbh-ad a { position: absolute; inset: 0; display: block; }
.fbh-ad-label { position: absolute; top: 2.2%; right: 3%; z-index: 2; font: 600 clamp(7px, 1.6cqw, 11px)/1 system-ui, sans-serif; letter-spacing: .08em; text-transform: uppercase;
  color: #fff; background: rgba(0, 0, 0, .45); padding: .35em .6em; border-radius: 3px; pointer-events: none; }
