/* игра «Цифры» (numbers): стили только этой игры. Селекторы без #s-numbers действуют на всю страницу — новые правила пишите через #s-numbers. */
.num-stage{position:absolute;inset:0;z-index:3;display:flex;align-items:center;justify-content:center;gap:5vmin;padding:16vmin 4vmin 4vmin}
.num-stage{flex-direction:column;gap:4vmin}
.num-stage.count .tile{width:20vmin;height:20vmin;font-size:14vmin;border-radius:5vmin}
#s-numbers .bg{object-position:50% 0}

/* ---------- numbers v5: a new place on every level, the family helper counts along ---------- */
#s-numbers .bg{transition:opacity .26s}
#s-numbers .bg.swap{opacity:0}
#num-stage{padding:calc(14vmin + env(safe-area-inset-top)) calc(3vmin + env(safe-area-inset-right)) calc(3vmin + env(safe-area-inset-bottom)) calc(4vmin + env(safe-area-inset-left));gap:2.4vmin;justify-content:center}
#s-numbers.has-helper #num-stage{padding-left:calc(27vmin + env(safe-area-inset-left))}
#num-stage .n-play{position:relative;flex:0 0 auto;width:100%;height:100%;display:flex;align-items:center;justify-content:center;gap:4vmin}
#num-stage.t-count .n-play,#num-stage.t-family .n-play,#num-stage.t-fingers .n-play,#num-stage.t-seq .n-play,#num-stage.t-match .n-play{height:calc(100% - 24vmin)}
#num-stage .n-ans{flex:0 0 auto;height:21.6vmin;gap:4vmin;flex-wrap:nowrap}
#num-stage .n-ans .tile{width:19vmin;height:19vmin;font-size:13.5vmin;border-radius:5vmin;border-width:1.1vmin;box-shadow:0 1.1vmin 0 var(--c),0 1.6vmin 2.4vmin rgba(0,0,0,.22)}
#num-stage .n-ans .tile.good{box-shadow:0 0 0 1.2vmin #6be06b,0 1.6vmin 2.4vmin rgba(0,0,0,.22)}
#num-stage .thing{position:absolute;width:20vmin;height:20vmin;animation:pop-in .4s backwards}
#num-stage .thing b{right:-4%;top:-4%;width:42%;height:42%;max-width:9vmin;max-height:9vmin;min-width:6vmin;min-height:6vmin;font-size:min(6vmin,30px);border-width:.5vmin}
#num-stage .thing.cnt img{filter:drop-shadow(0 0 1.2vmin #fff6a8) drop-shadow(0 .8vmin .6vmin rgba(0,0,0,.25))}
#num-stage .thing.fade,#num-stage .n-heap.fade{opacity:.3;transition:opacity .4s}
/* places */
.look-tree .n-treebox{position:relative}
.look-tree .n-treebox>img{width:100%;height:100%;display:block;filter:drop-shadow(0 1vmin 1vmin rgba(0,0,0,.2))}
.look-tree .n-in{position:absolute;left:7%;top:4%;width:86%;height:56%}
.look-tray .n-traybox{position:relative}
.look-tray .n-traybox>img{width:100%;height:100%;display:block}
.look-tray .n-traybox.rot>img{position:absolute;left:50%;top:50%;height:calc(100% * 311 / 900);width:calc(100% * 900 / 311);translate:-50% -50%;rotate:90deg}
.look-tray .rot .n-in{left:12%;top:7%;width:76%;height:86%}
.look-tray .n-in{position:absolute;left:8%;top:10%;width:84%;height:74%}
.look-swim .thing img{animation:nswim 3.4s ease-in-out infinite;animation-delay:var(--d,0s)}
@keyframes nswim{25%{rotate:-7deg;translate:-1.4vmin .6vmin}75%{rotate:7deg;translate:1.4vmin -.6vmin}}
.look-float .thing img,.look-sky .thing img{animation:floaty 2.6s ease-in-out infinite;animation-delay:var(--d,0s)}
.look-sky .thing img{filter:drop-shadow(0 0 1.4vmin rgba(255,230,120,.9))}
.look-family .thing.fam img{border-radius:50%;background:radial-gradient(circle at 50% 35%,#fff7e0,#ffc9a0);border:.8vmin solid #fff;box-shadow:0 .7vmin 0 #e89a5c,0 1vmin 2vmin rgba(0,0,0,.25);object-fit:cover;object-position:50% 0;filter:none}
.look-family .thing.fam.cnt img{box-shadow:0 .7vmin 0 #e89a5c,0 0 0 1.2vmin #ffd23f}
/* put as many as written */
.look-put{flex-wrap:nowrap}
.n-card{flex:0 0 auto;width:24vmin!important;height:24vmin!important;font-size:17vmin!important;animation:pop-in .45s backwards,pulse 1.8s 1s ease-in-out 3}
.n-boxwrap{flex:1 1 0;min-width:0;height:100%;max-width:70vmin;display:flex;align-items:center;justify-content:center}
.n-box{position:relative;flex:0 0 auto}
.n-box .n-boxpic{width:100%;height:100%;display:block;filter:drop-shadow(0 1vmin 1vmin rgba(0,0,0,.2))}
.n-box .n-in{position:absolute;display:flex;flex-wrap:wrap;justify-content:center;align-content:flex-end;gap:.6vmin;pointer-events:none}
#num-stage .n-box .thing.in{position:relative;width:19%;height:auto;aspect-ratio:1;animation:pop-in .35s backwards}
.n-box .thing.in b{display:none}
.b-korzinka .n-in{left:16%;right:16%;top:36%;height:26%}
.b-protiven .n-in{left:9%;right:9%;top:12%;bottom:16%;align-content:center}
#num-stage .b-protiven .thing.in{width:17%}
.b-tort .n-in{left:20%;right:20%;bottom:71%;height:30%;align-content:flex-end;gap:0 1%}
#num-stage .b-tort .thing.in{width:11%;aspect-ratio:.3}
.b-tort .thing.in.lit img{filter:drop-shadow(0 0 1.2vmin #ffcf4a) drop-shadow(0 0 2.4vmin #ff9f1c)}
.n-pile{flex:0 0 auto;display:grid;grid-template-columns:repeat(2,14vmin);gap:1.4vmin;align-content:center;justify-content:center;padding:1.6vmin;border-radius:5vmin;background:rgba(255,255,255,.55);box-shadow:inset 0 0 0 .6vmin rgba(255,255,255,.8)}
#num-stage .n-pile .thing{position:relative;width:14vmin;height:14vmin}
.n-pile .thing.gone{visibility:hidden}
.n-ghost{width:15vmin;height:15vmin;object-fit:contain}
.tile.n-ghost.tile-ghost{width:19vmin;height:19vmin;font-size:13.5vmin}
/* more / less: two heaps */
.look-two{gap:5vmin}
.n-heap{position:relative;flex:1 1 0;height:100%;max-width:70vmin;border-radius:6vmin;background:rgba(255,255,255,.5);box-shadow:inset 0 0 0 .8vmin rgba(255,255,255,.85),0 1vmin 2.4vmin rgba(0,0,0,.12);transition:box-shadow .3s}
.n-heap.good{box-shadow:inset 0 0 0 .8vmin rgba(255,255,255,.85),0 0 0 1.4vmin #6be06b}
.n-heap.bad{animation:shake .45s}
.n-heap .thing{pointer-events:none}
/* the train */
.look-train{overflow:visible}
.n-train{display:flex;align-items:flex-end;gap:.6vmin;--w:min(28vmin,calc((100vw - 40vmin) / (var(--k,4) + 1.7)))}
.n-car{position:relative;width:var(--w);animation:pop-in .4s backwards}
.n-car>img,.n-loco>img{width:100%;display:block}
.n-loco{width:calc(var(--w) * 1.35);animation:pop-in .4s backwards}
.n-num{position:absolute;left:50%;bottom:62%;width:calc(var(--w) * .82);height:calc(var(--w) * .82);translate:-50% 0;border-radius:50%;background:#fff;box-shadow:0 .6vmin 0 rgba(0,0,0,.15),0 0 0 .7vmin rgba(255,255,255,.6);display:flex;align-items:center;justify-content:center;font-weight:900;font-size:calc(var(--w) * .58);line-height:1;font-family:"Arial Black","Arial Rounded MT Bold","Nunito",Arial,sans-serif}
.n-car.miss .n-num{color:#b9a58a!important;background:#fff8e6;outline:.6vmin dashed #e0a800;animation:pulse 1.2s ease-in-out infinite}
.n-car.fill .n-num{color:#35b955!important;outline:none;animation:goodt .6s}
.n-train.things{gap:2vmin}
.n-train.things .n-car>img{height:var(--w);object-fit:contain}
.n-train.things .n-car{display:flex;flex-direction:column-reverse;align-items:center;gap:1.4vmin}
.n-train.things .n-num{position:static;translate:none;flex:0 0 auto}
.n-train.go{transition:translate 2.4s cubic-bezier(.5,0,.8,.4);translate:130vw 0}
/* steps for the bunny */
.n-stairs{position:relative;height:100%;width:min(100%,calc(var(--k) * 15vmin + 18vmin));display:flex;align-items:flex-end}
.n-step{flex:1 1 0;height:calc(14% + var(--i) / var(--k) * 52%);margin:0 .4vmin;border-radius:3vmin 3vmin 0 0;background:var(--c);box-shadow:inset 0 1.4vmin 0 rgba(255,255,255,.45),inset 0 -1vmin 0 rgba(0,0,0,.12),0 1vmin 1.6vmin rgba(0,0,0,.18);display:flex;align-items:flex-start;justify-content:center;padding-top:3%;color:#fff;font-weight:900;font-size:min(10vmin,calc(70vw / var(--k) / 1.6));font-family:"Arial Black","Arial Rounded MT Bold","Nunito",Arial,sans-serif;text-shadow:0 .4vmin 0 rgba(0,0,0,.2);line-height:1;padding-top:calc(14% / var(--k) + 2vmin);animation:pop-in .4s backwards;animation-delay:calc(var(--i) * .06s)}
.n-step.on{filter:brightness(1.1);box-shadow:inset 0 -1vmin 0 rgba(0,0,0,.12),0 0 0 .8vmin #ffd23f}
.n-step.hint{animation:pulse .45s 2}
.n-bunny,.n-goal{position:absolute;width:calc(100% / (var(--k) + 1) * .95);max-width:18vmin;aspect-ratio:1;translate:-50% 0;pointer-events:none}
.n-bunny{--i:0;left:calc((var(--i) + .5) * 100% / (var(--k) + 1));bottom:calc(var(--i) / var(--k) * 52% + 14% * min(var(--i), 1));transition:left .35s ease-out,bottom .35s cubic-bezier(.3,1.8,.6,1);z-index:2}
.n-bunny img,.n-goal img{width:100%;height:100%;object-fit:contain;object-position:50% 100%;display:block}
.n-bunny.jump img{animation:goodt .4s}
.n-goal{left:calc((var(--k) + .5) * 100% / (var(--k) + 1));bottom:66%;width:calc(100% / (var(--k) + 1) * .7);animation:floaty 1.6s ease-in-out infinite}
.n-goal.got{transition:scale .4s,opacity .4s;scale:0;opacity:0}
/* match numbers and pictures */
.n-mcard{position:relative;flex:0 1 auto;height:min(100%,44vmin,calc((100vw - 44vmin) / 3.4));aspect-ratio:1;border-radius:5vmin;background:#fff;box-shadow:0 1vmin 0 #e8dcc8,0 1.4vmin 2.4vmin rgba(0,0,0,.18);animation:pop-in .4s backwards}
.n-min{position:absolute;inset:8%}
.n-mcard .thing{pointer-events:none}
.n-mcard.bad{animation:shake .45s}
.n-mcard.ok{box-shadow:0 1vmin 0 #e8dcc8,0 0 0 1.2vmin #6be06b}
.n-mnum{position:absolute;right:-3vmin;top:-3vmin;width:12vmin;height:12vmin;border-radius:50%;background:#fff;box-shadow:0 .6vmin 1.4vmin rgba(0,0,0,.25),0 0 0 .7vmin #6be06b;display:flex;align-items:center;justify-content:center;font-weight:900;font-size:8.6vmin;font-family:"Arial Black","Arial Rounded MT Bold","Nunito",Arial,sans-serif;animation:pop-in .35s;z-index:2}
#num-stage .n-ans .tile.used{opacity:.2;pointer-events:none}
#num-stage .n-ans .tile.sel{translate:0 -2vmin;box-shadow:0 1.1vmin 0 var(--c),0 0 0 1.2vmin #ffd23f}
/* trace a number */
.n-glyph{height:100%;max-width:100%;aspect-ratio:112/132;overflow:visible;touch-action:none;filter:drop-shadow(0 1vmin 1.4vmin rgba(0,0,0,.18))}
.n-glyph .g-bed{fill:none;stroke:#fff;stroke-width:22;stroke-linecap:round;stroke-linejoin:round;opacity:.92}
.n-glyph .g-ink{fill:none;stroke-width:15;stroke-linecap:round;stroke-linejoin:round}
.n-glyph .g-dots circle{fill:#c9b79c}
.n-glyph .g-dots path{fill:#ffd23f;stroke:#e0a800;stroke-width:.6}
.n-glyph .g-dots .on{opacity:0;transition:opacity .2s}
.n-glyph .g-start{fill:#35b955;stroke:#fff;stroke-width:2.4;animation:pulse 1s ease-in-out infinite;transform-box:fill-box;transform-origin:50% 50%}
.look-trace.good .g-start{display:none}
.look-trace.good .n-glyph{animation:goodt .6s}
[data-scene="space"] .n-glyph .g-bed{stroke:#2c2a78;opacity:.75}
/* hands */
.look-hands{gap:2vmin}
.n-hand{height:100%;aspect-ratio:100/130;max-width:48%}
.n-hand.r{scale:-1 1}
.n-hand.r text{scale:-1 1;transform-box:fill-box;transform-origin:50% 50%}
.n-hand svg{width:100%;height:100%;overflow:visible;filter:drop-shadow(0 1vmin 1vmin rgba(0,0,0,.2))}
.n-hand .fg.up{cursor:pointer}
.n-hand .fg.cnt rect{fill:#ffe9a8}
.n-hand text{font:900 15px "Arial Black",Arial,sans-serif;text-anchor:middle;stroke:#fff;stroke-width:3.4px;paint-order:stroke}
/* show number: the things pop up below */
#num-stage.t-find{gap:3vmin}
#num-stage.t-find .n-ans .tile{width:24vmin;height:24vmin;font-size:17vmin}
#num-stage.t-find .n-ans{height:28vmin}
#num-stage.t-find .look-row{height:calc(100% - 32vmin)}
#num-stage .n-again{top:calc(2vmin + env(safe-area-inset-top))}
/* the helper sits in the bottom-left corner; in portrait the play area leaves room for her */
#s-numbers .helper{z-index:6}
@media (orientation:portrait){
  #num-stage,#s-numbers.has-helper #num-stage{padding:calc(16vmin + env(safe-area-inset-top)) 3vmin calc(3vmin + env(safe-area-inset-bottom)) 3vmin}
  #s-numbers.has-helper #num-stage{padding-bottom:calc(26vmin + env(safe-area-inset-bottom))}
  #s-numbers .helper{left:calc(3vw + env(safe-area-inset-left));bottom:calc(2.4vmin + env(safe-area-inset-bottom));width:21vmin;height:21vmin}
  .look-put{flex-direction:column;gap:2vmin}
  .look-put .n-card{width:17vmin!important;height:17vmin!important;font-size:12vmin!important}
  .n-boxwrap{width:100%;max-width:none;height:auto;flex:1 1 0;min-height:0}
  .n-pile{grid-template-columns:repeat(5,13vmin);padding:1.2vmin}
  .n-pile .thing{width:13vmin;height:13vmin}
  .look-two{flex-direction:column;gap:3vmin}
  .n-heap{width:100%;max-width:none;height:auto;min-height:0}
  .look-match{flex-direction:column;gap:3vmin}
  .n-mcard{height:calc((100% - 6vmin) / 3);width:auto;max-width:44vmin}
  .look-hands{flex-direction:row}
  .n-train{--w:min(24vmin,calc((100vw - 12vmin) / (var(--k,4) + 1.1)))}
  .n-loco{width:var(--w)}
  .n-num{width:var(--w);height:var(--w);font-size:calc(var(--w) * .68)}
}
/* ---------- end numbers v5 ---------- */
/* ---------- numbers QA 11.10: ground, stars badge, helper bubble ---------- */
/* the picture is anchored at the bottom in the places with a ground (landscape crops it; JS GROUND knows where the ground begins) */
#s-numbers[data-scene=pond] .bg,#s-numbers[data-scene=winter] .bg,#s-numbers[data-scene=toys] .bg,#s-numbers[data-scene=meadow] .bg,#s-numbers[data-scene=kitchen] .bg,#s-numbers[data-scene=party] .bg{object-position:50% 100%}
/* the field keeps its place when the answer tiles appear (it used to jump up by half a row) */
#num-stage.t-count,#num-stage.t-family,#num-stage.t-fingers,#num-stage.t-seq{justify-content:flex-start}
#num-stage .n-again{top:0;margin-bottom:1vmin}
/* the bubble of the helper is wide when it holds two pictures (put, match): the card must not hide under it */
#s-numbers.has-fam3d #num-stage.t-put,#s-numbers.has-fam3d #num-stage.t-match{padding-left:calc(58vmin + env(safe-area-inset-left))}
@media (orientation:portrait){
  /* the stars badge (core) is 32vmin from the top on the left: the rows of answers and the heaps start below it */
  #s-numbers #num-stage.t-find,#s-numbers #num-stage.t-compare,#s-numbers #num-stage.t-count,#s-numbers #num-stage.t-family,#s-numbers #num-stage.t-fingers{padding-top:calc(33vmin + env(safe-area-inset-top))}
  #s-numbers.has-fam3d #num-stage,#s-numbers.has-fam3d #num-stage.t-put,#s-numbers.has-fam3d #num-stage.t-match{padding-left:3vmin}
  /* the sky is too tall for a short phone: the picture is zoomed from the bottom, so the water / snow / floor / table begin higher and the things stand on them */
  #s-numbers[data-scene=pond] .bg{scale:1.42}
  #s-numbers[data-scene=winter] .bg{scale:1.5}
  #s-numbers[data-scene=meadow] .bg{scale:1.5}
  #s-numbers[data-scene=toys] .bg,#s-numbers[data-scene=kitchen] .bg,#s-numbers[data-scene=party] .bg{scale:1.6}
  #s-numbers[data-scene] .bg{transform-origin:50% 100%}
}
/* the first column of the stairs is for the bunny: a spacer, because a % padding counts the width of the parent (the stairs were 25 px wide on a wide screen) */
.n-stairs::before{content:'';flex:1 1 0;margin:0 .4vmin}
@media (orientation:portrait){
  /* four answers (level 8+) must fit the width: 24vmin tiles were 423 px in a row on a 390 px screen */
  #s-numbers #num-stage.t-find .n-ans .tile{width:min(24vmin,20vw);height:min(24vmin,20vw);font-size:min(17vmin,14vw)}
  #s-numbers #num-stage.t-find .n-ans{height:min(28vmin,24vw)}
}
@media (orientation:landscape){
  /* four answers must fit beside the helper on a wide, not very tall screen (1024x768, 1180x820) */
  #s-numbers #num-stage .n-ans .tile{width:min(19vmin,calc((100vw - 52vmin) / 4.8));height:min(19vmin,calc((100vw - 52vmin) / 4.8));font-size:min(13.5vmin,calc((100vw - 52vmin) / 6.8))}
  #s-numbers #num-stage.t-find .n-ans .tile{width:min(24vmin,calc((100vw - 52vmin) / 4.8));height:min(24vmin,calc((100vw - 52vmin) / 4.8));font-size:min(17vmin,calc((100vw - 52vmin) / 6.8))}
}
/* ---------- end numbers QA ---------- */

/* помощник из семьи: размер и место на экране этой игры (их читает общий .helper.fam3d в core/core.css).
   --hp-h = высота фигуры (доля высоты экрана), --hp-x = отступ слева, --hp-y = где стоят ноги (от низа) */
#s-numbers .helper.fam3d{--hp-h:42%;--hp-x:2.5vmin;--hp-y:1%}
/* крупная бабушка (42% высоты): ширина её тела ~0.72 высоты, игра отодвинута вправо (в альбомной высота экрана <= vmin) */
#s-numbers.has-fam3d #num-stage{padding-left:calc(46vmin + env(safe-area-inset-left))}
@media (orientation:portrait){#s-numbers .helper.fam3d{--hp-h:27%}
  /* игра кончается над её головой (с запасом на прыжок): bottom в % от высоты экрана — ровно по росту фигуры и на коротком Safari тоже */
  #s-numbers.has-fam3d #num-stage{bottom:calc(29.5% + env(safe-area-inset-bottom));padding-bottom:1.5vmin;padding-left:3vmin}
  }
/* крупная фигура прыгает ниже и чуть уменьшается в полёте (якорь у ног): ноги отрываются, а голова почти не поднимается и не заходит на плитки */
#s-numbers .helper.fam3d .hp-mv.jump{animation-name:num-hp-jump}
@keyframes num-hp-jump{0%{transform:translateY(0) scale(1.06,.9)}15%{transform:translateY(0) scale(.95,1.05)}50%{transform:translateY(-7.5%) scale(.92,.92)}82%{transform:translateY(0) scale(1.05,.93)}100%{transform:translateY(0) scale(1,1)}}

/* ---------- polish (15.10): feel layers — plan agents/polish/numbers_plan.md. Only transform/opacity; none of them takes a touch ---------- */
/* buttons, cards and things are pressed in and spring back */
#s-numbers .tile{transition:opacity .3s,scale .16s cubic-bezier(.34,1.5,.5,1)}
#s-numbers .tile:active{scale:.93}
#num-stage .thing{transition:scale .16s cubic-bezier(.34,1.5,.5,1)}
#num-stage .thing:active{scale:.9}
#num-stage .thing.fade,#num-stage .n-heap.fade{transition:opacity .4s,scale .16s}
#s-numbers .n-heap{transition:box-shadow .3s,scale .16s cubic-bezier(.34,1.5,.5,1)}
#s-numbers .n-heap:active{scale:.97}
#s-numbers .n-step{transition:scale .16s cubic-bezier(.34,1.5,.5,1)}
#s-numbers .n-step:active{scale:.94 .96}
#num-stage .n-again{transition:scale .16s cubic-bezier(.34,1.5,.5,1)}
#num-stage .n-again:active{scale:.9}
/* the bunny is stretched / squashed from its paws (js animates scale on the picture instead of the old flat pulse) */
#s-numbers .n-bunny img{transform-origin:50% 100%}
#s-numbers .n-bunny.jump img{animation:none}
/* the effect layer */
.num-fxl{position:absolute;inset:0;z-index:7;pointer-events:none;overflow:hidden}
.num-flash,.num-pulse,.num-veil{position:absolute;inset:0;opacity:0;pointer-events:none}
.num-flash{background:#fff}
.num-pulse{background:radial-gradient(circle at 50% 50%,transparent 25%,var(--pc,#ffe27a) 130%)}
.num-veil{background:#fff}
.num-ringfx{position:absolute;width:16vmin;height:16vmin;margin:-8vmin 0 0 -8vmin;border:1.1vmin solid #ffd23f;border-radius:50%;opacity:0;pointer-events:none}
.num-plus{position:absolute;font-weight:900;font-size:7vmin;line-height:1;text-shadow:0 0 .6vmin #fff,0 .4vmin 0 rgba(0,0,0,.2),-.3vmin 0 0 #fff,.3vmin 0 0 #fff;opacity:0;pointer-events:none;white-space:nowrap}
.num-say{position:absolute;left:calc(50% + 8vmin);top:calc(2vmin + env(safe-area-inset-top));z-index:2;font-weight:900;font-size:8vmin;color:#fff;-webkit-text-stroke:.9vmin #ff7a3d;paint-order:stroke fill;text-shadow:0 .8vmin 0 #c9531c,0 0 3vmin rgba(255,230,120,.9);white-space:nowrap;opacity:0;pointer-events:none}
.num-say.rec{-webkit-text-stroke-color:#b26cff;text-shadow:0 .8vmin 0 #6a3fb8,0 0 3vmin rgba(255,230,120,.9)}
/* the rainbow shimmer under the play field, for the end of a round */
.num-rb{position:absolute;inset:0;z-index:1;opacity:0;pointer-events:none;overflow:hidden}
.num-rb i{position:absolute;left:0;top:0;width:260%;height:100%;background:linear-gradient(100deg,#ff7b9c,#ffb347,#ffe86b,#7be08a,#5fc4ff,#b48cff,#ff7b9c,#ffb347,#ffe86b,#7be08a);display:block}
/* a living background: soft twinkling glints, clouds only where it is outdoors (no butterflies — see numbers.js) */
.num-glints{position:absolute;inset:0;z-index:1;pointer-events:none}
.num-glints i{position:absolute;width:2.2vmin;height:2.2vmin;margin:-1.1vmin;border-radius:50%;background:radial-gradient(circle,#fff 0 30%,rgba(255,255,255,0) 70%);box-shadow:0 0 2vmin 1vmin rgba(255,255,255,.5);opacity:0;animation:num-tw 3s ease-in-out infinite}
@keyframes num-tw{0%,100%{opacity:0;scale:.4}50%{opacity:.9;scale:1.1}}
#s-numbers[data-scene=kitchen] .amb,#s-numbers[data-scene=space] .amb,#s-numbers[data-scene=party] .amb,#s-numbers[data-scene=toys] .amb{display:none}
/* the freeze frame: only the living background stops */
#s-numbers.num-hold .amb *,#s-numbers.num-hold .num-glints i,#s-numbers.num-hold .thing img{animation-play-state:paused}
@media (prefers-reduced-motion:reduce){.num-glints i{animation:none}#s-numbers .tile:active,#num-stage .thing:active,#s-numbers .n-heap:active,#s-numbers .n-step:active{scale:1}}
