:root{--fun: "Baloo 2", system-ui, -apple-system, "Segoe UI", sans-serif}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--fun);-webkit-font-smoothing:antialiased;overflow:hidden;background:#0b0b0e;color:#fff}.loading{position:fixed;inset:0;background:#0b0b0e}.board{width:100vw;height:100svh;display:grid;overflow:hidden;background:#0b0b0e}.board--empty{align-items:center;justify-content:center}.empty{color:#6b6b78;font-size:1.5rem;font-weight:700}.tile{position:relative;min-width:0;min-height:0;overflow:hidden;container-type:size;isolation:isolate;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(2px,1.5cqh,12px);padding:clamp(10px,4cqmin,22px);background:radial-gradient(120% 100% at 50% 20%,hsl(var(--hue) 70% 33%),hsl(var(--hue) 60% 11%) 74%),#0b0b0e;box-shadow:inset 0 0 0 1px #ffffff0f;transition:background 1s ease}.tile:after{content:"";position:absolute;inset:0;z-index:6;pointer-events:none;box-shadow:inset 0 0 clamp(30px,16cqmin,130px) #00000080}.tile__glow{position:absolute;left:50%;top:52%;width:120cqmin;height:120cqmin;transform:translate(-50%,-50%);border-radius:50%;z-index:0;pointer-events:none;background:radial-gradient(circle,hsl(var(--hue) 95% 58% / calc(.14 + var(--joy) * .26)),transparent 60%);filter:blur(22px);animation:breathe calc(7s - var(--joy) * 2s) ease-in-out infinite}.badge{position:relative;z-index:2;flex:0 0 auto;margin-bottom:clamp(6px,3cqh,20px)}.badge__ring{width:clamp(64px,38cqw,230px);height:clamp(64px,38cqw,230px);border-radius:50%;padding:clamp(3px,1.3cqw,7px);background:hsl(var(--accent) 85% 60%);box-shadow:0 12px 26px #00000073,0 0 0 3px #ffffff29,0 0 28px hsl(var(--accent) 90% 60% / .5)}.badge__img,.badge__mono{display:block;width:100%;height:100%;border-radius:50%;object-fit:cover;background:#14141a}.badge__mono{display:grid;place-items:center;font-weight:800;font-size:clamp(1.5rem,18cqw,5rem);color:#fff;letter-spacing:-.03em;background:radial-gradient(120% 120% at 30% 20%,hsl(var(--accent) 70% 46%),hsl(var(--accent) 65% 26%));text-shadow:0 2px 6px rgba(0,0,0,.4)}.bubble{position:absolute;top:-14%;right:-22%;display:grid;place-items:center;width:clamp(38px,21cqw,128px);height:clamp(38px,21cqw,128px);border-radius:50%;background:#fdfdff;box-shadow:0 8px 18px #00000059,inset 0 0 0 1px #0000000f;animation:bob 3s ease-in-out infinite}.bubble__emoji{font-size:clamp(1.25rem,13cqw,3.2rem);line-height:1;filter:drop-shadow(0 1px 1px rgba(0,0,0,.2))}.bubble__img{width:74%;height:74%;object-fit:contain;border-radius:20%}.bubble__dot{position:absolute;border-radius:50%;background:#fdfdff;box-shadow:inset 0 0 0 1px #0000000f}.bubble__dot--a{width:30%;height:30%;bottom:-12%;left:-4%}.bubble__dot--b{width:18%;height:18%;bottom:-30%;left:-18%}.status{position:relative;z-index:1;flex:0 0 auto;will-change:transform}.status__img{display:block;max-height:clamp(34px,14cqh,120px);max-width:clamp(44px,22cqw,160px);width:auto;height:auto;background:#fff;padding:clamp(3px,1cqmin,8px);border-radius:clamp(5px,1.6cqmin,12px);box-shadow:0 8px 20px #00000080,0 0 0 1px #0000000d;transform:rotate(-2.5deg);animation:statusIn .6s cubic-bezier(.2,1.45,.4,1) both}.feces{position:absolute;left:50%;top:50%;width:0;height:0;pointer-events:none;z-index:4}.poop{position:absolute;left:0;top:0;display:block;filter:drop-shadow(0 3px 5px rgba(0,0,0,.45));animation:hurl var(--dur) ease-out var(--delay) infinite}.poop svg{display:block;width:100%;height:100%}.readout{position:relative;z-index:1;flex:0 1 auto;display:flex;align-items:center;justify-content:center}.num{display:inline-block;white-space:nowrap;font-family:var(--fun);font-weight:800;font-size:clamp(3rem,64cqw,14rem);line-height:.74;letter-spacing:-.05em;color:#fff;font-variant-numeric:tabular-nums;text-shadow:0 3px 0 rgba(0,0,0,.16),0 12px 24px rgba(0,0,0,.42),0 0 50px hsl(var(--hue) 95% 62% / calc(.3 + var(--joy) * .5));transform-origin:center 60%}.num__dec{font-size:.32em;font-weight:800;color:#cfd6d4;letter-spacing:-.02em;text-shadow:0 2px 0 rgba(0,0,0,.18);margin-left:.04em}.num--up{animation:boing .62s cubic-bezier(.2,1.5,.3,1) both}.num--down{animation:thud .6s ease both}.floats{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:3}.float{position:absolute;font-weight:800;font-size:clamp(1.2rem,14cqw,3rem);animation:floatUp 1.6s cubic-bezier(.2,.8,.2,1) forwards}.float.up{color:#c2ff8a;text-shadow:0 0 18px #76ff3d,0 3px 0 rgba(0,0,0,.25)}.float.down{color:#ff9a9a;text-shadow:0 0 18px #ff4d4d,0 3px 0 rgba(0,0,0,.25);animation-name:floatDown}.burst{position:absolute;left:50%;top:50%;width:0;height:0;pointer-events:none;z-index:4}.spark{position:absolute;left:0;top:0;border-radius:2px;animation:spark 1.5s cubic-bezier(.15,.7,.3,1) forwards}.nameplate{position:relative;z-index:2;flex:0 0 auto;max-width:100%;text-align:center;padding:0 clamp(6px,3cqw,16px);margin-bottom:clamp(2px,1.5cqh,12px);display:flex;flex-direction:column;gap:1px}.nameplate__name{font-weight:800;font-size:clamp(1.15rem,10cqw,2.6rem);letter-spacing:-.02em;color:#fff;text-shadow:0 2px 8px rgba(0,0,0,.55)}.nameplate__change{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;max-width:100%;font-size:clamp(.95rem,6.6cqw,1.6rem);line-height:1.15;color:#ffffffe0;overflow:hidden}.nameplate__change b{font-weight:800}.nameplate__change b.up{color:#a6ff7a}.nameplate__change b.down{color:#ff9a9a}.nameplate__change .reason{color:#ffffffa8}.nameplate__change--idle{color:#fff6;font-style:italic}.weather{position:absolute;inset:0;z-index:4;pointer-events:none;overflow:hidden}.conf{position:absolute;top:0;border-radius:2px;animation:confFall var(--dur) linear var(--delay) infinite}.drop{position:absolute;top:0;width:2px;border-radius:2px;background:linear-gradient(transparent,#afcdffd9);animation:rainFall var(--dur) linear var(--delay) infinite}.flash{position:absolute;inset:0;z-index:5;pointer-events:none}.flash--up{background:radial-gradient(circle at 50% 50%,rgba(130,255,130,.5),transparent 62%);animation:flashUp .7s ease-out forwards}.flash--down{background:radial-gradient(circle at 50% 50%,rgba(255,70,70,.55),transparent 62%);animation:flashDown .7s steps(4,end) forwards}.tile.is-good .tile__glow,.tile.is-euphoric .tile__glow{animation:breathe 4s ease-in-out infinite,disco 6s linear infinite}.tile.is-stable .status{animation:statusSway 4s ease-in-out infinite}.tile.is-good .status{animation:statusHop 2.4s ease-in-out infinite}.tile.is-euphoric .status{animation:statusPrance calc(4.5s - var(--joy) * 2s) ease-in-out infinite}.tile.is-euphoric .status__img{animation:statusIn .6s cubic-bezier(.2,1.45,.4,1) both,imgWiggle calc(.9s - var(--joy) * .3s) ease-in-out infinite}.tile.is-unstable .status{animation:statusMad .25s linear infinite}.tile.is-meltdown .status{animation:statusRage .16s linear infinite;filter:drop-shadow(0 0 10px rgba(180,20,20,.55)) saturate(1.2)}.tile.is-meltdown{animation:quake .2s linear infinite}.tile.is-meltdown:before{content:"";position:absolute;inset:0;z-index:3;pointer-events:none;background:radial-gradient(circle at 50% 50%,transparent 30%,rgba(190,22,22,.34));mix-blend-mode:screen;animation:emergency 1.3s ease-in-out infinite}@keyframes breathe{0%,to{transform:translate(-50%,-50%) scale(1);opacity:.85}50%{transform:translate(-50%,-50%) scale(1.12);opacity:1}}@keyframes disco{to{filter:blur(22px) hue-rotate(360deg)}}@keyframes bob{0%,to{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-8%) rotate(2deg)}}@keyframes boing{0%{transform:scale(1) rotate(0)}22%{transform:scale(1.34) rotate(-3deg)}46%{transform:scale(.84) rotate(2deg)}68%{transform:scale(1.12) rotate(-1deg)}to{transform:scale(1) rotate(0)}}@keyframes thud{0%{transform:translateY(-14px) scale(1)}22%{transform:translateY(0) scale(1.16,.82)}40%{transform:scale(.94,1.06)}55%{transform:translate(-9px)}70%{transform:translate(9px)}84%{transform:translate(-5px)}to{transform:translate(0) scale(1)}}@keyframes statusIn{0%{transform:rotate(9deg) scale(.55);opacity:0}70%{transform:rotate(-4deg) scale(1.06)}to{transform:rotate(-2.5deg) scale(1);opacity:1}}@keyframes statusSway{0%,to{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}@keyframes statusHop{0%,to{transform:translate(0) rotate(-2deg)}25%{transform:translate(-5cqw,-3.5cqh) rotate(5deg)}55%{transform:translate(4cqw) rotate(-4deg)}78%{transform:translate(6cqw,-2.5cqh) rotate(4deg)}}@keyframes statusPrance{0%{transform:translate(0) rotate(-6deg) scale(1)}14%{transform:translate(-15cqw,-4cqh) rotate(9deg) scale(1.06)}28%{transform:translate(-17cqw,2.5cqh) rotate(-10deg) scale(.98)}42%{transform:translate(-7cqw,-5cqh) rotate(7deg) scale(1.05)}56%{transform:translate(7cqw,1.5cqh) rotate(-8deg) scale(1.08)}70%{transform:translate(16cqw,-4cqh) rotate(10deg) scale(1.02)}84%{transform:translate(9cqw,2cqh) rotate(-7deg) scale(1.04)}to{transform:translate(0) rotate(-6deg) scale(1)}}@keyframes imgWiggle{0%,to{transform:rotate(-8deg)}50%{transform:rotate(8deg)}}@keyframes statusMad{0%,to{transform:translate(0) rotate(0)}20%{transform:translate(-5px,2px) rotate(-3deg)}40%{transform:translate(5px,-2px) rotate(3deg)}60%{transform:translate(-4px,-2px) rotate(-2deg)}80%{transform:translate(4px,2px) rotate(2deg)}}@keyframes statusRage{0%,to{transform:translate(0) rotate(0) scale(1.03)}15%{transform:translate(-8px,5px) rotate(-6deg) scale(1.05)}30%{transform:translate(8px,-5px) rotate(6deg) scale(1.02)}45%{transform:translate(-7px,-6px) rotate(-5deg) scale(1.06)}60%{transform:translate(8px,6px) rotate(5deg) scale(1.02)}75%{transform:translate(-6px,4px) rotate(-4deg) scale(1.05)}}@keyframes hurl{0%{transform:translate(-50%,-50%) scale(.2) rotate(0);opacity:0}12%{opacity:1;transform:translate(calc(-50% + var(--tx) * .4),calc(-50% + var(--ty) * .4 + var(--fall) * .05)) scale(1) rotate(calc(var(--spin) * .4))}85%{opacity:1}to{transform:translate(calc(-50% + var(--tx)),calc(-50% + var(--ty) + var(--fall))) scale(.85) rotate(var(--spin));opacity:0}}@keyframes floatUp{0%{transform:translateY(6cqh) scale(.6);opacity:0}20%{transform:translateY(-6cqh) scale(1.18);opacity:1}to{transform:translateY(-30cqh) scale(1);opacity:0}}@keyframes floatDown{0%{transform:translateY(-6cqh) scale(.6);opacity:0}20%{transform:translateY(6cqh) scale(1.18);opacity:1}to{transform:translateY(30cqh) scale(.9);opacity:0}}@keyframes spark{0%{transform:translate(0) rotate(0);opacity:1}to{transform:translate(var(--tx),calc(var(--ty) + 120px)) rotate(var(--r));opacity:0}}@keyframes confFall{0%{transform:translateY(-20cqh) translate(0) rotate(0);opacity:0}8%{opacity:1}to{transform:translateY(130cqh) translate(var(--sway)) rotate(var(--rot));opacity:.95}}@keyframes rainFall{0%{transform:translateY(-20cqh)}to{transform:translateY(130cqh)}}@keyframes flashUp{0%{opacity:0;transform:scale(.6)}18%{opacity:1}to{opacity:0;transform:scale(1.3)}}@keyframes flashDown{0%{opacity:.9}to{opacity:0}}@keyframes quake{0%{transform:translate(0)}20%{transform:translate(-3px,2px)}40%{transform:translate(3px,-2px)}60%{transform:translate(-2px,-2px)}80%{transform:translate(2px,2px)}to{transform:translate(0)}}@keyframes emergency{0%,to{opacity:.18}50%{opacity:.72}}@media(max-width:640px){html,body,#root{height:auto}body{overflow-y:auto}.board.is-mobile{grid-template-columns:1fr 1fr;grid-auto-rows:clamp(340px,48svh,460px);height:auto;min-height:100svh;overflow:visible}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.weather,.burst,.flash,.feces{display:none}}
