/* CelebrationHub brand icon — shared by every page.
   Two artworks: the dark tile (gold on charcoal) for dark surfaces and
   the light tile (navy star on white) for light surfaces. Public pages
   are dark, so they use the dark icon only. The admin dashboard follows
   its Light/Dark setting (data-theme="light" on <html>), so it carries
   both and shows the right one. */
.ch-icon { display: inline-block; width: 1.45em; height: 1.45em; vertical-align: -0.36em; object-fit: contain; margin-right: 0.3em; }
.ch-icon--light { display: none; }
:root[data-theme="light"] .ch-icon--light { display: inline-block; }
:root[data-theme="light"] .ch-icon--dark { display: none; }
.ch-icon--inline { width: 1.1em; height: 1.1em; vertical-align: -0.2em; margin: 0 0.15em; }

/* Loading indicator: the icon with a calm pulse (no spinning). */
.ch-loading { display: flex; justify-content: center; margin: 0 0 14px; }
.ch-spinner { width: 46px; height: 46px; animation: ch-pulse 1.6s ease-in-out infinite; }
@keyframes ch-pulse { 50% { transform: scale(1.08); opacity: 0.72; } }
@media (prefers-reduced-motion: reduce) { .ch-spinner { animation: none; } }
