/* ZÄHLWIESE v109 – illustrated character editions / toddler-friendly picnic polish */
.zw107 .zw109-character-stack{display:block;position:relative;width:126%;height:95%;pointer-events:none;transform:translateY(1%);filter:drop-shadow(0 3px 2px #59573566)}
.zw107 .zw109-character-stack img{position:absolute;left:0;bottom:0;width:100%;height:100%;object-fit:contain;object-position:center bottom;display:block;pointer-events:none;image-rendering:auto;transition:opacity .32s ease,transform .5s ease}
.zw107 .zw109-character-rest{opacity:1;transform:scale(1.08) translateY(4%)}
.zw107 .zw109-character-walk{opacity:0;transform:scale(.85) translateY(12%)}
.zw107.zw107-walk:not(.zw107-arrived) .zw109-character-rest{opacity:0;transform:scale(.9) translateY(9%)}
.zw107.zw107-walk:not(.zw107-arrived) .zw109-character-walk{opacity:1;transform:scale(1.04) translateY(1%)}
.zw107.zw107-arrived .zw109-character-rest{opacity:1;transform:scale(1.04) translateY(4%)}
.zw107.zw107-arrived .zw109-character-walk{opacity:0}
.zw107 .zw107-friend{pointer-events:auto!important;cursor:pointer!important;touch-action:manipulation!important;user-select:none!important;-webkit-user-select:none!important}
.zw107 .zw107-friend:focus-visible{outline:4px dashed #eac776;outline-offset:4px;border-radius:30px}
.zw107 .zw107-friend.zw109-joy .zw109-character-stack{animation:zw109-happy-dance 1.2s cubic-bezier(.28,.8,.39,1) 1!important}
@keyframes zw109-happy-dance{0%,100%{transform:translateY(1%) rotate(0)}18%{transform:translateY(-13%) rotate(-8deg)}40%{transform:translateY(0%) rotate(7deg)}60%{transform:translateY(-12%) rotate(-5deg)}82%{transform:translateY(-4%) rotate(4deg)}}
.zw107 .zw109-butterfly{position:absolute;z-index:3;pointer-events:none;user-select:none;object-fit:contain;width:clamp(24px,8vw,53px);height:auto;filter:drop-shadow(0 3px 3px #775c4873);will-change:transform}
.zw107 .zw109-butterfly-one{top:33%;right:8%;animation:zw109-flutter 9s ease-in-out infinite}
.zw107 .zw109-butterfly-two{top:55%;left:7%;width:clamp(18px,5vw,35px);animation:zw109-flutter 11s -3.1s ease-in-out infinite reverse}
@keyframes zw109-flutter{0%,100%{transform:translate(0,0) rotate(4deg)}25%{transform:translate(14px,-13px) rotate(-11deg)}50%{transform:translate(-8px,-24px) rotate(9deg)}75%{transform:translate(18px,-7px) rotate(3deg)}}
.zw107 .zw109-round-flowers{position:absolute;z-index:18;top:27.3%;left:50%;width:min(42%,220px);height:clamp(23px,3.4vw,33px);transform:translateX(-50%);display:flex;justify-content:center;align-items:center;gap:2px;pointer-events:none}
.zw107 .zw109-flower-stamp{width:20%;height:100%;min-width:0;opacity:.37;filter:grayscale(.6) drop-shadow(0 1px 1px #6951379e);transform:scale(.78);transition:opacity .4s,transform .4s,filter .4s}
.zw107 .zw109-flower-stamp.zw109-active{opacity:1;filter:drop-shadow(0 2px 2px #8e7453a0);transform:scale(1.03)}
.zw107 .zw109-flower-stamp img{display:block;width:100%;height:100%;object-fit:contain}
.zw107 .zw107-food-grid{gap:1px 3px!important}
.zw107 .zw107-food-button{overflow:visible!important;border:0!important;outline:0!important;background:transparent url('/picnic-v109/token-gold.webp') center / 100% 100% no-repeat!important;max-width:clamp(62px,23vw,110px)!important;max-height:124px!important;min-height:48px;filter:drop-shadow(0 3px 1px #69503c9c)!important;transform:translateZ(0)!important}
.zw107 .zw107-food-button:nth-child(4n+2){background-image:url('/picnic-v109/token-rose.webp')!important}
.zw107 .zw107-food-button:nth-child(4n+3){background-image:url('/picnic-v109/token-blue.webp')!important}
.zw107 .zw107-food-button:nth-child(4n+4){background-image:url('/picnic-v109/token-mint.webp')!important}
.zw107 .zw107-food-button img.zw108-foodimg{inset:13%!important;width:74%!important;height:74%!important;max-width:74%!important;max-height:74%!important;filter:drop-shadow(0 1px 2px #73553a7e)!important}
.zw107 .zw107-food-button:active{transform:scale(.91)!important;filter:drop-shadow(0 2px 1px #67513d99)!important}
.zw107 .zw107-food-button:focus-visible{outline:4px solid #f6d36b!important;outline-offset:-7px!important;border-radius:50%!important}
.zw107 .zw107-food-button.zw107-hintglow{animation:zw107-hint 1s ease-in-out 3!important}
.zw107 .zw107-food-grid:has(.zw107-food-button:nth-child(6):last-child){grid-template-columns:repeat(3,minmax(0,1fr))!important;grid-template-rows:repeat(2,minmax(0,1fr))!important}
.zw107 .zw107-food-grid:has(.zw107-food-button:nth-child(8):last-child){grid-template-columns:repeat(4,minmax(0,1fr))!important;grid-template-rows:repeat(2,minmax(0,1fr))!important}
.zw107 .zw107-food-grid:has(.zw107-food-button:nth-child(10):last-child){grid-template-columns:repeat(5,minmax(0,1fr))!important;grid-template-rows:repeat(2,minmax(0,1fr))!important}
.zw107 .zw107-basket-filled{z-index:8!important;inset:36% 16% 33%!important;display:flex!important;gap:0;align-content:center;justify-content:center}
.zw107 .zw107-collected img{display:block!important;width:100%!important;height:100%!important;object-fit:contain}
.zw109-flying-food{position:fixed;pointer-events:none;width:62px;height:62px;z-index:100000;filter:drop-shadow(0 4px 4px #6e543b99);will-change:transform}
.zw109-flying-food img{width:100%!important;height:100%!important;object-fit:contain}
.zw107 .zw107-particle{clip-path:none!important;border:0!important;width:clamp(13px,2vw,22px)!important;height:clamp(13px,2vw,22px)!important;background:transparent url('/picnic-v109/star.webp') center/contain no-repeat!important}
.zw107 .zw107-particle.zw107-red{background-image:url('/picnic-v109/flower.webp')!important;filter:grayscale(.5)}
.zw107 .zw109-feast{position:absolute;top:59%;left:33%;width:40%;height:14%;z-index:16;display:flex;align-items:center;justify-content:center;gap:1%;pointer-events:none;opacity:0;transform:translateY(18px) scale(.65);transition:opacity .6s,transform 1s cubic-bezier(.3,1.1,.3,1)}
.zw107.zw109-feasting .zw109-feast{opacity:1;transform:translateY(0) scale(1)}
.zw107 .zw109-feast-food{width:30%;height:100%;display:block;filter:drop-shadow(0 4px 3px #5e4d3588)}
.zw107 .zw109-feast-food img{width:100%;height:100%;object-fit:contain}
.zw107 .zw107-order:has(.zw107-goal.completed) .zw107-goal.completed{filter:drop-shadow(0 0 3px #8bbe68)!important}
.zw107 .zw107-goal-piece.done img{filter:drop-shadow(0 0 2px #75ac45)}
.zw107 .zw107-basket-target.zw107-hover .zw108-basket-img{filter:drop-shadow(0 0 13px #fff2a5) drop-shadow(0 3px 3px #7b613f8a)}
@media (min-aspect-ratio:6/5){
 .zw107 .zw107-food-grid:has(.zw107-food-button:nth-child(6):last-child){grid-template-columns:repeat(6,minmax(0,1fr))!important;grid-template-rows:repeat(1,minmax(0,1fr))!important}
 .zw107 .zw107-food-grid:has(.zw107-food-button:nth-child(8):last-child){grid-template-columns:repeat(8,minmax(0,1fr))!important;grid-template-rows:repeat(1,minmax(0,1fr))!important}
 .zw107 .zw107-food-grid:has(.zw107-food-button:nth-child(10):last-child){grid-template-columns:repeat(5,minmax(0,1fr))!important;grid-template-rows:repeat(2,minmax(0,1fr))!important}
 .zw107 .zw107-food-button{max-width:clamp(52px,8.3vw,100px)!important;max-height:100%!important;min-height:44px!important}
 .zw107 .zw107-food-grid{padding:5px 9px!important}
 .zw107 .zw109-round-flowers{top:25.8%;left:50%;height:23px;width:160px}
 .zw107 .zw109-butterfly-one{right:17%;top:31%}
 .zw107 .zw109-butterfly-two{left:17%;top:51%}
 .zw107 .zw109-feast{top:53%;left:40%;width:24%;height:19%}
}
@media (max-width:400px) and (orientation:portrait){
 .zw107 .zw107-food-grid{padding:9px 8px!important}
 .zw107 .zw107-food-button{max-width:min(100%,103px)!important;max-height:112px!important;min-height:48px!important}
 .zw107 .zw109-round-flowers{top:27.2%;width:40%;height:24px}
 .zw107 .zw109-character-stack{width:138%;height:90%}
 .zw107 .zw109-feast{top:60%;left:32%;width:43%}
}
@media (max-height:450px) and (orientation:landscape){
 .zw107 .zw107-food-grid{padding:2px 7px!important}
 .zw107 .zw107-food-button{max-width:73px!important;max-height:90px!important;min-height:44px!important}
 .zw107 .zw109-character-stack{height:100%;width:128%}
}
@media (prefers-reduced-motion:reduce){.zw107 .zw109-butterfly{animation:none!important}.zw107 .zw109-character-stack{transition:none!important}}

/* V109 final layout: make the two newly illustrated characters genuine focal points. */
.zw107 .zw109-character-stack{flex:0 0 151%!important;width:151%!important;max-width:none!important;min-width:0!important;height:100%!important;flex-shrink:0!important;transform:translateY(-1%)!important}
.zw107 .zw109-character-rest{transform:scale(1.04) translateY(-2%)!important}
.zw107.zw107-arrived .zw109-character-rest{transform:scale(1.04) translateY(-2%)!important}
.zw107 .zw109-game-plaque{position:absolute;top:32.1%;left:30%;width:40%;height:7.3%;object-fit:contain;z-index:4;pointer-events:none;filter:drop-shadow(0 4px 3px #63452f64)}
@media (min-aspect-ratio:6/5){.zw107 .zw109-game-plaque{display:none!important}.zw107 .zw109-character-stack{width:141%!important;flex-basis:141%!important}}
@media (max-width:400px) and (orientation:portrait){.zw107 .zw109-character-stack{width:154%!important;flex-basis:154%!important}.zw107 .zw109-game-plaque{top:31.1%;left:28%;width:44%;height:7.5%}}

/* Reward scene: entirely new gingham fabric, no cropped copies of the protagonists. */
.zw107 .zw107-trip{position:absolute!important;z-index:2!important;left:17%!important;right:auto!important;top:58%!important;width:66%!important;height:15%!important;overflow:visible!important;opacity:0;transform:translateY(22px) scale(.8)!important;transition:opacity .8s,transform 1.1s}
.zw107.zw107-walk .zw107-trip{opacity:1!important;transform:translateY(0) scale(1)!important}
.zw107 .zw107-trip-blanket{position:absolute!important;inset:0!important;background:transparent url('/picnic-v109/blanket.webp') center/100% 100% no-repeat!important;border:none!important;border-radius:0!important;box-shadow:none!important;transform:none!important;filter:drop-shadow(0 4px 3px #4c5f3485)}
.zw107 .zw109-feast{top:59%!important;z-index:20!important}
@media (min-aspect-ratio:6/5){
 .zw107 .zw107-trip{top:53%!important;left:26%!important;width:48%!important;height:20%!important}
 .zw107 .zw109-feast{top:54%!important;left:39%!important;width:28%!important}
}

.zw107 .zw109-closed-basket{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;z-index:12;pointer-events:none;opacity:0;transform:translateY(-4%);transition:opacity .42s ease,transform .55s ease}
.zw107.zw107-win .zw109-closed-basket{opacity:1;transform:translateY(0);transition-delay:.74s}
.zw107.zw107-win .zw108-basket-img{opacity:0;transition:opacity .35s ease .74s}
.zw107.zw107-win .zw108-basket-lid-img{opacity:0!important;transition:opacity .3s ease .74s,transform .72s ease!important}
