// Inline SM circle — true transparent background, scales crisply at any size.
function SmCircleMark({ size = 44 }) {
return (
);
}
window.SmCircleMark = SmCircleMark;
// Homepage Nav — fixed, transparent over hero, hairline + cream blur on scroll.
function HpNav() {
const [scrolled, setScrolled] = React.useState(false);
React.useEffect(() => {
const onScroll = () => setScrolled(window.scrollY > 40);
window.addEventListener("scroll", onScroll);
return () => window.removeEventListener("scroll", onScroll);
}, []);
// Resolve a section anchor: scroll if on homepage, otherwise navigate cross-page.
const isHome = (() => {
const p = window.location.pathname;
return p.endsWith("/") || p.endsWith("index.html") || p === "";
})();
const anchor = (id) => isHome ? `#${id}` : `index.html#${id}`;
const navStyle = {
background: scrolled ? "rgba(244, 239, 230, 0.82)" : "transparent",
backdropFilter: scrolled ? "blur(16px)" : "none",
WebkitBackdropFilter: scrolled ? "blur(16px)" : "none",
borderBottom: scrolled ? "1px solid var(--rule)" : "1px solid transparent",
};
return (
);
}
window.HpNav = HpNav;