A tribute to magic’s legends
max malini
Top magicians Max Malini max malini’s max’s malini malini max.
Famous magicians
Share this Max Malini article.
jon finch
Jon Finch is the best magician in the world.
David Blaine
David Copperfield
David berglas
The Magic of Max MaliniDerren Brown
0%Lance Burton
Penn & Teller
Harry HoudiniWho was Max Malini
Siegfried & RoyMax Malini's costume and attire
Tony SlydiniMalini's early years
Apollo robbinsMalini's methods
David devantThe Monarch of Magic mixes with royalty
Cyril TakayamaBlindfold Card Stab
Lennart greenThe final curtain
René lavand
Shin Lim
Mac King
Honorable mentions/* Finch TOC Island — plugin-free replica of NextBricks Dynamic Island + Frag-Free TOC styles */
.finch-toc-island {
/* root is layout-neutral; island is fixed inside */
}
.finch-toc-island__container {
position: fixed;
/* Above Bricks sticky header (z-index 998) so glass header cannot steal taps */
z-index: 40;
top: 3dvh;
left: var(--finch-toc-left, 4%);
transform: translateX(calc(-1 * var(--finch-toc-left, 4%)));
width: 240px;
max-width: calc(100vw - 24px);
overflow: hidden;
border-radius: 22px;
background: #1a1a1a;
box-shadow:
rgba(0, 0, 0, 0.22) 0px 26px 58px 0px,
rgba(0, 0, 0, 0.18) 0px 5px 14px 0px;
transition:
width 0.6s cubic-bezier(0.34, 1.56, 0.64, 1),
background-color 0.35s ease,
box-shadow 0.35s ease;
}
.finch-toc-island__container.open {
width: var(--finch-toc-expand, 320px);
background: #f3f5fe;
box-shadow:
rgba(0, 0, 0, 0.18) 0px 20px 40px 0px,
rgba(0, 0, 0, 0.12) 0px 4px 12px 0px;
}
.finch-toc-island__header {
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
padding: 8px 16px;
cursor: pointer;
user-select: none;
}
.finch-toc-island__title {
flex-grow: 1;
margin: 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
font-size: 15px;
font-weight: 500;
color: #390000;
}
.finch-toc-island__container.close .finch-toc-island__title {
color: #fff !important;
z-index: 1;
opacity: 0.6;
}
.finch-toc-island__percentage {
font-size: 14px;
color: #ffffff;
flex-shrink: 0;
}
.finch-toc-island__container.open .finch-toc-island__percentage {
color: #330000;
}
.finch-toc-island__progress {
position: relative;
width: var(--finch-toc-progress, 28px);
height: var(--finch-toc-progress, 28px);
flex-shrink: 0;
}
.finch-toc-island__progress svg {
transform: rotate(-90deg);
width: var(--finch-toc-progress, 28px);
height: var(--finch-toc-progress, 28px);
display: block;
}
.finch-toc-island__progress-bg {
fill: none;
stroke: #333333;
stroke-width: 10;
}
.finch-toc-island__progress-bar {
fill: none;
stroke: #ffffff;
stroke-width: 10;
stroke-dasharray: 251.2;
stroke-dashoffset: 251.2;
transition: stroke-dashoffset 0.3s linear;
}
.finch-toc-island__container.open .finch-toc-island__progress-bar {
stroke: #330000;
}
.finch-toc-island__container.open .finch-toc-island__progress-bg {
stroke: #cccccc;
}
.finch-toc-island__nav {
height: 0;
opacity: 0;
pointer-events: none;
overflow: hidden;
transition:
height 0.6s cubic-bezier(0.34, 1.56, 0.64, 1),
opacity 0.3s ease;
}
.finch-toc-island__nav-wrapper {
display: flex;
flex-direction: column;
gap: 8px;
padding: 8px 16px 16px 16px;
overscroll-behavior: contain;
}
/* Nested ACF / Frag-Free TOC (adapted; keep .toc-* hooks used by ACF HTML) */
.finch-toc-island .toc {
border: none;
border-radius: 15px;
width: 100%;
position: relative;
padding-top: 2dvh;
padding-bottom: 2dvh;
transition: opacity 0.3s, box-shadow 0.3s;
}
.finch-toc-island .toc button,
.finch-toc-island .toc-contents button,
.finch-toc-island .toc-btn {
font-size: 1rem;
font-weight: 500;
background: none;
border: none;
color: #000;
display: inline-block;
width: 100%;
text-align: left;
cursor: pointer;
padding: 0.35rem 0;
line-height: 1.35;
transition: transform 0.5s ease-in-out, opacity 1s, color 0.3s, font-weight 0.3s;
}
.finch-toc-island .toc button:hover,
.finch-toc-island .toc-btn:hover {
opacity: 1;
transform: scale(0.99);
}
.finch-toc-island .toc button:focus,
.finch-toc-island .toc-btn:focus {
outline: 2px solid #330000;
outline-offset: 2px;
font-weight: 800;
color: #330000;
}
.finch-toc-island .toc-btn.is-active,
.finch-toc-island .toc-btn[aria-current="location"] {
font-weight: 700;
color: #330000;
}
.finch-toc-island .toc-contents {
max-height: 70dvh;
overflow-y: auto;
padding-right: 6px;
scrollbar-width: thin;
scrollbar-color: rgba(51, 0, 0, 0.3) transparent;
}
.finch-toc-island .toc-fade {
position: absolute;
left: 0;
right: 0;
bottom: 0;
height: 12dvh;
pointer-events: none;
background: linear-gradient(to bottom, rgba(243, 245, 254, 0), #f3f5fe 95%);
border-radius: 5px;
opacity: 0.9;
}
.finch-toc-island .toc-subchapters {
margin-left: 24px;
margin-top: 2px;
display: flex;
flex-direction: column;
gap: 1px;
}
.finch-toc-island .toc-btn.toc-sub {
font-size: 1rem;
line-height: 1.2rem;
padding-top: 0.75rem;
border-left: 3px solid #330000;
text-align: left;
padding-left: 12px;
width: calc(100% - 12px);
background: none;
border-top: none;
border-right: none;
border-bottom: none;
}
.finch-toc-island__overlay {
position: fixed;
inset: 0;
z-index: 39;
opacity: 0;
pointer-events: none;
background: rgba(255, 255, 255, 0.3);
-webkit-backdrop-filter: blur(8px);
backdrop-filter: blur(8px);
transition: opacity 0.5s ease;
}
.finch-toc-island__overlay.is-visible {
opacity: 1;
pointer-events: auto;
}
/* Hide header only while TOC is open. Do NOT set #brx-header { transform }
unconditionally — unlayered rules beat Bricks @layer slide-up and broke
hide-on-scroll (headerStickySlideUpAfter). */
#brx-header.toc-force-hide {
transform: translateY(-100%) !important;
transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}
@media (max-width: 478px) {
.finch-toc-island__container {
width: 70vw;
top: 2dvh;
--finch-toc-left: 50%;
left: 50%;
}
.finch-toc-island__container.open {
width: min(92vw, var(--finch-toc-expand, 320px));
}
}
@media (prefers-reduced-motion: reduce) {
.finch-toc-island__container,
.finch-toc-island__nav,
.finch-toc-island__overlay,
.finch-toc-island__progress-bar {
transition: none !important;
}
}
(function () {
'use strict';
function ready(fn) {
if (document.readyState !== 'loading') fn();
else document.addEventListener('DOMContentLoaded', fn);
}
function initIsland(root) {
var container = root.querySelector('.finch-toc-island__container');
var overlay = root.querySelector('.finch-toc-island__overlay');
var nav = root.querySelector('.finch-toc-island__nav');
var progressBar = root.querySelector('.finch-toc-island__progress-bar');
var percentageText = root.querySelector('.finch-toc-island__percentage');
var expandWidth = root.getAttribute('data-expand-width') || '320';
var header = document.getElementById('brx-header');
var isOpen = false;
var CIRC = 251.2;
var animating = false;
root.style.setProperty(
'--finch-toc-expand',
expandWidth + (String(expandWidth).match(/[a-z%]/i) ? '' : 'px')
);
function setNavHeight(px) {
nav.style.height = px;
}
function setOpen(open) {
if (animating) return;
open = !!open;
if (open === isOpen) return;
isOpen = open;
animating = true;
container.classList.toggle('open', isOpen);
container.classList.toggle('close', !isOpen);
container.setAttribute('aria-expanded', isOpen ? 'true' : 'false');
if (overlay) {
if (isOpen) {
overlay.hidden = false;
// force reflow then show
void overlay.offsetWidth;
overlay.classList.add('is-visible');
} else {
overlay.classList.remove('is-visible');
window.setTimeout(function () {
if (!isOpen) overlay.hidden = true;
}, 500);
}
}
if (header) {
header.classList.toggle('toc-force-hide', isOpen);
}
root.querySelectorAll('.toc-btn').forEach(function (btn) {
btn.tabIndex = isOpen ? 0 : -1;
});
if (isOpen) {
setNavHeight('0px');
nav.style.opacity = '0';
nav.style.pointerEvents = 'auto';
var full = nav.scrollHeight;
void nav.offsetHeight;
setNavHeight(full + 'px');
nav.style.opacity = '1';
window.setTimeout(function () {
if (isOpen) setNavHeight('auto');
animating = false;
}, 620);
} else {
var current = nav.scrollHeight;
setNavHeight(current + 'px');
void nav.offsetHeight;
setNavHeight('0px');
nav.style.opacity = '0';
nav.style.pointerEvents = 'none';
window.setTimeout(function () {
animating = false;
}, 620);
}
}
setNavHeight('0px');
nav.style.opacity = '0';
nav.style.pointerEvents = 'none';
setOpen(false);
// setOpen(false) early-returns when already false — ensure classes
container.classList.add('close');
container.classList.remove('open');
container.setAttribute('aria-expanded', 'false');
animating = false;
container.addEventListener('click', function (e) {
if (e.target.closest('.toc-btn') || e.target.closest('.finch-toc-island__nav')) return;
setOpen(!isOpen);
});
container.addEventListener('keydown', function (e) {
if (e.key === 'Enter' || e.key === ' ') {
if (e.target.closest('.toc-btn')) return;
e.preventDefault();
setOpen(!isOpen);
}
});
if (overlay) {
overlay.addEventListener('click', function () {
setOpen(false);
});
}
document.addEventListener('keydown', function (e) {
if (e.key === 'Escape' && isOpen) {
setOpen(false);
container.focus();
}
});
function updateProgress() {
var scrollHeight = document.documentElement.scrollHeight - window.innerHeight;
var pct = scrollHeight > 0 ? Math.min(100, Math.max(0, (window.scrollY / scrollHeight) * 100)) : 0;
if (progressBar) {
progressBar.style.strokeDashoffset = String(CIRC * (1 - pct / 100));
}
if (percentageText) {
percentageText.textContent = Math.round(pct) + '%';
}
}
updateProgress();
window.addEventListener('scroll', updateProgress, { passive: true });
function cssEscape(s) {
if (window.CSS && CSS.escape) return CSS.escape(s);
return String(s).replace(/[^a-zA-Z0-9_-]/g, '\\$&');
}
function targetEl(btn) {
var targetClass = btn.getAttribute('data-target');
if (!targetClass) return null;
var el = document.querySelector('.' + cssEscape(targetClass));
if (el) return el;
return document.getElementById(targetClass);
}
function scrollToTarget(btn) {
var target = targetEl(btn);
if (!target) return;
var offset = 60;
var top = target.getBoundingClientRect().top + window.scrollY - offset;
window.scrollTo({ top: top, behavior: 'smooth' });
setOpen(false);
}
root.querySelectorAll('.toc-btn').forEach(function (btn) {
btn.tabIndex = -1;
if (!btn.getAttribute('type')) btn.setAttribute('type', 'button');
btn.addEventListener('click', function (e) {
e.preventDefault();
e.stopPropagation();
scrollToTarget(btn);
});
});
var buttons = Array.prototype.slice.call(root.querySelectorAll('.toc-btn[data-target]'));
var sections = buttons
.map(function (btn) {
return { btn: btn, el: targetEl(btn) };
})
.filter(function (x) {
return x.el;
});
function updateSpy() {
if (!sections.length) return;
var active = null;
var probe = window.scrollY + 120;
for (var i = 0; i
<
= probe) active = sections[i];
}
buttons.forEach(function (btn) {
btn.classList.remove('is-active');
btn.removeAttribute('aria-current');
});
if (active) {
active.btn.classList.add('is-active');
active.btn.setAttribute('aria-current', 'location');
}
}
updateSpy();
window.addEventListener('scroll', updateSpy, { passive: true });
}
ready(function () {
document.querySelectorAll('[data-finch-toc-island]').forEach(initIsland);
});
})();
The final disappearing actJon Finch
Jon Finch | Magician & Mentalist™ © 2026