/* игра «Мой питомец» (feed): стили этой игры. Новые правила — только через #s-feed и с префиксом pt-.
   Старые общие правила прошлой «Покорми зверят» (.animal, .food, .heart, .think b…) оставлены без изменений: их селекторы без #s-feed,
   они действуют на всю страницу, и другие игры могли на них опираться. Новая игра их не использует. */
/* ---------- старые общие правила (не трогать) ---------- */
/* feed */
.feed-animals{position:absolute;left:0;right:0;top:12vh;height:56vh;display:flex;justify-content:space-around;align-items:flex-end;z-index:3;padding:0 6vw}
.animal{position:relative;height:40vh;width:26vw;display:flex;align-items:flex-end;justify-content:center;animation:pop-in .5s backwards}
.animal>img{height:100%;max-width:100%;object-fit:contain;transform-origin:50% 100%}
.animal .think{position:absolute;top:-15vh;left:60%;width:14vmin;height:14vmin;border-radius:50%;background:#fff;box-shadow:0 .6vmin 1.4vmin rgba(0,0,0,.2);display:flex;align-items:center;justify-content:center;animation:bob 1.6s infinite ease-in-out}
.animal .think:before{content:"";position:absolute;left:0;bottom:-2.4vmin;width:3.6vmin;height:3.6vmin;border-radius:50%;background:#fff}
.animal .think img{width:72%;height:72%;object-fit:contain;opacity:.95}
.animal.fed .think{display:none}
.animal.fed>img{animation:happy .8s}
.animal.no>img{animation:shake .5s}
.animal.eat>img{animation:chomp .5s}
/* @keyframes happy -> перенесён в core/core.css (им пользуется bath, feed) */
/* @keyframes shake -> перенесён в core/core.css (им пользуется bath, core, feed, letters, memory, numbers, peek, sort) */
/* @keyframes chomp -> перенесён в core/core.css (им пользуется feed, memory, sort) */
.feed-tray{position:absolute;left:0;right:0;bottom:2vh;height:22vh;display:flex;justify-content:center;align-items:center;gap:4vw;z-index:5}
.food{width:18vmin;height:18vmin;border-radius:50%;background:rgba(255,255,255,.85);box-shadow:0 .8vmin 0 #6fb24f,0 1vmin 2vmin rgba(0,0,0,.15);display:flex;align-items:center;justify-content:center;touch-action:none;animation:pop-in .4s backwards}
.food img{width:76%;height:76%;object-fit:contain}
.heart{position:absolute;font-size:7vmin;z-index:60;pointer-events:none;animation:float-up 1.2s forwards;color:#ff4f7d}
@keyframes float-up{to{transform:translateY(-18vh) scale(1.6);opacity:0}}
@media (orientation:portrait){
  .feed-animals{top:14vh;height:50vh;flex-wrap:wrap;align-content:flex-end}
  .feed-animals{flex-wrap:nowrap;padding:0 2vw}
  .animal{height:20vh;width:31vw}
  .animal .think{top:-8vh}
}

/* feed v2 */
.animal>img.idle{animation:breathe 2.4s ease-in-out infinite;transition:scale .2s}
.animal.want>img{animation:none;scale:1.14 1.08}
.animal.want .think{scale:1.25}
.animal .think{transition:scale .2s}
.animal .think.ask{animation:pulse .35s 2}
.animal.fed>img{animation:happy .8s,dance2 .9s .8s ease-in-out infinite alternate}
/* @keyframes dance2 -> перенесён в core/core.css (им пользуется feed, memory) */
.animal.no>img{animation:shake .5s}
.animal.eat>img{animation:chomp .2s 3}

/* feed v3 */
.think b{position:absolute;right:-1.6vmin;bottom:-1.6vmin;width:6.6vmin;height:6.6vmin;border-radius:50%;background:#ff5b6e;color:#fff;font-weight:900;font-size:4.2vmin;display:flex;align-items:center;justify-content:center;border:.5vmin solid #fff}
.feed-tray{gap:2.4vw;flex-wrap:nowrap}
@media (orientation:portrait){.food{width:14.5vmin;height:14.5vmin}.feed-tray{gap:1.6vw}}

.animal .think.multi{width:auto;height:auto;padding:1.2vmin 1.6vmin;border-radius:7vmin;gap:.4vmin;left:10%}
.animal .think.multi img{width:9.5vmin;height:9.5vmin}
.animal.nothink:not(.reveal) .think{display:none}
.animal.target:before{content:"";position:absolute;left:50%;bottom:-3%;width:90%;height:22%;translate:-50% 0;border-radius:50%;background:radial-gradient(closest-side,rgba(255,236,120,.95),rgba(255,214,63,.5) 60%,rgba(255,214,63,0));animation:tglow 1s ease-in-out infinite alternate;z-index:-1}
.animal.hid{clip-path:inset(-100vh -30vw 0 -30vw)}
.animal.hid>img.idle{transition:translate .45s cubic-bezier(.3,1.5,.5,1),scale .2s}
.animal.hid:not(.up):not(.fed)>img.idle{translate:0 74%}
.animal.hid .think{transition:opacity .25s,scale .25s}
.animal.hid:not(.up):not(.fed) .think{opacity:0;scale:.3}
.animal>img.bush,.animal>img.phat{height:auto;max-width:none;animation:none}
.animal .bush{position:absolute;left:50%;bottom:-1%;width:26vh;max-width:110%;translate:-50% 0;z-index:2;pointer-events:none;filter:drop-shadow(0 .6vmin .6vmin rgba(0,0,0,.2))}
.animal>img.phat{position:absolute;left:50%;top:-11%;width:11vh;translate:-50% 0;rotate:-12deg;z-index:2;pointer-events:none;animation:floaty 1.8s ease-in-out infinite}

/* ---------- «Мой питомец»: раскладку (места и размеры в px) считает layout() в feed.js, здесь — вид и анимации ---------- */
#s-feed .bg{object-position:50% 62%}
#s-feed .pt-night{position:absolute;inset:0;z-index:5;pointer-events:none;opacity:0;transition:opacity 1.2s;background:radial-gradient(circle at 50% 30%,rgba(30,40,110,.45),rgba(10,14,50,.72))}
#s-feed .pt-night.on{opacity:1}
#s-feed.pt-dim .pt-night{opacity:.5;transition:opacity .6s}
#s-feed .pt-room{position:absolute;inset:0;z-index:2;pointer-events:none}
#s-feed .pt-deco{position:absolute;pointer-events:none}
#s-feed .pt-deco img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 .8vmin .8vmin rgba(80,40,10,.25))}
#s-feed .pt-new{animation:feed-new 1.2s cubic-bezier(.3,1.6,.5,1)}
@keyframes feed-new{0%{scale:0;opacity:0}60%{scale:1.25;opacity:1}100%{scale:1}}
#s-feed .pt-front{position:absolute;inset:0;z-index:3;pointer-events:none}
#s-feed .pt-bedfront{position:absolute;display:block;object-fit:contain}
/* the pet: all faces stacked, the shown one fades in */
#s-feed .pt-pet{position:absolute;z-index:3;touch-action:none;transition:left .6s,top .6s,width .6s,height .6s}
#s-feed .pt-body{position:relative;width:100%;height:100%;transform-origin:50% 96%;animation:feed-breathe 2.8s ease-in-out infinite;filter:drop-shadow(0 1.4vmin 1.2vmin rgba(90,45,10,.28))}
#s-feed .pt-st{position:absolute;inset:0;width:100%;height:100%;opacity:0;transition:opacity .22s;pointer-events:none}
#s-feed .pt-st.on{opacity:1}
#s-feed .pt-pet.fast .pt-st{transition:none}
#s-feed .pt-pet.want .pt-body{filter:drop-shadow(0 0 2.4vmin rgba(255,220,60,.95)) drop-shadow(0 1.4vmin 1.2vmin rgba(90,45,10,.28))}
@keyframes feed-breathe{0%,100%{scale:1 1}50%{scale:1.012 .982}}
#s-feed .pt-pet[data-s="happy"] .pt-body,#s-feed .pt-pet[data-s="play"] .pt-body{animation:feed-joy .9s ease-in-out infinite}
@keyframes feed-joy{0%,100%{scale:1 1;translate:0 0}40%{scale:1.03 .96;translate:0 0}70%{scale:.98 1.03;translate:0 -2%}}
#s-feed .pt-pet[data-s="cold"] .pt-body{animation:feed-shiver .14s linear infinite}
@keyframes feed-shiver{0%,100%{translate:0 0}25%{translate:-.6% 0}75%{translate:.6% 0}}
#s-feed .pt-pet[data-s="sleep"] .pt-body{animation:feed-breathe 4s ease-in-out infinite}
#s-feed .pt-pet[data-s="tummy"] .pt-body{animation:feed-wob 1.6s ease-in-out infinite}
@keyframes feed-wob{0%,100%{rotate:0deg}30%{rotate:-1.6deg}70%{rotate:1.6deg}}
#s-feed .pt-pet[data-s="sad"] .pt-body,#s-feed .pt-pet[data-s="sleepy"] .pt-body{animation:feed-droop 3.4s ease-in-out infinite}
@keyframes feed-droop{0%,100%{scale:1 1}50%{scale:1.008 .97}}
#s-feed .pt-pet[data-s="eat"] .pt-body{animation:feed-chew .3s ease-in-out infinite}
@keyframes feed-chew{0%,100%{scale:1 1}50%{scale:1.02 .975}}
#s-feed .pt-wear{position:absolute;translate:-50% -50%;display:none;pointer-events:none;filter:drop-shadow(0 .4vmin .4vmin rgba(0,0,0,.25))}
#s-feed .pt-pet.pt-worn .pt-wear{display:block}
#s-feed .pt-cover{position:absolute;left:6%;bottom:-2%;width:88%;opacity:0;translate:0 12%;transition:opacity .4s,translate .4s;pointer-events:none}
#s-feed .pt-pet.covered .pt-cover{opacity:1;translate:0 0}
#s-feed .pt-pet.pt-bed .pt-cover{bottom:-9%}   /* in the bed the blanket is tucked under the front rim */
#s-feed .pt-zzz{position:absolute;right:4%;top:2%;width:24%;display:none;pointer-events:none}
#s-feed .pt-zzz svg{width:100%;height:auto;display:block}
#s-feed .pt-pet[data-s="sleep"] .pt-zzz{display:block;animation:feed-zzz 2.4s ease-in-out infinite}
@keyframes feed-zzz{0%{opacity:0;translate:0 20%;scale:.7}30%{opacity:1}100%{opacity:0;translate:10% -40%;scale:1.1}}
/* a guest */
#s-feed .pt-guest{position:absolute;z-index:3;display:none;pointer-events:none}
#s-feed .pt-guest.show{display:block;animation:feed-in .6s cubic-bezier(.3,1.4,.5,1)}
#s-feed .pt-guest.bye{animation:feed-out .6s ease-in forwards}
#s-feed .pt-guest img{width:100%;height:100%;object-fit:contain;object-position:50% 100%;filter:drop-shadow(0 1vmin 1vmin rgba(90,45,10,.25))}
#s-feed .pt-guest.eat img{animation:chomp .3s 3}
#s-feed .pt-guest.want img{filter:drop-shadow(0 0 2.4vmin rgba(255,220,60,.95))}
@keyframes feed-in{from{translate:60vw 0}to{translate:0 0}}
@keyframes feed-out{to{translate:60vw 0;opacity:0}}
/* the bowl for counting */
#s-feed .pt-bowl{position:absolute;z-index:4;display:none;pointer-events:none}
#s-feed .pt-bowl.show{display:block;animation:pop-in .5s}
#s-feed .pt-bowl>img{position:absolute;left:0;bottom:0;width:100%;height:100%;object-fit:contain;object-position:50% 100%}
#s-feed .pt-bowl.want>img{filter:drop-shadow(0 0 2vmin rgba(255,220,60,.95))}
#s-feed .pt-in{position:absolute;left:4%;right:4%;top:6%;height:40%}
#s-feed .pt-berry{position:absolute;width:24%;translate:-20% -30%;animation:feed-drop .35s cubic-bezier(.3,1.6,.5,1)}
#s-feed .pt-berry.gone{scale:0;opacity:0;transition:scale .3s,opacity .3s}
@keyframes feed-drop{from{translate:-20% -160%;scale:.6}}
/* the thought cloud */
#s-feed .pt-think{position:absolute;z-index:6;display:none;pointer-events:none}
#s-feed .pt-think.show{display:block;animation:feed-cloud .45s cubic-bezier(.3,1.6,.5,1);transform-origin:0 100%}
#s-feed .pt-think:before,#s-feed .pt-think:after{content:"";position:absolute;background:#fff;border-radius:50%;box-shadow:0 .4vmin 1vmin rgba(0,0,0,.18)}
#s-feed .pt-think:before{left:2%;bottom:-6%;width:17%;height:20%}
#s-feed .pt-think:after{left:-9%;bottom:-19%;width:9%;height:11%}
#s-feed .pt-tk{position:absolute;inset:0;background:#fff;border-radius:50%/50%;box-shadow:0 .8vmin 0 rgba(0,0,0,.08),0 1vmin 2.4vmin rgba(0,0,0,.2);display:flex;align-items:center;justify-content:center;gap:3%;padding:8% 10%}
#s-feed .pt-tk span{flex:1 1 0;height:86%;display:flex;align-items:center;justify-content:center;min-width:0}
#s-feed .pt-tk img,#s-feed .pt-tk svg{width:100%;height:100%;object-fit:contain;display:block}
#s-feed .pt-tk circle.got{fill:#4fc36b;stroke:#2c8a43}
#s-feed .pt-think.pulse .pt-tk{animation:pulse .35s 2}
@keyframes feed-cloud{from{scale:0;opacity:0}to{scale:1;opacity:1}}
/* the order of the day: cards on top */
#s-feed .pt-steps{position:absolute;inset:0;z-index:6;display:none;pointer-events:none}
#s-feed .pt-steps.show{display:block}
#s-feed .pt-step{position:absolute;border-radius:24%;background:rgba(255,255,255,.92);box-shadow:0 .7vmin 0 #e3b26a,0 1vmin 2vmin rgba(0,0,0,.18);display:flex;align-items:center;justify-content:center;animation:pop-in .4s backwards;transition:scale .25s}
#s-feed .pt-step img{width:78%;height:78%;object-fit:contain;transition:filter .3s,opacity .3s}
#s-feed .pt-step.q img{filter:brightness(0);opacity:.2}
#s-feed .pt-step.cur{scale:1.12;box-shadow:0 .7vmin 0 #e3b26a,0 0 0 .9vmin #ffd23f,0 1vmin 2.4vmin rgba(0,0,0,.25)}
#s-feed .pt-step.done img{opacity:.6}
#s-feed .pt-step i{position:absolute;right:-12%;bottom:-12%;width:46%;display:none}
#s-feed .pt-step i svg{width:100%;height:auto;display:block}
#s-feed .pt-step.done i{display:block;animation:pop-in .4s}
#s-feed .pt-step.pulse{animation:pulse .35s 2}
/* things to give */
#s-feed .pt-tray{position:absolute;inset:0;z-index:7;pointer-events:none}
#s-feed .pt-it{position:absolute;pointer-events:auto;touch-action:none;border-radius:50%;background:rgba(255,255,255,.9);box-shadow:0 .8vmin 0 #e3b26a,0 1vmin 2vmin rgba(0,0,0,.18);display:flex;align-items:center;justify-content:center;animation:pop-in .45s backwards;cursor:grab}
#s-feed .pt-it img{width:76%;height:76%;object-fit:contain;pointer-events:none}
#s-feed .pt-it.held img{opacity:.3}
#s-feed .pt-it.used{scale:0;opacity:0;pointer-events:none;transition:scale .25s,opacity .25s}
#s-feed .pt-it.hop{animation:feed-hop .6s}
#s-feed .pt-it.glow{animation:feed-glow 1s ease-in-out infinite alternate}
@keyframes feed-hop{40%{translate:0 -14%;scale:1.08}}
@keyframes feed-glow{to{box-shadow:0 .8vmin 0 #e3b26a,0 0 0 1vmin #ffd23f,0 0 4vmin rgba(255,210,60,.9)}}
.pt-ghost{position:fixed;z-index:1000;pointer-events:none;translate:-50% -50%;filter:drop-shadow(0 2vmin 2vmin rgba(0,0,0,.35));touch-action:none}
.pt-hand{position:fixed;left:0;top:0;width:13vmin;max-width:110px;z-index:1001;pointer-events:none;margin:-.5vmin 0 0 -5.6vmin;filter:drop-shadow(0 .8vmin 1.2vmin rgba(0,0,0,.45)) drop-shadow(0 0 1.2vmin rgba(255,230,90,.9))}
.pt-hand svg{display:block;width:100%;height:auto}
.pt-hand-thing{position:fixed;left:0;top:0;z-index:1000;pointer-events:none;margin:-9vmin 0 0 -7vmin;filter:drop-shadow(0 1.2vmin 1.4vmin rgba(0,0,0,.35))}
/* things put down for a moment, toys */
#s-feed .pt-prop{position:absolute;z-index:4;object-fit:contain;object-position:50% 100%;pointer-events:none;animation:pop-in .4s}
#s-feed .pt-prop.out{opacity:0;scale:.6;transition:opacity .4s,scale .4s}
#s-feed .pt-toy{position:absolute;z-index:6;object-fit:contain;pointer-events:none}
#s-feed .pt-toy.bounce{animation:feed-ball .5s ease-in infinite alternate}
#s-feed .pt-toy.wiggle{transform-origin:20% 90%;animation:feed-wig .35s ease-in-out infinite alternate}
@keyframes feed-ball{from{translate:-60% -120%}to{translate:30% 0}}
@keyframes feed-wig{from{rotate:-25deg;translate:-30% 0}to{rotate:20deg;translate:10% -20%}}
/* choosing the pet */
#s-feed .pt-choose{position:absolute;inset:0;z-index:8;display:none}
#s-feed .pt-choose.show{display:block}
#s-feed .pt-card{position:absolute;border-radius:22%;background:rgba(255,255,255,.88);box-shadow:0 1vmin 0 #e3b26a,0 1.4vmin 2.6vmin rgba(0,0,0,.2);animation:pop-in .5s backwards;touch-action:none;cursor:pointer;transition:scale .5s,opacity .5s}
#s-feed .pt-card img{position:absolute;left:6%;top:6%;width:88%;height:88%;object-fit:contain;animation:feed-joy 1.6s ease-in-out infinite;pointer-events:none}
#s-feed .pt-card.picked{scale:1.18;z-index:2;box-shadow:0 1vmin 0 #e3b26a,0 0 0 1.2vmin #ffd23f}
#s-feed .pt-card.away{scale:.4;opacity:0}
/* the growth bar at the end of a session */
#s-feed .pt-grow{position:absolute;left:50%;top:calc(2.5vmin + env(safe-area-inset-top));translate:-50% 0;z-index:9;display:none;align-items:flex-end;gap:2vmin;padding:2vmin 3vmin 2.4vmin;border-radius:5vmin;background:rgba(255,255,255,.94);box-shadow:0 .8vmin 0 #e3b26a,0 1.2vmin 2.4vmin rgba(0,0,0,.2);pointer-events:none}
#s-feed .pt-grow.show{display:flex;animation:pop-in .5s}
#s-feed .pt-gbar{position:relative;align-self:center;width:30vmin;height:5vmin;border-radius:3vmin;background:#f3e3cf;box-shadow:inset 0 .5vmin .8vmin rgba(0,0,0,.15);overflow:hidden;order:0}
#s-feed .pt-gbar b{position:absolute;left:0;top:0;bottom:0;border-radius:3vmin;background:linear-gradient(90deg,#ff8fb0,#ff4f7d);transition:width 1.2s ease-out}
#s-feed .pt-gs{object-fit:contain;filter:grayscale(1) opacity(.45);transition:filter .5s}
#s-feed .pt-gs.on{filter:none}
#s-feed .pt-gs.s0{width:6vmin;height:6vmin}
#s-feed .pt-gs.s1{width:8.5vmin;height:8.5vmin}
#s-feed .pt-gs.s2{width:11vmin;height:11vmin}
/* помощник из семьи: размер и место на экране этой игры (их читает общий .helper.fam3d в core/core.css).
   --hp-h = высота фигуры (доля высоты экрана), --hp-x = отступ слева, --hp-y = где стоят ноги (от низа).
   Раскладка подвижная: layout() в feed.js ставит фигуру в свободный прямоугольник через helper.place(); здесь — значения до первого расчёта. */
#s-feed .helper.fam3d{--hp-h:44%;--hp-x:1vmin;--hp-y:1%}
@media (orientation:portrait){#s-feed .helper.fam3d{--hp-h:28%}}
#s-feed .pt-grow.col{flex-direction:column-reverse;align-items:center;padding:2.4vmin 2vmin}
#s-feed .pt-grow.col .pt-gbar{width:5vmin;height:24vmin;align-self:center;order:-1}
#s-feed .pt-grow.col .pt-gbar b{top:auto;right:0;width:auto!important;height:var(--f,0%);transition:height 1.2s ease-out}
@media (orientation:portrait){#s-feed .pt-gbar{width:23vmin}#s-feed .pt-grow{gap:1.6vmin;padding:2vmin 2.4vmin 2.4vmin}}
/* the helper never shows pictures here: the pet's cloud shows the wish, the tray thing hops */
#s-feed .helper .hp-bub{display:none!important}
#s-feed .vp-clone{display:none!important}

/* ---------- 13.10 новые дела: прогулка, мытьё, врач, причёска, погода, трюки, прятки, уборка ---------- */
#s-feed .pt-pet{transition:left .6s,top .6s,width .6s,height .6s,opacity .35s}
#s-feed.pt-out .pt-room,#s-feed.pt-out .pt-front{display:none}   /* вне дома и в «голой» комнате (прятки, уборка) кровати и игрушек нет */
#s-feed .pt-scback{position:absolute;inset:0;z-index:2;pointer-events:none}
#s-feed .pt-scene{position:absolute;inset:0;z-index:4;pointer-events:none}
#s-feed .pt-pet.pt-up{z-index:5}
#s-feed .pt-sc{position:absolute;pointer-events:none}
#s-feed .pt-sc img{width:100%;height:100%;object-fit:contain;object-position:50% 100%;display:block;filter:drop-shadow(0 .8vmin .8vmin rgba(60,30,10,.25))}
#s-feed .pt-grass,#s-feed .pt-spot{pointer-events:auto;touch-action:none;cursor:pointer;animation:pop-in .45s backwards}
#s-feed .pt-grass.pt-tried img{filter:brightness(.85) drop-shadow(0 .8vmin .8vmin rgba(60,30,10,.25))}
#s-feed .pt-sc.want img{filter:drop-shadow(0 0 2.4vmin rgba(255,220,60,.95))}
#s-feed .pt-box,#s-feed .pt-basin,#s-feed .pt-puddle{animation:pop-in .45s backwards}
#s-feed .pt-it.pt-floor{background:none;box-shadow:none;border-radius:0}
#s-feed .pt-it.pt-floor img{width:100%;height:100%;filter:drop-shadow(0 .8vmin .6vmin rgba(60,30,10,.3))}
#s-feed .pt-put{position:absolute;pointer-events:none;filter:drop-shadow(0 .4vmin .4vmin rgba(0,0,0,.25))}
#s-feed .pt-pet.pt-nowear .pt-wear,#s-feed .pt-pet.pt-hat .pt-hbow{display:none!important}
#s-feed .pt-put.pt-hot{animation:feed-hot .5s ease-in-out 4;filter:drop-shadow(0 0 1.6vmin rgba(255,60,60,.95))}
@keyframes feed-hot{50%{scale:1.15}}
#s-feed .pt-mud{position:absolute;translate:-50% -50%;pointer-events:none;transition:opacity .2s}
#s-feed .pt-mud svg{width:100%;height:auto;display:block}
#s-feed .pt-mud.gone{opacity:0!important;scale:.4;transition:opacity .35s,scale .35s}
#s-feed .pt-step svg{width:72%;height:72%}
/* погода: дождь, снег, жаркое солнце поверх сцены */
#s-feed .pt-wx{position:absolute;inset:0;z-index:5;pointer-events:none;display:none;overflow:hidden}
#s-feed .pt-wx.rain,#s-feed .pt-wx.snow,#s-feed .pt-wx.sun{display:block}
#s-feed .pt-wx.rain{background:rgba(40,60,110,.3)}
#s-feed .pt-wx i{position:absolute;inset:0;background-size:120px 120px;animation:feed-fall .55s linear infinite}
#s-feed .pt-wx.rain i{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cg stroke='%23dcefff' stroke-width='3' stroke-linecap='round' opacity='.9'%3E%3Cpath d='M12 8l-1 18'/%3E%3Cpath d='M62 38l-1 18'/%3E%3Cpath d='M104 78l-1 18'/%3E%3Cpath d='M36 84l-1 18'/%3E%3Cpath d='M88 4l-1 18'/%3E%3C/g%3E%3C/svg%3E")}
#s-feed .pt-wx.snow i{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cg fill='%23fff' opacity='.95'%3E%3Ccircle cx='14' cy='12' r='4'/%3E%3Ccircle cx='70' cy='44' r='3'/%3E%3Ccircle cx='104' cy='86' r='5'/%3E%3Ccircle cx='40' cy='92' r='3.5'/%3E%3Ccircle cx='92' cy='14' r='3'/%3E%3C/g%3E%3C/svg%3E");animation-duration:5s}
#s-feed .pt-wx i:nth-child(2){background-size:170px 170px;animation-name:feed-fall2;animation-duration:.8s;opacity:.7}
#s-feed .pt-wx i:nth-child(3){background-size:230px 230px;animation-name:feed-fall3;animation-duration:1.1s;opacity:.5}
#s-feed .pt-wx.snow i:nth-child(2){animation-duration:7s}
#s-feed .pt-wx.snow i:nth-child(3){animation-duration:9s}
@keyframes feed-fall{from{background-position:0 0}to{background-position:0 120px}}
@keyframes feed-fall2{from{background-position:0 0}to{background-position:0 170px}}
@keyframes feed-fall3{from{background-position:0 0}to{background-position:0 230px}}
#s-feed .pt-wx.sun{background:radial-gradient(circle at 88% 10%,rgba(255,232,120,.6),rgba(255,200,80,.16) 38%,transparent 62%)}
#s-feed .pt-wxsun{position:absolute;right:3vmin;top:3vmin;width:22vmin;animation:feed-sun 8s linear infinite}
@keyframes feed-sun{to{rotate:360deg}}
#s-feed.pt-swap .pt-spot,#s-feed.pt-swap .pt-pet{transition:left .9s ease-in-out,top .9s ease-in-out,width .9s,height .9s}
#s-feed .pt-grass{transform-origin:50% 100%;animation:pop-in .45s backwards,feed-sway 2.6s ease-in-out .5s infinite alternate}
@keyframes feed-sway{from{rotate:-2deg}to{rotate:2deg}}
#s-feed .pt-peekball{position:absolute;left:30%;top:48%;width:36%!important;height:auto!important;filter:none!important;rotate:-12deg}
#s-feed .pt-grass img:last-child{position:relative}

/* ---------- feed polish 14.10: game feel (classes fp-*; transform/opacity only) ---------- */
.fp-p{position:fixed;z-index:980;pointer-events:none;border-radius:50%}
.fp-p.star{border-radius:0;clip-path:polygon(50% 0,62% 36%,100% 38%,70% 60%,80% 96%,50% 74%,20% 96%,30% 60%,0 38%,38% 36%)}
.fp-p.txt{background:none!important;font-weight:900;line-height:1;text-shadow:0 .3vmin .3vmin rgba(0,0,0,.2)}
.fp-ring{position:fixed;z-index:979;pointer-events:none;border-radius:50%;border:max(3px,.8vmin) solid #ffe14d;box-shadow:0 0 1.6vmin rgba(255,255,255,.8)}
.fp-plus{position:fixed;z-index:981;pointer-events:none;font:900 min(9vmin,56px)/1 "Arial Black",Arial,sans-serif;color:#fff7b0;-webkit-text-stroke:max(2px,.7vmin) #ff8a1f;paint-order:stroke fill;text-shadow:0 .6vmin 0 #c96500}
/* soft halo behind the pet (the hero is easy to find) */
#s-feed .fp-aura{position:absolute;left:-8%;right:-8%;top:0;bottom:-4%;pointer-events:none;border-radius:50%;opacity:.4;background:radial-gradient(closest-side,rgba(255,244,190,.9),rgba(255,206,236,.4) 58%,rgba(255,255,255,0) 100%);animation:fp-aura 3.4s ease-in-out infinite}
@keyframes fp-aura{50%{scale:1.06;opacity:.55}}
#s-feed .pt-pet.want .fp-aura{opacity:.85}
/* overlays: the background pulse, the rainbow band, the flash, light motes */
#s-feed .fp-flash,#s-feed .fp-glow,#s-feed .fp-rainbow{position:absolute;inset:0;pointer-events:none;opacity:0}
#s-feed .fp-flash{z-index:10;background:#fff}
#s-feed .fp-glow{z-index:1;background:radial-gradient(circle at 50% 55%,var(--gc,rgba(255,232,140,.9)),rgba(255,255,255,0) 64%)}
#s-feed .fp-rainbow{z-index:1;left:0;right:auto;width:200%;background:linear-gradient(90deg,#ff5b6e,#ffc531,#4fc36b,#3fa3ff,#b26cff,#ff8fc8,#ff5b6e,#ffc531,#4fc36b,#3fa3ff,#b26cff,#ff8fc8,#ff5b6e)}
#s-feed .fp-motes{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden}
#s-feed .fp-motes i{position:absolute;width:1.6vmin;height:1.6vmin;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.95),rgba(255,247,200,.35) 55%,rgba(255,255,255,0) 72%);scale:var(--s);opacity:0;animation:fp-mote 12s ease-in-out infinite}
@keyframes fp-mote{0%{opacity:0;translate:0 0}25%{opacity:.8}75%{opacity:.6}100%{opacity:0;translate:4vmin -14vmin}}
@keyframes fp-mote2{0%{opacity:0;translate:0 0}25%{opacity:.8}75%{opacity:.6}100%{opacity:0;translate:-4vmin -14vmin}}
/* streak sign (a picture of the words; only the voice that already exists) */
#s-feed .fp-banner{position:absolute;left:62%;top:calc(env(safe-area-inset-top) + 3vmin);z-index:11;pointer-events:none;white-space:nowrap;font:900 min(10vmin,60px)/1 "Arial Black",Arial,sans-serif;color:#fff;letter-spacing:.02em;
  -webkit-text-stroke:max(3px,.9vmin) #e0559c;paint-order:stroke fill;text-shadow:0 .9vmin 0 #a83a72,0 1.4vmin 2.4vmin rgba(0,0,0,.3);opacity:0}
#s-feed .fp-banner.rec{top:calc(env(safe-area-inset-top) + min(14vmin,84px));font-size:min(7.5vmin,44px);color:#fff7b0;-webkit-text-stroke-color:#ff9f1c;text-shadow:0 .7vmin 0 #c96500,0 1.2vmin 2vmin rgba(0,0,0,.3)}
/* things, cards and buttons press in and spring back */
#s-feed .pt-it:not(.used),#s-feed .pt-step{transition:scale .22s cubic-bezier(.34,1.56,.64,1)}
#s-feed .pt-card{transition:scale .22s cubic-bezier(.34,1.56,.64,1),opacity .5s}
#s-feed .pt-it:not(.used):not(.held):active,#s-feed .pt-card:active{scale:.9}
#s-feed .pt-step.cur{transition:scale .35s cubic-bezier(.34,1.56,.64,1)}
#s-feed .pt-step.done{animation:fp-card .55s cubic-bezier(.34,1.56,.64,1)}
@keyframes fp-card{40%{rotate:-4deg;translate:0 -8%}}
#s-feed .pt-step.done i{animation:fp-check .55s cubic-bezier(.34,1.8,.5,1)}
@keyframes fp-check{from{scale:0;rotate:-40deg}}
#s-feed .pt-guest{transform-origin:50% 100%}
/* the thought cloud floats gently */
#s-feed .pt-think.show:not(.pulse) .pt-tk{animation:fp-bob 3.2s ease-in-out infinite}
@keyframes fp-bob{50%{translate:0 -3%}}
@media (prefers-reduced-motion:reduce){#s-feed .fp-aura,#s-feed .fp-motes{animation:none;display:none}#s-feed .pt-think.show .pt-tk{animation:none}}
/* ---------- end feed polish 14.10 ---------- */
