/* FFM Reader. Uses the FFM Editorial tokens when present, with plain fallbacks for any theme. */
.ffm-toc, .ffm-share, .ffm-related { --r-ink: var(--ffm-ink, #0e0e0e); --r-line: var(--ffm-line, #e8e5df); --r-cream: var(--ffm-cream, #faf8f4); --r-accent: var(--ffm-accent, #ffcb00); --r-muted: var(--ffm-muted, #6f6f6f); --r-serif: var(--ffm-serif, Georgia, serif); }

/* progress bar */
.ffm-progress { position: fixed; left: 0; right: 0; top: 0; height: 3px; z-index: 99999; pointer-events: none; }
.admin-bar .ffm-progress { top: 32px; }
@media (max-width: 782px) { .admin-bar .ffm-progress { top: 46px; } }
.ffm-progress span { display: block; height: 100%; width: 100%; background: var(--ffm-accent, #ffcb00); transform: scaleX(0); transform-origin: 0 50%; }

/* contents box */
.ffm-toc { background: var(--r-cream); border: 1px solid var(--r-line); padding: 0; margin: 2em 0 2.4em; }
.ffm-toc summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 18px 22px; cursor: pointer; list-style: none; }
.ffm-toc summary::-webkit-details-marker { display: none; }
.ffm-toc summary span { font-size: .74rem; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: var(--r-ink); }
.ffm-toc summary small { font-size: .8rem; color: var(--r-muted); display: flex; align-items: center; gap: 10px; }
.ffm-toc summary small::after { content: ""; width: 8px; height: 8px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg) translateY(-3px); transition: transform .2s; }
.ffm-toc[open] summary small::after { transform: rotate(-135deg) translate(-2px, -1px); }
.ffm-toc ol, .ffm-toc ul { margin: 0; padding: 0 22px 18px 44px; columns: 2 240px; column-gap: 32px; font-size: .98rem; line-height: 1.5; }
.ffm-toc li { margin: 0 0 8px; break-inside: avoid; }
.ffm-toc .ffm-toc-plain { list-style: none; padding-left: 22px; }
.ffm-toc li::marker { color: var(--r-muted); font-size: .85em; }
.ffm-toc .ffm-toc-l3 { margin-left: 14px; font-size: .92em; list-style-type: circle; }
.entry-content .ffm-toc a, .ffm-toc a { color: var(--r-ink); text-decoration: none; background: none; }
.ffm-toc a:hover { text-decoration: underline; text-decoration-color: var(--r-accent); text-decoration-thickness: 2px; text-underline-offset: 3px; }

/* Pinterest Save on pictures */
.ffm-pin-wrap { position: relative; display: block; }
.ffm-pin-btn { position: absolute; top: 12px; left: 12px; z-index: 2; display: inline-flex; align-items: center; gap: 6px; padding: 8px 14px 8px 10px; border-radius: 999px; background: #e60023; color: #fff !important; font: 600 13px/1 var(--ffm-sans, system-ui, sans-serif); text-decoration: none !important; opacity: 0; transform: translateY(-4px); transition: opacity .2s, transform .2s; box-shadow: 0 6px 16px -6px rgba(0, 0, 0, .45); }
.ffm-pin-btn svg { width: 16px; height: 16px; }
.ffm-pin-wrap:hover .ffm-pin-btn, .ffm-pin-btn:focus-visible { opacity: 1; transform: none; }
@media (hover: none) { .ffm-pin-btn { opacity: .92; transform: none; padding: 7px; } .ffm-pin-btn span { display: none; } }

/* share bar */
.ffm-share { margin: 3em 0 0; padding: 26px 0 0; border-top: 1px solid var(--r-line); }
.ffm-share-title { font-size: .72rem; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: var(--r-ink); margin: 0 0 14px; }
.ffm-share-links { display: flex; flex-wrap: wrap; gap: 8px; }
.ffm-share-links a, .ffm-share-links button { display: inline-flex; align-items: center; gap: 8px; padding: 10px 16px; border: 1px solid var(--r-line); background: #fff; color: var(--r-ink); font: 500 .88rem/1 var(--ffm-sans, system-ui, sans-serif); cursor: pointer; text-decoration: none; transition: .18s; }
.ffm-share-links a:hover, .ffm-share-links button:hover { border-color: var(--r-ink); }
.ffm-share-links .ffm-share-pinterest { background: #e60023; color: #fff; border-color: #e60023; }
.ffm-share-links .ffm-share-pinterest:hover { background: #c4001d; border-color: #c4001d; }
@media (max-width: 520px) { .ffm-share-links a span, .ffm-share-links button span { display: none; } .ffm-share-links .ffm-share-pinterest span { display: inline; } .ffm-share-links a, .ffm-share-links button { padding: 11px 13px; } }

/* related, for themes other than FFM Editorial */
.ffm-related:not(.wrap) { margin: 3em 0 0; }
.ffm-related-title { font-family: var(--r-serif); font-weight: 400; font-size: 1.7rem; margin: 0 0 18px; }
.ffm-related-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 22px; }
.ffm-related-item a { display: block; color: var(--r-ink); text-decoration: none; }
.ffm-related-item img { width: 100%; aspect-ratio: 2 / 3; object-fit: cover; margin-bottom: 10px; }
.ffm-related-item span { font-family: var(--r-serif); font-size: 1.05rem; line-height: 1.3; }

/* back to top */
.ffm-top { position: fixed; right: 18px; bottom: 18px; z-index: 50; width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--ffm-line, #e8e5df); background: #fff; color: var(--ffm-ink, #0e0e0e); display: grid; place-items: center; cursor: pointer; opacity: 0; pointer-events: none; transform: translateY(8px); transition: .25s; box-shadow: 0 10px 24px -14px rgba(0, 0, 0, .4); }
.ffm-top.is-on { opacity: 1; pointer-events: auto; transform: none; }
