/* Badge */
.np-badge{ position:fixed; z-index:9999; width:var(--size); height:var(--size); top:var(--top); right:var(--right); cursor:pointer; filter: drop-shadow(0 14px 34px rgba(0,0,0,.18)); }
.np-badge.fade-in{ animation: np-fade .5s ease-out both; }
@keyframes np-fade{ from{ opacity:0; transform:translateY(-6px)} to{ opacity:1; transform:translateY(0)} }
.np-badge .ring{ position:relative; width:100%; height:100%; border-radius:50%; overflow:visible; background:transparent; pointer-events:auto; }
.ring-svg{ position:absolute; inset:0; width:100%; height:100%; pointer-events:none; }
.ring-text{ font-family: var(--ring-font,'Montserrat'), sans-serif; font-size: var(--ring-font-size,14px); font-weight: var(--ring-font-weight,700); fill: var(--ring-color,#ffffff); pointer-events:none; }
.np-badge.text-only .ring{ background:transparent !important; box-shadow:none !important; }
.gradient-text .ring-text{ fill: url(#np-grad); }
.text-glow .ring-text{ filter: drop-shadow(0 0 6px rgba(255,255,255,.85)); animation: glow 4s ease-in-out infinite alternate; }
@keyframes glow{ from{ filter: drop-shadow(0 0 4px rgba(255,255,255,.6)) } to{ filter: drop-shadow(0 0 12px rgba(255,255,255,1)) } }
.text-shadow .ring-text{ text-shadow: 0 1px 2px rgba(0,0,0,.45); }
.fairy{ position:absolute; left:50%; top:54%; width:72%; transform:translate(-50%,-50%); pointer-events:none; filter: drop-shadow(0 6px 18px rgba(0,0,0,.22)) saturate(1.05); }
/* Animations */
@keyframes float{ 0%{ transform:translateY(0)} 50%{ transform:translateY(-10px)} 100%{ transform:translateY(0)} }
@keyframes ring-rot{ from{ transform:rotate(0)} to{ transform:rotate(360deg)} }
.np-badge.float{ animation: float 4.5s ease-in-out infinite; }
.np-badge.spin .ring-svg{ animation: ring-rot 18s linear infinite; }
.np-badge.float-spin{ animation: float 5s ease-in-out infinite; }
.np-badge.pulse .ring-text{ animation: glow 3.5s ease-in-out infinite; }
/* Modal */
.np-overlay{ position:fixed; inset:0; background:rgba(8,12,18,.55); display:none; align-items:center; justify-content:center; z-index:99999; }
.np-overlay.open .np-modal{ transform:scale(1); opacity:1; }
.np-modal{ position:relative; background:#fff; border-radius:18px; padding:22px; width:min(92vw,860px); max-height:86vh; overflow:auto; box-shadow:0 24px 80px rgba(0,0,0,.28); transform:scale(.96); opacity:0; transition:transform .16s ease, opacity .16s ease; }
.np-modal .title{ margin:0 0 12px; font-size:22px; }
.np-modal .close{ position:absolute; right:10px; top:6px; background:none; border:none; font-size:28px; cursor:pointer; color:#9ca3af; }
.np-modal .close:hover{ color:#6b7280; }