/* Silvester & Neujahr · © 2026 gameserver-install.de · by rumpel */
.ny-fw { position: fixed; inset: 0; pointer-events: none; z-index: 9990; }
html.gsi-ny-off .ny-fw, html.gsi-ny-off .ny-bar, html.gsi-ny-off .ny-big { display: none; }
.ny-tools { position: fixed; left: 14px; bottom: calc(var(--ny-off, 0px) + 14px); z-index: 9993; display: flex; flex-direction: column; gap: 8px; }
.ny-btn { width: 42px; height: 42px; border-radius: 50%; border: 1px solid rgba(255, 215, 120, .55); background: rgba(12, 14, 34, .85); color: #ffd34d; display: grid; place-items: center; cursor: pointer; box-shadow: 0 6px 18px rgba(0, 0, 0, .3); backdrop-filter: blur(6px); transition: transform .2s, background .2s; }
.ny-btn:hover { transform: scale(1.08); }
.ny-btn:focus-visible { outline: 3px solid #ffd34d; outline-offset: 2px; }
.ny-btn svg { width: 21px; height: 21px; }
.ny-btn[aria-pressed="true"]:not(.ny-btn--snd) { opacity: .6; }
.ny-btn--snd .ny-w { opacity: .35; }
.ny-btn--snd.is-on { background: linear-gradient(135deg, #6d28d9, #1e1b4b); color: #fff; }
.ny-btn--snd.is-on .ny-w { opacity: 1; }
.ny-bar { position: fixed; top: 12px; left: 50%; transform: translateX(-50%); z-index: 9992; display: flex; align-items: center; gap: 10px; padding: 8px 16px 8px 10px; border-radius: 40px; color: #fff; font: 600 14px/1 system-ui, sans-serif; pointer-events: none;
    background: linear-gradient(90deg, rgba(30, 27, 75, .92), rgba(76, 29, 149, .92)); border: 1px solid rgba(255, 215, 120, .55); box-shadow: 0 10px 30px rgba(30, 20, 80, .45); animation: nyDrop .6s cubic-bezier(.2, 1.4, .4, 1) both; }
.ny-bar__i { width: 22px; height: 22px; border-radius: 50%; background: radial-gradient(circle, #fff 0 12%, #ffd34d 22%, transparent 24%), conic-gradient(from 0deg, #ffd34d 0 10deg, transparent 10deg 45deg, #ff6b9a 45deg 55deg, transparent 55deg 90deg, #4dd2ff 90deg 100deg, transparent 100deg 135deg, #7cff6b 135deg 145deg, transparent 145deg 180deg, #ffd34d 180deg 190deg, transparent 190deg 225deg, #ff6b9a 225deg 235deg, transparent 235deg 270deg, #4dd2ff 270deg 280deg, transparent 280deg 315deg, #7cff6b 315deg 325deg, transparent 325deg); animation: nySpin 6s linear infinite; }
.ny-bar__n { font-variant-numeric: tabular-nums; font-size: 16px; color: #ffd34d; letter-spacing: .04em; min-width: 64px; }
@keyframes nyDrop { from { opacity: 0; transform: translate(-50%, -30px); } to { opacity: 1; transform: translate(-50%, 0); } }
@keyframes nySpin { to { transform: rotate(360deg); } }
.ny-big { position: fixed; left: 50%; top: 50%; z-index: 9994; transform: translate(-50%, -50%); pointer-events: none; font: 900 min(38vw, 340px)/1 system-ui, sans-serif; color: #fff; text-shadow: 0 0 40px rgba(255, 210, 90, .9), 0 0 120px rgba(160, 80, 255, .7); font-variant-numeric: tabular-nums; }
.ny-big.is-pop { animation: nyPop 1s cubic-bezier(.2, 1.3, .4, 1) both; }
@keyframes nyPop { 0% { opacity: 0; transform: translate(-50%, -50%) scale(.3); } 25% { opacity: 1; transform: translate(-50%, -50%) scale(1.08); } 80% { opacity: 1; transform: translate(-50%, -50%) scale(1); } 100% { opacity: 0; transform: translate(-50%, -50%) scale(1.4); } }
.ny-greet { position: fixed; left: 50%; top: 42%; z-index: 9994; transform: translate(-50%, -50%); display: flex; align-items: center; gap: 14px; padding: 22px 26px 22px 34px; border-radius: 28px; max-width: calc(100vw - 32px);
    background: radial-gradient(120% 140% at 50% 0%, rgba(76, 29, 149, .92), rgba(15, 12, 40, .94)); border: 1px solid rgba(255, 215, 120, .6); box-shadow: 0 30px 80px rgba(20, 10, 60, .6), 0 0 80px rgba(255, 200, 80, .25);
    animation: nyGreet 1.1s cubic-bezier(.2, 1.3, .4, 1) both; transition: all .8s cubic-bezier(.3, .8, .3, 1); }
.ny-greet__t { font: 900 clamp(26px, 5.4vw, 64px)/1.05 system-ui, sans-serif; text-align: center; background: linear-gradient(180deg, #fff6d1 10%, #ffd34d 45%, #ff9d3d 100%); -webkit-background-clip: text; background-clip: text; color: transparent; filter: drop-shadow(0 0 18px rgba(255, 200, 80, .55)); }
.ny-greet__x { flex: none; align-self: flex-start; width: 30px; height: 30px; border-radius: 50%; border: 0; background: rgba(255, 255, 255, .14); color: #fff; font-size: 18px; cursor: pointer; }
.ny-greet.is-small { top: 14px; transform: translate(-50%, 0) scale(1); padding: 8px 10px 8px 18px; border-radius: 40px; }
.ny-greet.is-small .ny-greet__t { font-size: 18px; }
.ny-greet.is-gone { opacity: 0; transform: translate(-50%, -20px); }
@keyframes nyGreet { 0% { opacity: 0; transform: translate(-50%, -50%) scale(.4); } 100% { opacity: 1; transform: translate(-50%, -50%) scale(1); } }
@media (max-width: 700px) { .ny-bar { top: 8px; font-size: 12.5px; padding: 6px 12px 6px 8px; } .ny-bar__n { font-size: 14px; } .ny-btn { width: 38px; height: 38px; } }
@media (prefers-reduced-motion: reduce) { .ny-bar, .ny-bar__i, .ny-big.is-pop, .ny-greet { animation: none; } }
@media print { .ny-fw, .ny-tools, .ny-bar, .ny-big, .ny-greet { display: none !important; } }
/* läuft der Weihnachtszauber gleichzeitig, stehen die Knöpfe darüber */
html.gsi-xmas .ny-tools { bottom: calc(var(--xm-off, var(--ny-off, 0px)) + 182px); }
html.gsi-xmas.gsi-xmas-off .ny-tools { bottom: calc(var(--xm-off, var(--ny-off, 0px)) + 114px); }
@media (max-width: 700px) { html.gsi-xmas .ny-tools { bottom: calc(var(--xm-off, var(--ny-off, 0px)) + 146px); } }
/* Box: Silvester-Countdown */
.ny-box { position: relative; text-align: center; padding: 8px 2px 2px; overflow: hidden; }
.ny-box__spark { position: relative; width: 70px; height: 54px; margin: 0 auto 8px; }
.ny-box__spark::before { content: ""; position: absolute; left: 50%; bottom: 0; width: 3px; height: 30px; margin-left: -1.5px; border-radius: 2px; background: linear-gradient(#ffd34d, #8a8f99 30%); }
.ny-box__spark i { position: absolute; left: 50%; top: 22px; width: 2px; height: 16px; margin-left: -1px; border-radius: 2px; background: linear-gradient(#fff, #ffd34d 40%, transparent); transform-origin: 50% 0; animation: nySpark .7s ease-out infinite; }
.ny-box__spark i:nth-child(1) { --r: -70deg; } .ny-box__spark i:nth-child(2) { --r: -35deg; animation-delay: -.12s; } .ny-box__spark i:nth-child(3) { --r: 0deg; animation-delay: -.3s; }
.ny-box__spark i:nth-child(4) { --r: 35deg; animation-delay: -.45s; } .ny-box__spark i:nth-child(5) { --r: 70deg; animation-delay: -.2s; } .ny-box__spark i:nth-child(6) { --r: 180deg; animation-delay: -.55s; }
@keyframes nySpark { 0% { transform: rotate(var(--r)) translateY(-4px) scaleY(.3); opacity: 1; } 100% { transform: rotate(var(--r)) translateY(-22px) scaleY(1); opacity: 0; } }
.ny-box__lead { margin: 0 0 8px; font-weight: 600; opacity: .85; }
.ny-box__nums { display: flex; justify-content: center; gap: 6px; }
.ny-box__nums span { min-width: 50px; padding: 8px 4px; border-radius: 10px; background: rgba(109, 40, 217, .14); border: 1px solid rgba(124, 58, 237, .4); }
.ny-box__nums b { display: block; font-size: 1.35rem; line-height: 1.1; font-variant-numeric: tabular-nums; }
.ny-box__nums small { font-size: .68rem; opacity: .75; text-transform: uppercase; letter-spacing: .05em; }
.ny-box__big { font-size: 1.3rem; font-weight: 800; margin: 4px 0; background: linear-gradient(90deg, #ffd34d, #ff6b9a, #4dd2ff); -webkit-background-clip: text; background-clip: text; color: transparent; }
