/* [ITEMS] Shop expansion v109: original CSS art for the new shop items. Animations use transform/opacity only,
   run a few times then rest, and are off under html.lowend and prefers-reduced-motion. */
@keyframes ixsh{0%{transform:translateX(-130%) skewX(-18deg);opacity:0}12%{opacity:1}45%,100%{transform:translateX(260%) skewX(-18deg);opacity:0}}
@keyframes ixtw{0%,100%{transform:scale(.55) rotate(0);opacity:.55}50%{transform:scale(1.1) rotate(90deg);opacity:1}}
@keyframes ixdrift{0%{transform:translate3d(-6%,0,0) scale(1.08)}100%{transform:translate3d(6%,-3%,0) scale(1.08)}}
@keyframes ixfall{0%{transform:translate3d(0,-30%,0)}100%{transform:translate3d(-8%,30%,0)}}
@keyframes ixpulse{0%,100%{opacity:.35}50%{opacity:.9}}
@keyframes ixbob{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}

/* ---- chat bubbles ---- */
.bb-rose,.msgs.mybb-bb-rose .m.me .mb,.msgs.thbb-bb-rose .m.them .mb,.msgs.mybb-bb-rose .m.me .vn,.msgs.thbb-bb-rose .m.them .vn{background:radial-gradient(120% 90% at 20% 0%,#ffb3c8 0,transparent 55%),linear-gradient(135deg,#ff5f8f,#b0124f)!important;color:#fff!important;border:1px solid #ffd0de88!important}
.bb-forest,.msgs.mybb-bb-forest .m.me .mb,.msgs.thbb-bb-forest .m.them .mb,.msgs.mybb-bb-forest .m.me .vn,.msgs.thbb-bb-forest .m.them .vn{background:radial-gradient(90% 80% at 85% 110%,#7ef2b0aa,transparent 60%),linear-gradient(140deg,#0b5e43,#1f9d68)!important;color:#effff6!important;border:1px solid #9ef0c477!important}
.bb-aurora,.msgs.mybb-bb-aurora .m.me .mb,.msgs.thbb-bb-aurora .m.them .mb,.msgs.mybb-bb-aurora .m.me .vn,.msgs.thbb-bb-aurora .m.them .vn{background:linear-gradient(125deg,#00c9a7 0,#3d8bff 52%,#a35cff 100%)!important;color:#fff!important;border:1px solid #ffffff44!important}
.bb-royal,.msgs.mybb-bb-royal .m.me .mb,.msgs.thbb-bb-royal .m.them .mb,.msgs.mybb-bb-royal .m.me .vn,.msgs.thbb-bb-royal .m.them .vn{background:radial-gradient(100% 80% at 10% 0%,#9d4edd99,transparent 60%),linear-gradient(135deg,#3a0ca3,#6a0dad)!important;color:#fff7e0!important;border:1px solid #ffd166!important}
.bb-noir,.msgs.mybb-bb-noir .m.me .mb,.msgs.thbb-bb-noir .m.them .mb,.msgs.mybb-bb-noir .m.me .vn,.msgs.thbb-bb-noir .m.them .vn{background:linear-gradient(150deg,#16161f,#26232f)!important;color:#ffe9a8!important;border:1px solid #d4af37!important}
.shbb.bb-rose,.shbb.bb-forest,.shbb.bb-aurora,.shbb.bb-royal,.shbb.bb-noir,
.msgs.mybb-bb-rose .m.me .mb,.msgs.thbb-bb-rose .m.them .mb,.msgs.mybb-bb-forest .m.me .mb,.msgs.thbb-bb-forest .m.them .mb,.msgs.mybb-bb-aurora .m.me .mb,.msgs.thbb-bb-aurora .m.them .mb,.msgs.mybb-bb-royal .m.me .mb,.msgs.thbb-bb-royal .m.them .mb,.msgs.mybb-bb-noir .m.me .mb,.msgs.thbb-bb-noir .m.them .mb{position:relative;overflow:hidden;isolation:isolate}
.shbb.bb-rose::after,.shbb.bb-forest::after,.shbb.bb-aurora::after,.shbb.bb-royal::after,.shbb.bb-noir::after,
.msgs.mybb-bb-rose .m.me .mb::after,.msgs.mybb-bb-forest .m.me .mb::after,.msgs.mybb-bb-aurora .m.me .mb::after,.msgs.mybb-bb-royal .m.me .mb::after,.msgs.mybb-bb-noir .m.me .mb::after,
.msgs.thbb-bb-rose .m.them .mb::after,.msgs.thbb-bb-forest .m.them .mb::after,.msgs.thbb-bb-aurora .m.them .mb::after,.msgs.thbb-bb-royal .m.them .mb::after,.msgs.thbb-bb-noir .m.them .mb::after{content:"";position:absolute;top:0;bottom:0;left:0;width:40%;background:linear-gradient(90deg,transparent,#ffffff55,transparent);pointer-events:none;opacity:0;animation:ixsh 3.6s ease-in-out .4s 3}
.msgs.mybb-bb-noir .m.me .mb::after,.msgs.thbb-bb-noir .m.them .mb::after,.shbb.bb-noir::after{background:linear-gradient(90deg,transparent,#ffd76677,transparent)}
.msgs.mybb-bb-royal .m.me .mb::after,.msgs.thbb-bb-royal .m.them .mb::after,.shbb.bb-royal::after{background:linear-gradient(90deg,transparent,#ffe08a66,transparent)}

/* ---- name colours: gradient text + a small twinkling star ---- */
.nc-rose,.nc-tide,.nc-emerald,.nc-amethyst{-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;font-weight:800}
.nc-rose{background-image:linear-gradient(95deg,#ffd9cf,#e8a0a0 35%,#b76e79 60%,#ffe4d6)}
.nc-tide{background-image:linear-gradient(95deg,#7fffd4,#00c6ff 40%,#2f6bff 70%,#b9fbff)}
.nc-emerald{background-image:linear-gradient(95deg,#b9f6ca,#2ee59d 40%,#00a86b 70%,#e6ffef)}
.nc-amethyst{background-image:linear-gradient(95deg,#e0b0ff,#9966cc 35%,#6a0dad 60%,#ffd76a)}
.nc-rose::after,.nc-tide::after,.nc-emerald::after,.nc-amethyst::after{content:"";display:inline-block;width:.5em;height:.5em;margin-left:.2em;vertical-align:.5em;-webkit-text-fill-color:initial;clip-path:polygon(50% 0,61% 39%,100% 50%,61% 61%,50% 100%,39% 61%,0 50%,39% 39%);animation:ixtw 2.2s ease-in-out 4}
.nc-rose::after{background:#ffd0c4}.nc-tide::after{background:#9ff4ff}.nc-emerald::after{background:#a8ffd0}.nc-amethyst::after{background:#ffd76a}

/* ---- mic waves ---- */
.mw-rose{--mwc:#ff7eb6}.mw-emerald{--mwc:#2ee59d}.mw-violet{--mwc:#b46bff}.mw-sunset{--mwc:#ff9f43}.mw-royal{--mwc:#4d7cff}
.hasmw.mw-rose .mwave{border-style:dotted;border-width:4px}
.hasmw.mw-emerald .mwave{box-shadow:0 0 10px #2ee59d99,inset 0 0 6px #2ee59d66}
.hasmw.mw-violet .mwave{border:5px double #b46bff}
.hasmw.mw-sunset .mwave.w2{border-color:#ff4f81}
.hasmw.mw-royal .mwave{box-shadow:0 0 9px #4d7cffaa}.hasmw.mw-royal .mwave.w2{border-color:#ffd166;box-shadow:0 0 9px #ffd16699}

/* ---- room colours (host's) ---- */
.vr.rt-aurora{background:radial-gradient(80% 50% at 20% 10%,#00c9a766,transparent 60%),radial-gradient(70% 50% at 85% 30%,#a35cff55,transparent 60%),linear-gradient(180deg,#041322,#0b1f3a 60%,#10294a)!important;animation:none!important}
.vr.rt-blossom{background:radial-gradient(70% 45% at 80% 0%,#ffb7d566,transparent 60%),linear-gradient(180deg,#2a0f22,#5a1f46 55%,#8f3b67)!important;animation:none!important}
.vr.rt-desert{background:radial-gradient(60% 35% at 70% 15%,#ffd27a77,transparent 60%),linear-gradient(180deg,#3b1d0e,#8a4a1f 55%,#d08a3e)!important;animation:none!important}
.vr.rt-arctic{background:radial-gradient(70% 45% at 30% 0%,#d8f6ff66,transparent 60%),linear-gradient(180deg,#071a2b,#123a5a 55%,#3c7aa3)!important;animation:none!important}
.vr.rt-aurora::before,.vr.rt-blossom::before,.vr.rt-desert::before,.vr.rt-arctic::before{content:"";position:absolute;inset:-10%;z-index:-1;pointer-events:none;will-change:transform;animation:ixdrift 9s ease-in-out 4 alternate}
.vr.rt-aurora::before{background:radial-gradient(45% 18% at 30% 22%,#3dffc455,transparent 70%),radial-gradient(40% 16% at 70% 30%,#8f6bff55,transparent 70%),radial-gradient(50% 14% at 50% 14%,#00e1ff33,transparent 70%)}
.vr.rt-blossom::before{background:radial-gradient(3px 2px at 12% 20%,#ffd1e3,transparent),radial-gradient(3px 2px at 32% 60%,#ffc0d9,transparent),radial-gradient(4px 3px at 58% 30%,#ffe4ef,transparent),radial-gradient(3px 2px at 78% 70%,#ffb3d1,transparent),radial-gradient(4px 3px at 90% 40%,#ffd1e3,transparent),radial-gradient(3px 2px at 45% 85%,#ffc0d9,transparent);animation-name:ixfall;animation-duration:12s}
.vr.rt-desert::before{background:radial-gradient(60% 10% at 50% 78%,#ffe2a944,transparent 70%),radial-gradient(40% 8% at 30% 66%,#ffcf8044,transparent 70%)}
.vr.rt-arctic::before{background:radial-gradient(2px 2px at 15% 25%,#fff,transparent),radial-gradient(2px 2px at 40% 55%,#e9fbff,transparent),radial-gradient(1.6px 1.6px at 65% 20%,#fff,transparent),radial-gradient(2px 2px at 85% 65%,#dff7ff,transparent),radial-gradient(1.6px 1.6px at 30% 85%,#fff,transparent);animation-name:ixfall;animation-duration:14s}
.rcard.rt-aurora .rcbg{background:radial-gradient(90% 70% at 20% 0%,#00c9a7aa,transparent 60%),linear-gradient(150deg,#041322,#1b1450)}
.rcard.rt-blossom .rcbg{background:radial-gradient(90% 70% at 85% 0%,#ffb7d5aa,transparent 60%),linear-gradient(150deg,#2a0f22,#6b2752)}
.rcard.rt-desert .rcbg{background:radial-gradient(90% 70% at 70% 0%,#ffd27aaa,transparent 60%),linear-gradient(150deg,#3b1d0e,#a3592a)}
.rcard.rt-arctic .rcbg{background:radial-gradient(90% 70% at 30% 0%,#d8f6ffaa,transparent 60%),linear-gradient(150deg,#071a2b,#2a628a)}
.shrt.vr.rt-aurora,.shrt.vr.rt-blossom,.shrt.vr.rt-desert,.shrt.vr.rt-arctic{display:block;position:relative;z-index:0;inset:auto}

/* ---- profile backgrounds ---- */
.prof.th-blossom{background:linear-gradient(160deg,#ff9ec333,#7a2a5c22)}
.shth.th-blossom{background:linear-gradient(160deg,#ff9ec3,#8f2f6b)}
.prof.th-crystal{background:linear-gradient(160deg,#7fe7ff33,#3d5afe22)}
.shth.th-crystal{background:linear-gradient(160deg,#a8f0ff,#3d5afe)}
.prof.th-blossom,.prof.th-crystal,.shth.th-blossom,.shth.th-crystal{position:relative;overflow:hidden;isolation:isolate}
.prof.th-blossom::before,.shth.th-blossom::before,.prof.th-crystal::before,.shth.th-crystal::before{content:"";position:absolute;inset:-20%;z-index:-1;pointer-events:none;will-change:transform}
.prof.th-blossom::before,.shth.th-blossom::before{background:radial-gradient(5px 3px at 10% 15%,#ffd1e3,transparent),radial-gradient(4px 3px at 30% 50%,#ffc0d9,transparent),radial-gradient(5px 4px at 55% 25%,#ffe4ef,transparent),radial-gradient(4px 3px at 75% 60%,#ffb3d1,transparent),radial-gradient(5px 3px at 88% 30%,#ffd1e3,transparent),radial-gradient(4px 3px at 45% 80%,#ffc0d9,transparent);animation:ixfall 10s linear 4}
.prof.th-crystal::before,.shth.th-crystal::before{background:linear-gradient(115deg,transparent 30%,#ffffff22 40%,transparent 50%),linear-gradient(65deg,transparent 55%,#9ff4ff22 62%,transparent 70%),radial-gradient(2px 2px at 20% 30%,#fff,transparent),radial-gradient(2px 2px at 70% 60%,#e0fbff,transparent),radial-gradient(1.5px 1.5px at 45% 75%,#fff,transparent);animation:ixdrift 8s ease-in-out 4 alternate}

/* ---- game boards ---- */
.gthm .gth-ocean i{background:linear-gradient(135deg,#7fdfff,#0a4f7a)}
.gthm .gth-arctic i{background:linear-gradient(135deg,#ffffff,#8fc9e8)}
.gthm .gth-carbon i{background:repeating-linear-gradient(45deg,#2b2b30 0 4px,#1a1a1e 4px 8px)}
.gthm .gth-candy i{background:linear-gradient(135deg,#ff9ad5,#7ad7ff)}
.gthm .gth-sunset i{background:linear-gradient(135deg,#ffb347,#c2185b)}
.gcard.g2.gth-ocean{background:linear-gradient(160deg,#03263d,#06486b);border:1px solid #4fd1ff66;color:#dff6ff}
.gcard.g2.gth-arctic{background:linear-gradient(160deg,#0d2536,#1c4a66);border:1px solid #c9f1ff77;color:#f0fbff}
.gcard.g2.gth-carbon{background:repeating-linear-gradient(45deg,#1b1b20 0 6px,#141418 6px 12px);border:1px solid #e1060066;color:#f2f2f2}
.gcard.g2.gth-candy{background:linear-gradient(160deg,#3a1240,#1d2a5c);border:1px solid #ff9ad577;color:#fff0fa}
.gcard.g2.gth-sunset{background:linear-gradient(160deg,#3d0f2a,#5c1f12);border:1px solid #ffb34777;color:#fff1e0}
.gth-ocean .c4{background:linear-gradient(135deg,#0a6fa8,#043a5c)}
.gth-arctic .c4{background:linear-gradient(135deg,#5aa9d6,#1c4a66)}
.gth-carbon .c4{background:#26262c}
.gth-candy .c4{background:linear-gradient(135deg,#ff6fb5,#5b8cff)}
.gth-sunset .c4{background:linear-gradient(135deg,#e8590c,#a61e4d)}
.gth-ocean .chc.l{background:#bfefff}.gth-ocean .chc.d{background:#0a6fa8}
.gth-arctic .chc.l{background:#ffffff}.gth-arctic .chc.d{background:#7fb8d8}
.gth-carbon .chc.l{background:#d9d9de}.gth-carbon .chc.d{background:#2b2b30}
.gth-candy .chc.l{background:#ffe3f3}.gth-candy .chc.d{background:#ff6fb5}
.gth-sunset .chc.l{background:#ffe0b8}.gth-sunset .chc.d{background:#c2410c}
.gth-ocean .memc{background:linear-gradient(135deg,#0ea5e9,#0a4f7a)}
.gth-arctic .memc{background:linear-gradient(135deg,#e0f7ff,#6fb3d9)}
.gth-carbon .memc{background:linear-gradient(135deg,#3a3a42,#e10600)}
.gth-candy .memc{background:linear-gradient(135deg,#ff9ad5,#7ad7ff)}
.gth-sunset .memc{background:linear-gradient(135deg,#ffb347,#c2185b)}
.gtprev.gth-ocean{background:#03263d}.gtprev.gth-ocean i{background:#bfefff}.gtprev.gth-ocean i:nth-child(even){background:#0a6fa8}
.gtprev.gth-arctic{background:#0d2536}.gtprev.gth-arctic i{background:#fff}.gtprev.gth-arctic i:nth-child(even){background:#7fb8d8}
.gtprev.gth-carbon{background:#141418}.gtprev.gth-carbon i{background:#d9d9de}.gtprev.gth-carbon i:nth-child(even){background:#e10600}
.gtprev.gth-candy{background:#3a1240}.gtprev.gth-candy i{background:#ffe3f3}.gtprev.gth-candy i:nth-child(even){background:#ff6fb5}
.gtprev.gth-sunset{background:#3d0f2a}.gtprev.gth-sunset i{background:#ffe0b8}.gtprev.gth-sunset i:nth-child(even){background:#c2410c}
.gtprev.gth-ocean i:nth-child(3n),.gtprev.gth-arctic i:nth-child(3n),.gtprev.gth-carbon i:nth-child(3n),.gtprev.gth-candy i:nth-child(3n),.gtprev.gth-sunset i:nth-child(3n){animation:ixpulse 1.4s ease-in-out 4}

/* ---- entry effects (art lives in app.js ENTRY_ART) ---- */
.entfx.en-orca .eveh{animation-name:efly;animation-duration:1.6s}
.entfx.en-comet .eveh{animation-duration:1s}
.ixtail{transform-origin:right center;animation:ixpulse .9s ease-in-out 4}
.ixfl{transform-box:fill-box;transform-origin:right center;animation:ixtw .5s ease-in-out 8}
.ixbob{animation:ixbob 1.6s ease-in-out 3}
.ixglow{animation:ixpulse 1.2s ease-in-out 4}

/* ---- off on low-end phones and for reduced motion ---- */
html.lowend .ixtail,html.lowend .ixfl,html.lowend .ixbob,html.lowend .ixglow,html.lowend .nc-rose::after,html.lowend .nc-tide::after,html.lowend .nc-emerald::after,html.lowend .nc-amethyst::after,html.lowend .vr.rt-aurora::before,html.lowend .vr.rt-blossom::before,html.lowend .vr.rt-desert::before,html.lowend .vr.rt-arctic::before,html.lowend .prof.th-blossom::before,html.lowend .prof.th-crystal::before,html.lowend .shth.th-blossom::before,html.lowend .shth.th-crystal::before,html.lowend .gtprev.gth-ocean i,html.lowend .gtprev.gth-arctic i,html.lowend .gtprev.gth-carbon i,html.lowend .gtprev.gth-candy i,html.lowend .gtprev.gth-sunset i,html.lowend .msgs.mybb-bb-rose .m.me .mb::after,html.lowend .msgs.thbb-bb-rose .m.them .mb::after,html.lowend .shbb.bb-rose::after,html.lowend .msgs.mybb-bb-forest .m.me .mb::after,html.lowend .msgs.thbb-bb-forest .m.them .mb::after,html.lowend .shbb.bb-forest::after,html.lowend .msgs.mybb-bb-aurora .m.me .mb::after,html.lowend .msgs.thbb-bb-aurora .m.them .mb::after,html.lowend .shbb.bb-aurora::after,html.lowend .msgs.mybb-bb-royal .m.me .mb::after,html.lowend .msgs.thbb-bb-royal .m.them .mb::after,html.lowend .shbb.bb-royal::after,html.lowend .msgs.mybb-bb-noir .m.me .mb::after,html.lowend .msgs.thbb-bb-noir .m.them .mb::after,html.lowend .shbb.bb-noir::after{animation:none!important}
html.lowend .msgs.mybb-bb-rose .m.me .mb::after,html.lowend .msgs.thbb-bb-rose .m.them .mb::after,html.lowend .shbb.bb-rose::after,html.lowend .msgs.mybb-bb-forest .m.me .mb::after,html.lowend .msgs.thbb-bb-forest .m.them .mb::after,html.lowend .shbb.bb-forest::after,html.lowend .msgs.mybb-bb-aurora .m.me .mb::after,html.lowend .msgs.thbb-bb-aurora .m.them .mb::after,html.lowend .shbb.bb-aurora::after,html.lowend .msgs.mybb-bb-royal .m.me .mb::after,html.lowend .msgs.thbb-bb-royal .m.them .mb::after,html.lowend .shbb.bb-royal::after,html.lowend .msgs.mybb-bb-noir .m.me .mb::after,html.lowend .msgs.thbb-bb-noir .m.them .mb::after,html.lowend .shbb.bb-noir::after{display:none}
@media (prefers-reduced-motion:reduce){html .ixtail,html .ixfl,html .ixbob,html .ixglow,html .nc-rose::after,html .nc-tide::after,html .nc-emerald::after,html .nc-amethyst::after,html .vr.rt-aurora::before,html .vr.rt-blossom::before,html .vr.rt-desert::before,html .vr.rt-arctic::before,html .prof.th-blossom::before,html .prof.th-crystal::before,html .shth.th-blossom::before,html .shth.th-crystal::before,html .gtprev.gth-ocean i,html .gtprev.gth-arctic i,html .gtprev.gth-carbon i,html .gtprev.gth-candy i,html .gtprev.gth-sunset i,html .msgs.mybb-bb-rose .m.me .mb::after,html .msgs.thbb-bb-rose .m.them .mb::after,html .shbb.bb-rose::after,html .msgs.mybb-bb-forest .m.me .mb::after,html .msgs.thbb-bb-forest .m.them .mb::after,html .shbb.bb-forest::after,html .msgs.mybb-bb-aurora .m.me .mb::after,html .msgs.thbb-bb-aurora .m.them .mb::after,html .shbb.bb-aurora::after,html .msgs.mybb-bb-royal .m.me .mb::after,html .msgs.thbb-bb-royal .m.them .mb::after,html .shbb.bb-royal::after,html .msgs.mybb-bb-noir .m.me .mb::after,html .msgs.thbb-bb-noir .m.them .mb::after,html .shbb.bb-noir::after{animation:none!important}html .msgs.mybb-bb-rose .m.me .mb::after,html .msgs.thbb-bb-rose .m.them .mb::after,html .shbb.bb-rose::after,html .msgs.mybb-bb-forest .m.me .mb::after,html .msgs.thbb-bb-forest .m.them .mb::after,html .shbb.bb-forest::after,html .msgs.mybb-bb-aurora .m.me .mb::after,html .msgs.thbb-bb-aurora .m.them .mb::after,html .shbb.bb-aurora::after,html .msgs.mybb-bb-royal .m.me .mb::after,html .msgs.thbb-bb-royal .m.them .mb::after,html .shbb.bb-royal::after,html .msgs.mybb-bb-noir .m.me .mb::after,html .msgs.thbb-bb-noir .m.them .mb::after,html .shbb.bb-noir::after{display:none}}
