/* Brain-Fit: universelle Erfolgsanimation, ohne Framework */
.finn-win-overlay[hidden] { display:none !important; }
.finn-win-overlay { position:fixed; inset:0; z-index:2147483000; display:grid; place-items:center; padding:16px; background:rgba(22,29,36,.64); backdrop-filter:blur(3px); box-sizing:border-box; }
.finn-win-overlay *, .finn-win-overlay *::before, .finn-win-overlay *::after {box-sizing:border-box}
.finn-win-dialog { position:relative; isolation:isolate; width:min(100%, 440px); max-height:calc(100dvh - 32px); overflow-y:auto; text-align:center; background:#fff; border-radius:24px; padding:22px 22px 24px; box-shadow:0 28px 80px rgba(0,0,0,.28); font-family:system-ui,-apple-system,'Segoe UI',sans-serif; color:#28313c; animation:finn-dialog-in .3s cubic-bezier(.2,1.25,.5,1) both; }
.finn-win-close {position:absolute; top:12px; right:12px; z-index:5; border:0; border-radius:50%; background:#f1f2f3; width:38px; height:38px; cursor:pointer; color:#26313b; font-size:24px; line-height:1}
.finn-win-eyebrow {color:#9e5003; font-size:13px; font-weight:800; letter-spacing:.1em; text-transform:uppercase}
.finn-win-stage { position:relative; width:min(100%, 270px); height: min(43dvh, 315px); min-height:195px; margin:4px auto 0; }
.finn-win-frame {position:absolute; inset:0; display:block; width:100%; height:100%; object-fit:contain; opacity:0; transform:translateY(9px) scale(.95); transition:opacity .26s ease, transform .38s ease; pointer-events:none}
.finn-win-frame.is-active {opacity:1; transform:translateY(0) scale(1)}
.finn-win-title {margin:2px 0 6px; font-weight:850; color:#d85f00; font-size:clamp(24px,5.8vw,31px); line-height:1.13}
.finn-win-message { margin:0 auto 18px; font-size:17px; line-height:1.5; max-width:340px; }
.finn-win-actions {display:flex; gap:10px; flex-wrap:wrap; justify-content:center}
.finn-win-btn {min-height:48px; padding:11px 18px; border-radius:12px; border:2px solid #ed7000; font:inherit; font-size:16px; font-weight:750; cursor:pointer}
.finn-win-btn-primary {background:#ef7500; color:white} .finn-win-btn-secondary {background:#fff; color:#af5200}
.finn-win-btn:focus-visible,.finn-win-close:focus-visible {outline:3px solid #2949ac;outline-offset:3px}
.finn-win-confetti {position:absolute; inset:0; pointer-events:none; overflow:hidden; border-radius:24px; z-index:-1}
.finn-win-piece {position:absolute; top:-16px; width:8px; height:14px; border-radius:2px; opacity:0; animation:finn-confetti-fall var(--dur) linear var(--delay) 1 both}
@keyframes finn-dialog-in {from{opacity:0;transform:translateY(18px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes finn-confetti-fall {0%{opacity:0; transform:translate3d(0,0,0) rotate(0)}8%{opacity:1}85%{opacity:1}100%{opacity:0; transform:translate3d(var(--drift),560px,0) rotate(var(--turn))}}
@media (max-height:600px) {.finn-win-dialog{padding:15px}.finn-win-stage{height:180px;min-height:150px}.finn-win-message{margin-bottom:11px}}
@media (prefers-reduced-motion:reduce) {.finn-win-dialog{animation:none}.finn-win-frame{transition:none}.finn-win-piece{animation:none!important}}

/* Finn 2.0: federnder Jubelsprung, glaubwürdiger Bodenschatten und Titel-Pop */
.finn-win-scene {position:relative; width:min(100%,270px); margin:4px auto 0;}
.finn-win-scene .finn-win-stage {margin:0 auto; height:min(43dvh,315px); transform-origin:center 91%; will-change:transform;}
.finn-win-shadow {width:49%; height:12px; margin:-8px auto 10px; border-radius:50%; background:rgba(43,31,19,.20); filter:blur(6px); transform-origin:center;}
.finn-win-scene.is-jumping .finn-win-stage {animation:finn-victory-jump 1.15s cubic-bezier(.25,.6,.28,1) 2 both;}
.finn-win-scene.is-jumping .finn-win-shadow {animation:finn-victory-shadow 1.15s ease-in-out 2 both;}
.finn-win-title.is-popping {animation:finn-title-pop .55s .17s cubic-bezier(.2,1.4,.4,1) both;}
@keyframes finn-victory-jump {
  0% {transform:translateY(20px) scale(.89,1.07); opacity:0;}
  13% {transform:translateY(0) scale(1.08,.92);opacity:1;}
  28% {transform:translateY(-28px) scale(.96,1.05) rotate(-3deg);}
  47% {transform:translateY(-45px) scale(1) rotate(3deg);}
  69% {transform:translateY(-8px) scale(1.02,.98) rotate(-1deg);}
  79% {transform:translateY(0) scale(1.08,.91);}
  90% {transform:translateY(-7px) scale(.98,1.02);}
  100% {transform:translateY(0) scale(1);opacity:1;}
}
@keyframes finn-victory-shadow {
  0%,100% {transform:scale(1);opacity:.8;}
  47% {transform:scale(.57);opacity:.24;}
  79% {transform:scale(1.1);opacity:.9;}
}
@keyframes finn-title-pop {
  0% {opacity:0;transform:scale(.75) translateY(8px);}
  68% {opacity:1;transform:scale(1.07);}
  100% {opacity:1;transform:scale(1);}
}
@media (prefers-reduced-motion:reduce) {
  .finn-win-scene.is-jumping .finn-win-stage,
  .finn-win-scene.is-jumping .finn-win-shadow,
  .finn-win-title.is-popping {animation:none!important;}
}
