/* Animated loading kitchen. All percentages are relative to the 941:1672 portrait art plate. */
#game-loader .kitchen{position:absolute;inset:0;overflow:hidden;pointer-events:none;background:#1a1726;isolation:isolate}
#game-loader .k-stage{position:absolute;z-index:2;left:50%;top:50%;width:max(100vw,56.28vh);aspect-ratio:941/1672;transform:translate3d(-50%,-50%,0) scale(1);transform-origin:50% 35%;will-change:transform,opacity;backface-visibility:hidden;contain:paint}
#game-loader .k-plate,#game-loader .k-clouds,#game-loader .k-warm,#game-loader .k-motes,#game-loader .k-bloom{position:absolute;inset:0}
#game-loader .k-plate{background:url('kitchen_night.webp') center/100% 100% no-repeat}
#game-loader .k-clouds{z-index:2;opacity:.22;clip-path:polygon(49% 16%,65% 20%,71% 29%,70% 45%,35% 45%,33% 28%,40% 19%);background:radial-gradient(ellipse 12% 3% at 45% 29%,#fce9e866,transparent),radial-gradient(ellipse 12% 3% at 66% 35%,#e8eeff77,transparent);animation:k-cloud-drift 13s ease-in-out infinite alternate}
#game-loader .k-lamp{position:absolute;z-index:3;width:15%;height:9%;border-radius:50%;transform:translate(-50%,-50%);opacity:0;mix-blend-mode:screen;background:radial-gradient(ellipse,#fff5c2 0%,#ffbd7eaa 32%,#ff829344 65%,transparent 76%);filter:blur(5px);box-shadow:0 0 34px 13px #ffb47488}
#game-loader .k-lamp:after{content:'';position:absolute;left:-85%;top:35%;width:270%;height:400%;background:radial-gradient(ellipse at 50% 0%,#ffd39a66,transparent 67%);filter:blur(14px)}
#game-loader .k-lamp.a{left:20%;top:20%;animation:k-lamp-on 1.05s .45s both}
#game-loader .k-lamp.b{left:51%;top:10%;width:11%;height:7%;animation:k-lamp-on 1.05s 1.45s both}
#game-loader .k-lamp.c{left:84%;top:20%;animation:k-lamp-on 1.05s 2.45s both}
#game-loader .k-warm{z-index:3;pointer-events:none;opacity:0;mix-blend-mode:screen;background:radial-gradient(ellipse 36% 37% at 19% 26%,#ffad7566,transparent),radial-gradient(ellipse 36% 36% at 83% 27%,#ffad7566,transparent),radial-gradient(ellipse 50% 31% at 50% 19%,#ffdea84d,transparent);animation:k-warm-on 1.5s 2.65s both}
#game-loader .k-oven{position:absolute;z-index:4;left:-5%;top:72%;width:19%;height:15%;border-radius:50%;background:radial-gradient(ellipse,#ffab4788,#ff67252e 42%,transparent 72%);mix-blend-mode:screen;filter:blur(9px);animation:k-oven-flicker 2.1s ease-in-out infinite alternate}
#game-loader .k-steam{position:absolute;z-index:5;left:10%;top:45%;width:16%;height:17%;opacity:0;animation:k-steam-awake 1s 1.8s both}
#game-loader .k-steam i{position:absolute;left:var(--sx);bottom:0;width:24%;height:60%;border-left:3px solid #fff7e777;border-radius:50%;filter:blur(5px);opacity:0;animation:k-steam-rise 3.2s ease-out var(--delay) infinite}
#game-loader .k-curtain{position:absolute;z-index:5;top:26%;width:9%;height:24%;background:linear-gradient(90deg,transparent,#f6bbc225,transparent);filter:blur(4px);transform-origin:top center;animation:k-curtain-sway 5.6s ease-in-out infinite alternate}
#game-loader .k-curtain.left{left:27%}#game-loader .k-curtain.right{right:26%;animation-delay:-2.8s}
#game-loader .k-jar-glint{position:absolute;z-index:6;left:85%;top:45%;width:10%;height:17%;background:linear-gradient(115deg,transparent 28%,#fff8e077 49%,transparent 62%);opacity:0;transform:translateX(-60%);animation:k-jar-shine 7s 3.2s ease-in-out infinite}
#game-loader .k-motes{z-index:6;pointer-events:none;opacity:0;background:radial-gradient(circle at 18% 63%,#fff4c9 0 1px,transparent 3px),radial-gradient(circle at 38% 54%,#fff2d8 0 1.4px,transparent 3px),radial-gradient(circle at 72% 66%,#ffe6bd 0 1.3px,transparent 3px),radial-gradient(circle at 81% 42%,#fff2d3 0 1px,transparent 3px);background-size:79px 91px,109px 133px,131px 87px,97px 121px;animation:k-motes-float 8s 2.8s linear infinite}
#game-loader .k-bloom{z-index:7;opacity:0;background:radial-gradient(ellipse 31% 24% at 51% 35%,#d5c7ff55,transparent 72%);mix-blend-mode:screen;pointer-events:none}
#game-loader .k-shade{position:absolute;z-index:8;inset:0;background:linear-gradient(transparent 60%,#20132665);pointer-events:none}
#game-loader .card{z-index:9;align-self:flex-end;margin-bottom:max(7vh,env(safe-area-inset-bottom));padding:18px 22px;border-radius:14px;background:#211927a8;backdrop-filter:blur(12px);border:1px solid #ffffff12}
#entry-skip{display:none;position:absolute;z-index:10;right:18px;top:max(20px,env(safe-area-inset-top));border:1px solid #ffe9c488;border-radius:20px;padding:9px 14px;background:#2e1b36ba;color:#fff4e6;font:600 13px system-ui;cursor:pointer}
#game-loader.opening #entry-skip{display:block}
#game-loader .track:after{display:none}
@keyframes entry-track-sweep{from{transform:translateX(-110%)}to{transform:translateX(330%)}}
@keyframes k-lamp-on{0%{opacity:0;filter:blur(7px)}18%{opacity:.76}30%{opacity:.2}48%{opacity:.92}65%{opacity:.56}100%{opacity:.85;filter:blur(4px)}}
@keyframes k-warm-on{from{opacity:0}to{opacity:.9}}
@keyframes k-cloud-drift{from{transform:translateX(-3%)}to{transform:translateX(3%)}}
@keyframes k-oven-flicker{from{opacity:.35;transform:scale(.9)}to{opacity:.85;transform:scale(1.15)}}
@keyframes k-steam-awake{from{opacity:0}to{opacity:1}}
@keyframes k-steam-rise{0%{opacity:0;transform:translate(0,15%) scale(.6)}17%{opacity:.45}75%{opacity:.33}100%{opacity:0;transform:translate(55%,-80%) scale(1.4)}}
@keyframes k-curtain-sway{from{transform:skewX(-2deg) translateX(-1%)}to{transform:skewX(3deg) translateX(2%)}}
@keyframes k-jar-shine{0%,65%,100%{opacity:0;transform:translateX(-60%)}74%{opacity:.6}86%{opacity:0;transform:translateX(90%)}}
@keyframes k-motes-float{0%{opacity:0;transform:translateY(15px)}15%{opacity:.65}85%{opacity:.65}100%{opacity:0;transform:translateY(-36px)}}
/* Sunrise fills the kitchen window, then the light reveals the full city. */
#game-loader .k-world{position:absolute;z-index:1;inset:0;overflow:hidden;opacity:0;pointer-events:none}
#game-loader .k-city,#game-loader .k-flowers{position:absolute;inset:0;background-position:center;background-size:cover;background-repeat:no-repeat;will-change:transform,opacity}
#game-loader .k-city{background-image:url('city.webp');transform:scale(1.08)}
#game-loader .k-flowers{background-image:url('foreground.webp');opacity:0;transform:scale(1.13)}
#game-loader .k-petals{position:absolute;inset:0;opacity:0;overflow:hidden}
#game-loader .k-petals i{position:absolute;left:var(--x);top:-8%;width:clamp(16px,5vw,36px);height:clamp(16px,5vw,36px);background:url('../procedural_replacements/sakura_petal.png') center/contain no-repeat;animation:k-petal-fall var(--speed) linear var(--delay) infinite;will-change:transform}
#game-loader .k-petals i:nth-child(1){--x:5%;--speed:4.1s;--delay:-2s}
#game-loader .k-petals i:nth-child(2){--x:18%;--speed:5.2s;--delay:-.4s}
#game-loader .k-petals i:nth-child(3){--x:31%;--speed:4.7s;--delay:-3s}
#game-loader .k-petals i:nth-child(4){--x:46%;--speed:5.6s;--delay:-1s}
#game-loader .k-petals i:nth-child(5){--x:59%;--speed:4.4s;--delay:-2.8s}
#game-loader .k-petals i:nth-child(6){--x:72%;--speed:5.1s;--delay:-1.7s}
#game-loader .k-petals i:nth-child(7){--x:85%;--speed:4.8s;--delay:-3.9s}
#game-loader .k-petals i:nth-child(8){--x:96%;--speed:5.4s;--delay:-.9s}
#game-loader .k-transition-light,#game-loader .k-menu-light{position:absolute;inset:0;pointer-events:none;opacity:0;will-change:opacity}
#game-loader .k-transition-light{z-index:3;background:radial-gradient(circle at 50% 35%,#fff 0%,#fff9e1 17%,#ffe1aa 48%,#fff6e8 100%)}
#game-loader .k-menu-light{z-index:4;background:#fffaf0}
#game-loader.opening .card{animation:k-card-out .4s ease .4s both}
#game-loader.opening .k-bloom{background:radial-gradient(ellipse 30% 23% at 50% 35%,#fff 0%,#fff1a9aa 29%,#ffca7755 56%,transparent 78%);animation:k-window-light 9.4s ease-in-out both}
#game-loader.opening .k-stage{animation:k-kitchen-out 9.4s ease-in-out both}
#game-loader.opening .k-world{animation:k-world-in 9.4s linear both}
#game-loader.opening .k-city{animation:k-city-move 9.4s ease-out both}
#game-loader.opening .k-flowers{animation:k-flowers-in 9.4s ease-out both}
#game-loader.opening .k-petals{animation:k-petals-in 9.4s ease both}
#game-loader.opening .k-transition-light{animation:k-window-flash 9.4s ease-in-out both}
#game-loader.opening .k-menu-light{animation:k-menu-flash 9.4s ease-in both}
/* Keep the room still while the sunrise moves through the window. */
#game-loader.opening .k-lamp,#game-loader.opening .k-warm{animation:none;opacity:.85;filter:none}
#game-loader.opening .k-clouds,#game-loader.opening .k-oven,#game-loader.opening .k-steam,#game-loader.opening .k-curtain,#game-loader.opening .k-jar-glint,#game-loader.opening .k-motes{animation:none;opacity:0}
@keyframes k-card-out{to{opacity:0;transform:translateY(18px)}}
@keyframes k-window-light{0%,24%{opacity:0}40%{opacity:.3}51%,57%{opacity:.9}64%,100%{opacity:0}}
@keyframes k-kitchen-out{0%,56%{opacity:1}63%,100%{opacity:0}}
@keyframes k-window-flash{0%,48%{opacity:0}54%{opacity:.82}59%,63%{opacity:1}73%,100%{opacity:0}}
@keyframes k-world-in{0%,56%{opacity:0}62%,100%{opacity:1}}
@keyframes k-city-move{0%,58%{transform:scale(1.08)}100%{transform:scale(1)}}
@keyframes k-flowers-in{0%,62%{opacity:0;transform:scale(1.13)}74%{opacity:1}100%{opacity:1;transform:scale(1.02)}}
@keyframes k-petals-in{0%,64%{opacity:0}74%,100%{opacity:1}}
@keyframes k-petal-fall{from{transform:translate3d(-18px,-10vh,0) rotate(-35deg)}to{transform:translate3d(45px,115vh,0) rotate(380deg)}}
@keyframes k-menu-flash{0%,88%{opacity:0}100%{opacity:1}}
#game-loader.loading-mode .k-lamp,#game-loader.loading-mode .k-warm{animation:none;opacity:.85}
@media(prefers-reduced-motion:reduce){
  #game-loader .k-lamp,#game-loader .k-warm{animation:none;opacity:.75}
  #game-loader .k-steam,#game-loader .k-motes,#game-loader .k-clouds,#game-loader .k-oven,#game-loader .k-curtain,#game-loader .k-jar-glint,#game-loader .track:after{animation:none;opacity:0}
  #game-loader.opening .k-stage{animation:k-reduced-out .18s ease both}
  #game-loader.opening .k-world,#game-loader.opening .k-city,#game-loader.opening .k-flowers,#game-loader.opening .k-petals,#game-loader.opening .k-transition-light,#game-loader.opening .k-menu-light{animation:none;opacity:0}
  #game-loader.opening .k-bloom{animation:none;opacity:0}
  #game-loader.opening .card{animation:none;opacity:0}
}
@keyframes k-reduced-out{to{opacity:0}}
