#loader { position: fixed; inset: 0; background: rgba(255,255,255,0.85); backdrop-filter: blur(2px); opacity: 0; pointer-events: none; transition: opacity .15s ease; z-index: 99999; }

#loader::before { content: "Loading…"; position: absolute; top: calc(50% + 26px); left: 50%; transform: translateX(-50%); font: 500 13px system-ui, sans-serif; color: #555; opacity: .9; transition: opacity .15s ease; }

#loader:not(.show)::before { opacity: 0; }

#loader::after { content: ""; position: absolute; top: 50%; left: 50%; width: 24px; height: 24px; border: 3px solid #2196f3; border-top-color: transparent; border-radius: 50%; transform: translate(-50%, -50%); animation: spin .7s linear infinite; }

#loader.show { opacity: 1; pointer-events: auto; }

@keyframes spin { to {
transform: translate(-50%, -50%) rotate(360deg); } }

a, button { -webkit-tap-highlight-color: transparent;
touch-action: manipulation; }