html,body,#root{width:100%;min-height:100%;margin:0;padding:0}html,body{overflow-x:hidden}body.no-scroll{height:100%;overflow:hidden}body.no-scroll #root{height:100%}.fx-layer,.fx{pointer-events:none;position:absolute;inset:0;overflow:hidden}.fx-layer{z-index:12}.fx-layer:before{content:"";pointer-events:none;background:radial-gradient(at 50% 40%,#0812201f,#08122066);position:absolute;inset:0}@media (prefers-reduced-motion:reduce){.fx-layer *{animation:none!important}}.fx-disco-rig{flex-direction:column;align-items:center;display:flex;position:absolute;top:0;left:50%;transform:translate(-50%)}.fx-disco-wire{background:linear-gradient(#fffa,#fff5);width:2px;height:5vh}.fx-disco-ball{background:radial-gradient(circle at 32% 26%,#fff 0%,#cfe9ef 18%,#7f9fb0 55%,#24384a 100%);border-radius:50%;width:13vh;height:13vh;animation:9s linear infinite fx-ball-spin;position:relative;overflow:hidden;box-shadow:0 0 6vh #ffffff59,inset -1vh -1vh 3vh #00000080}.fx-facet{mix-blend-mode:screen;background:#eaf6ff;width:9%;height:10%;animation:3s ease-in-out infinite fx-glint;position:absolute}@keyframes fx-ball-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes fx-glint{0%,to{opacity:.25}50%{opacity:1}}.fx-disco-beams{width:0;height:0;animation:14s linear infinite fx-beams-spin;position:absolute;top:9vh;left:50%}.fx-beam{transform-origin:50% 0;width:14vh;height:170vh;transform:translateX(-50%) rotate(var(--a));background:linear-gradient(to bottom, hsla(var(--hue), 90%, 72%, .5) 0%, hsla(var(--hue), 90%, 72%, .12) 45%, transparent 78%);clip-path:polygon(46% 0,54% 0,100% 100%,0 100%);mix-blend-mode:screen;animation:3.2s ease-in-out infinite fx-beam-pulse;position:absolute;top:0;left:0}@keyframes fx-beams-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes fx-beam-pulse{0%,to{opacity:.35}50%{opacity:.9}}.fx-disco-speckles span{mix-blend-mode:screen;filter:blur(1px);background:#fff;border-radius:50%;animation:5s ease-in-out infinite fx-speckle;position:absolute}@keyframes fx-speckle{0%,to{opacity:0;transform:scale(.6)}50%{opacity:.85;transform:scale(1.15)}}.fx-wash{mix-blend-mode:overlay;animation:8s ease-in-out infinite fx-wash;position:absolute;inset:0}@keyframes fx-wash{0%{background:radial-gradient(circle at 20% 30%,#7831c7bb,#0000 60%)}25%{background:radial-gradient(circle at 80% 25%,#69dadabb,#0000 60%)}50%{background:radial-gradient(circle at 50% 80%,#ffce5cbb,#0000 60%)}75%{background:radial-gradient(circle at 15% 75%,#a87fafbb,#0000 60%)}to{background:radial-gradient(circle at 20% 30%,#7831c7bb,#0000 60%)}}.fx-stage-beam{transform-origin:50% 0;background:linear-gradient(to bottom, hsla(var(--hue), 95%, 70%, .55), hsla(var(--hue), 95%, 70%, .06) 60%, transparent 85%);clip-path:polygon(44% 0,56% 0,100% 100%,0 100%);mix-blend-mode:screen;filter:blur(2px);width:16vh;height:150%;animation:6s ease-in-out infinite alternate fx-scan;position:absolute;top:-10%}.fx-stage-beam.from-right{animation-direction:alternate-reverse}@keyframes fx-scan{0%{opacity:.4;transform:rotate(-32deg)}50%{opacity:1}to{opacity:.4;transform:rotate(32deg)}}.fx-cp{will-change:transform;animation-name:fx-fall;animation-timing-function:linear;animation-iteration-count:infinite;position:absolute;top:-12%}.fx-cp-circ{border-radius:50%}.fx-cp-tri{border-bottom-style:solid;border-bottom-width:12px;border-left:7px solid #0000;border-right:7px solid #0000;width:0!important;height:0!important}@keyframes fx-fall{0%{opacity:0;transform:translate(0,0)rotate(0)}8%{opacity:1}92%{opacity:1}to{transform:translate3d(var(--drift), 115vh, 0) rotate(var(--spin));opacity:0}}.fx-shell{width:0;height:0;animation-name:fx-launch;animation-timing-function:cubic-bezier(.15,.6,.35,1);animation-iteration-count:infinite;position:absolute;bottom:0}.fx-shell-trail{clip-path:polygon(50% 0,100% 100%,0 100%);background:linear-gradient(to top, transparent, hsl(var(--hue), 95%, 85%) 70%, #fff);width:4px;height:64px;box-shadow:0 0 10px 2px hsla(var(--hue), 95%, 70%, .7);animation:4.5s linear infinite fx-trail;position:absolute;bottom:0;left:-1.5px}.fx-spark{clip-path:polygon(50% 0,100% 14%,60% 100%,40% 100%,0 14%);transform-origin:50% 0;background:linear-gradient(to bottom, #fff 0%, hsl(var(--hue), 95%, 72%) 22%, hsla(var(--hue), 95%, 62%, .35) 60%, transparent 100%);width:4px;height:26px;box-shadow:0 0 10px 2px hsla(var(--hue), 95%, 65%, .75);transform:rotate(var(--a)) translateY(0);margin:-2px;animation:4.5s cubic-bezier(.12,.72,.3,1) infinite fx-burst;position:absolute}@keyframes fx-launch{0%{transform:translateY(0)}30%{transform:translateY(calc(-1 * var(--rise)))}90%{transform:translateY(calc(-1 * var(--rise) + 60px))}to{transform:translateY(calc(-1 * var(--rise) + 60px))}}@keyframes fx-trail{0%{opacity:1}28%{opacity:1}32%{opacity:0}to{opacity:0}}@keyframes fx-burst{0%,29%{transform:rotate(var(--a)) translateY(0) scaleY(.3);opacity:0}32%{opacity:1}48%{transform:rotate(var(--a)) translateY(calc(-1 * var(--d) * .8)) scaleY(1.6);opacity:1}70%{transform:rotate(var(--a)) translateY(calc(-1 * var(--d))) scaleY(.8);opacity:var(--fade)}88%{transform:rotate(var(--a)) translateY(calc(-1 * var(--d) - 6px)) scaleY(.35);opacity:0}to{opacity:0}}.fx-bubbles span{background:radial-gradient(circle at 30% 28%,#ffffffeb,#ffffff1f 42%,#0000 60%),radial-gradient(circle at 70% 75%,#69dada73,#0000 65%);border:1px solid #ffffff8c;border-radius:50%;animation-name:fx-rise;animation-timing-function:ease-in-out;animation-iteration-count:infinite;position:absolute;bottom:-18%}@keyframes fx-rise{0%{opacity:0;transform:translate(0,0)scale(.7)}12%{opacity:.9}88%{opacity:.9}to{transform:translate3d(var(--sway), -125vh, 0) scale(1.1);opacity:0}}.fx-stars span{color:#fff;text-shadow:0 0 10px #ffce5c,0 0 22px #69dada;animation-name:fx-starfall;animation-timing-function:linear;animation-iteration-count:infinite;position:absolute;top:-8%}@keyframes fx-starfall{0%{opacity:0;transform:translate(0,0)rotate(0)}10%{opacity:1}85%{opacity:1}to{transform:translate3d(var(--drift), 118vh, 0) rotate(300deg);opacity:0}}.fx-ribbon{filter:blur(26px);mix-blend-mode:screen;opacity:.5;width:150%;height:26%;position:absolute;left:-25%;-webkit-mask-image:linear-gradient(#0000,#000 45%,#0000);mask-image:linear-gradient(#0000,#000 45%,#0000)}.fx-ribbon.r1{background:linear-gradient(100deg,#0000 5%,#69dada 35%,#7831c7 65%,#0000 95%);animation:14s ease-in-out infinite alternate fx-aurora-a;top:2%}.fx-ribbon.r2{background:linear-gradient(80deg,#0000 8%,#a87faf 40%,#ffce5c 70%,#0000 96%);animation:18s ease-in-out infinite alternate fx-aurora-b;top:34%}.fx-ribbon.r3{background:linear-gradient(110deg,#0000 5%,#7831c7 38%,#69dada 68%,#0000 95%);animation:22s ease-in-out infinite alternate-reverse fx-aurora-a;top:62%}@keyframes fx-aurora-a{0%{transform:translate(-8%)skewY(-4deg)scaleY(1)}to{transform:translate(8%,6%)skewY(5deg)scaleY(1.3)}}@keyframes fx-aurora-b{0%{transform:translate(6%,4%)skewY(3deg)scaleY(1.2)}to{transform:translate(-7%,-4%)skewY(-5deg)scaleY(.9)}}.fx-toggles{grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:8px;width:100%;margin-top:4px;display:grid}.fx-toggle{border:2px solid var(--warm-grey,#d9d2c7);color:var(--ink,#22333f);font:inherit;cursor:pointer;background:#fff;border-radius:14px;flex-direction:column;align-items:center;gap:3px;padding:10px 4px;font-size:.72rem;font-weight:700;line-height:1.1;transition:transform .12s,border-color .12s,background .12s;display:flex}.fx-toggle .fx-toggle-icon{font-size:1.45rem}.fx-toggle:active{transform:scale(.95)}.fx-toggle.on{background:var(--purple,#7831c7);border-color:var(--purple-deep,#5e269c);color:#fff;box-shadow:0 3px 0 var(--purple-deep,#5e269c)}.fx-clear{border:2px solid var(--warm-grey,#d9d2c7);width:100%;color:var(--ink,#22333f);font:inherit;cursor:pointer;background:0 0;border-radius:12px;margin-top:8px;padding:9px;font-weight:700}.fx-clear:disabled{opacity:.4;cursor:default}.say-btn{background:var(--cyan,#69dada);border-color:var(--cyan-deep,#186262);color:var(--cyan-deep,#186262)}.say-btn:disabled{opacity:.4;cursor:default;box-shadow:none;transform:none}.jump-row{gap:8px;width:100%;margin-top:10px;display:flex}.jump-input{border:2px solid var(--warm-grey,#d9d2c7);min-width:0;color:var(--ink,#22333f);font:inherit;background:#fff;border-radius:12px;flex:auto;padding:9px 12px;font-weight:700}.jump-input:focus{border-color:var(--cyan,#69dada);outline:none}.jump-btn{border:2px solid var(--cyan-deep,#186262);background:var(--cyan,#69dada);color:var(--cyan-deep,#186262);font:inherit;cursor:pointer;border-radius:12px;flex:none;padding:9px 18px;font-weight:800}.jump-btn:disabled{opacity:.45;cursor:default}.jump-btn:not(:disabled):active{transform:scale(.96)}.scrub-wrap{width:100%;margin-top:12px}.scrub-row{align-items:center;gap:10px;display:flex}.scrub{appearance:none;cursor:pointer;background:0 0;flex:auto;min-width:0;height:26px}.scrub::-webkit-slider-runnable-track{background:var(--warm-grey,#d9d2c7);border-radius:999px;height:10px}.scrub::-moz-range-track{background:var(--warm-grey,#d9d2c7);border-radius:999px;height:10px}.scrub::-webkit-slider-thumb{appearance:none;background:var(--purple,#7831c7);border:3px solid #fff;border-radius:50%;width:26px;height:26px;margin-top:-8px;box-shadow:0 1px 4px #0000004d}.scrub::-moz-range-thumb{background:var(--purple,#7831c7);border:3px solid #fff;border-radius:50%;width:26px;height:26px;box-shadow:0 1px 4px #0000004d}.scrub-time{font-variant-numeric:tabular-nums;color:var(--cyan-deep,#186262);flex:none;font-size:.82rem;font-weight:800}@media (width>=600px){.phone-body>.fx-toggles,.phone-body>.fx-clear{flex:1 0 100%}}.wheel-pointer{width:clamp(20px,3.4vw,34px)!important;top:-2.2%!important}.wheel-result{padding:18px 26px!important}:root{--cyan:#69dada;--cyan-deep:#186262;--purple:#7831c7;--purple-deep:#5e269c;--yellow:#ffce5c;--mauve:#a87faf;--sand:#da9f84;--cream:#fff9f0;--ink:#22333f;--warm-grey:#d9d2c7;--sea:var(--cyan);--sea-deep:var(--cyan-deep);--coral:var(--purple)}*{box-sizing:border-box}.app{background:var(--cream);width:100%;min-height:100dvh;color:var(--ink);font-family:Nunito,system-ui,-apple-system,sans-serif}h1,h2,h3,.brand,.brand-word{font-family:"Baloo 2",Nunito,system-ui,sans-serif}.screen{min-height:100dvh;padding:32px;position:relative}.center{text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex}.screen h1{color:var(--purple-deep);margin:12px 0 28px;font-size:2rem;font-weight:800}.brand{justify-content:center;align-items:center;display:flex}.brand img{width:auto;height:84px;display:block}.brand.small img{height:40px}.brand.small{color:var(--purple-deep);align-items:center;gap:8px;font-size:1.1rem;font-weight:700;display:flex}.hint{color:var(--ink);opacity:.75;margin-top:28px;font-size:.9rem}.back{color:var(--purple-deep);border:2px solid var(--warm-grey);cursor:pointer;background:#fff;border-radius:999px;padding:10px 16px;font-size:1rem;font-weight:700;position:absolute;top:24px;left:24px}.viewer .back{color:#fff;background:#ffffff24;border-color:#ffffff40}.viewer .back:hover{background:#ffffff42}.back:hover{background:#ffffff52}.card-grid{flex-wrap:wrap;justify-content:center;gap:20px;max-width:720px;display:flex}.card{border:2px solid var(--warm-grey);cursor:pointer;background:#fff;border-radius:24px;flex-direction:column;justify-content:center;align-items:center;gap:14px;width:200px;min-height:160px;padding:28px 24px;transition:transform .12s,box-shadow .12s;display:flex;box-shadow:0 8px 24px #0000002e}.card:hover{transform:translateY(-4px);box-shadow:0 14px 32px #00000040}.card-emoji{font-size:3rem}.avatar-img{object-fit:cover;border-radius:50%;width:5.5rem;height:5.5rem;margin:0 auto .2rem;display:block;box-shadow:0 2px 8px #0003}.avatar-inline{object-fit:cover;vertical-align:-.35rem;border-radius:50%;width:1.5rem;height:1.5rem;margin:0 .15rem;display:inline-block}.card-title{color:var(--ink);font-size:1.15rem;font-weight:800}.card-sub{color:var(--sea-deep);opacity:.8;font-size:.85rem;font-weight:700}.card.big{width:240px;min-height:220px}.card.big .card-emoji{font-size:4rem}.card.locked{opacity:.5;cursor:default}.card.locked:hover{transform:none;box-shadow:0 8px 24px #0000002e}.pin-dots{gap:18px;margin:8px 0 18px;display:flex}.dot{background:#ffffff4d;border:2px solid #fff;border-radius:50%;width:20px;height:20px}.dot.filled{background:#fff}.error{color:#ffd9d0;margin:4px 0 16px;font-weight:800}.keypad{grid-template-columns:repeat(3,80px);gap:14px;display:grid}.key{border:2px solid var(--warm-grey);height:80px;color:var(--ink);cursor:pointer;background:#fff;border-radius:50%;font-size:1.8rem;font-weight:800;box-shadow:0 6px 16px #0000002e}.key:active{transform:scale(.94)}.shake{animation:.4s shake}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-8px)}75%{transform:translate(8px)}}.viewer{background:#0a2030;flex-direction:column;width:100vw;height:100dvh;display:flex;overflow:hidden}:is(.viewer:fullscreen,.viewer.fs){width:100vw;height:100vh}.viewer-top{color:#fff;background:#00000059;flex-shrink:0;align-items:center;gap:clamp(8px,1.5vw,16px);padding:clamp(8px,1.2vh,14px) clamp(12px,2vw,24px);transition:opacity .3s,transform .3s;display:flex}.viewer-top .back{position:static}.viewer-meta{opacity:.85;font-size:clamp(.8rem,1.4vw,1rem);font-weight:700}.viewer-title{white-space:nowrap;margin-left:auto;font-size:clamp(.9rem,1.6vw,1.15rem);font-weight:800}.fs-btn{color:#fff;cursor:pointer;white-space:nowrap;background:#ffffff2e;border:none;border-radius:999px;padding:10px 16px;font-size:clamp(.8rem,1.3vw,1rem);font-weight:700}.fs-btn:hover{background:#ffffff4d}.stage{flex:auto;justify-content:center;align-items:center;min-height:0;padding:clamp(8px,1.5vh,20px);display:flex;position:relative}.frame-img{object-fit:contain;border-radius:14px;width:auto;max-width:100%;height:auto;max-height:100%;box-shadow:0 12px 40px #00000080}.viewer.fs .frame-img{box-shadow:none;border-radius:0}.anim-stage{position:relative}.anim-canvas{isolation:isolate;background:#000;border-radius:14px;width:auto;max-width:100%;height:100%;max-height:100%;position:relative;overflow:hidden;box-shadow:0 12px 40px #00000080}.anim-caption{bottom:clamp(16px,5vh,48px)}.anim-bg-layer{position:absolute;inset:0}.anim-bg-img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.anim-flash-layer{pointer-events:none;position:absolute;inset:0}.zone{cursor:pointer;background:0 0;border:none;width:30%;position:absolute;top:0;bottom:0}.zone:disabled{cursor:default}.zone-prev{left:0}.zone-next{right:0}.caption{color:#fff;text-shadow:0 2px 6px #0000004d;letter-spacing:.5px;white-space:nowrap;z-index:2;background:#ff7a59f2;border-radius:999px;max-width:92vw;padding:clamp(8px,1.2vh,16px) clamp(20px,4vw,44px);font-size:clamp(1.3rem,4vw,3rem);font-weight:900;position:absolute;bottom:clamp(16px,5vh,48px);left:50%;transform:translate(-50%);box-shadow:0 8px 24px #0006}.controls{background:#00000059;flex-shrink:0;justify-content:center;align-items:center;gap:clamp(12px,2vw,28px);padding:clamp(8px,1.4vh,16px) clamp(12px,2vw,24px);transition:opacity .3s,transform .3s;display:flex}.nav{background:var(--coral);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:999px;padding:clamp(10px,1.4vh,14px) clamp(20px,3vw,32px);font-size:clamp(.9rem,1.6vw,1.2rem);font-weight:800}.nav:disabled{opacity:.35;cursor:default}.progress{color:#fff;text-align:center;min-width:64px;font-size:clamp(.9rem,1.5vw,1.1rem);font-weight:800}.dots-row{flex-wrap:wrap;flex:1;justify-content:center;gap:8px;max-width:50vw;display:flex}.pip{cursor:pointer;background:#ffffff4d;border-radius:50%;width:clamp(9px,1vw,13px);height:clamp(9px,1vw,13px);transition:transform .15s}.pip.on{background:var(--coral);transform:scale(1.3)}.song-slide{transition:opacity .4s}.stage-song{padding:0}.song-frame{background:#000;width:100%;height:100%;overflow:hidden}.viewer.fs .song-frame{box-shadow:none;border-radius:0}.song-frame-img{object-fit:cover;transform-origin:50%;width:100%;height:100%;display:block}.song-frame-img.kenburns-img{will-change:transform;animation:18s ease-out both kenburns-zoom}@keyframes kenburns-zoom{0%{transform:scale(1)}to{transform:scale(1.18)}}.big-play{color:#fff;pointer-events:none;background:#ff7a59eb;border-radius:50%;justify-content:center;align-items:center;width:clamp(80px,12vw,130px);height:clamp(80px,12vw,130px);padding-left:.4rem;font-size:clamp(2.5rem,5vw,4rem);display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 10px 30px #00000073}.song-controls{gap:clamp(10px,1.6vw,20px)}.nav.round{border-radius:50%;justify-content:center;align-items:center;width:clamp(48px,6vw,60px);height:clamp(48px,6vw,60px);padding:0;font-size:clamp(1.3rem,2.5vw,1.8rem);display:flex}.nav.round.play{background:#2bc0e4}.song-bar{cursor:pointer;background:#ffffff40;border-radius:999px;flex:1;max-width:55vw;height:12px;overflow:hidden}.song-bar-fill{background:var(--coral);border-radius:999px;height:100%;transition:width .2s linear}.viewer.chrome-hidden{cursor:none}.viewer.chrome-hidden .viewer-top{opacity:0;pointer-events:none;transform:translateY(-100%)}.viewer.chrome-hidden .controls{opacity:0;pointer-events:none;transform:translateY(100%)}.home-stage{color:#fff}.home-card{text-align:center}.home-card .home-wordmark{width:clamp(220px,30vw,420px);height:auto;margin:0 0 16px}.home-card p{opacity:.9;margin:6px 0;font-size:clamp(1rem,2vw,1.4rem)}.home-card .dim{opacity:.6}.controller-bg{background:linear-gradient(160deg, var(--cyan) 0%, var(--purple) 100%);flex-direction:column;justify-content:center;align-items:center;gap:12px;width:100%;min-height:100dvh;padding:clamp(10px,2vw,24px);display:flex;overflow-y:auto}.ctrl-shell{flex-direction:column;flex:auto;width:min(820px,100%);min-height:min(560px,88dvh);display:flex}.phone-screen{min-height:0;color:var(--ink);background:linear-gradient(170deg,#fff8ee 0%,#ffe9d6 100%);border-radius:clamp(16px,3vw,28px);flex-direction:column;flex:1;display:flex;overflow:hidden;box-shadow:0 16px 50px #0000004d}.phone-head{justify-content:space-between;align-items:center;padding:20px 22px 12px;font-size:.95rem;font-weight:800;display:flex}.phone-dot{background:#34d058;border-radius:50%;width:9px;height:9px;margin-left:auto;margin-right:4px;display:inline-block}.phone-body{flex-direction:column;flex:1;gap:clamp(12px,1.6vw,18px);min-height:0;padding:clamp(10px,2vw,24px) clamp(16px,3vw,32px) clamp(16px,3vw,28px);display:flex;overflow-y:auto}.phone-body h3{margin:4px 0;font-size:1.4rem}.phone-hint{color:var(--sea-deep);margin:0;font-size:.9rem;font-weight:600}.phone-big{cursor:pointer;background:#fff;border:2px solid #0000000f;border-radius:22px;flex-direction:column;align-items:center;gap:6px;padding:22px;font-size:2.6rem;font-weight:800;display:flex;box-shadow:0 6px 16px #0000001a}.phone-big span{color:var(--ink);font-size:1.1rem}.phone-big:active{transform:scale(.97)}.phone-link{color:var(--sea-deep);cursor:pointer;text-align:left;background:0 0;border:none;padding:0;font-size:.95rem;font-weight:800}.phone-frame-num{color:var(--sea-deep);font-weight:800}.phone-word{background:var(--coral);color:#fff;text-align:center;border-radius:18px;justify-content:center;align-items:center;min-height:90px;padding:24px 16px;font-size:1.8rem;font-weight:900;display:flex}.phone-nav-row{gap:12px;margin-top:auto;display:flex}.phone-nav{cursor:pointer;background:#fff;border:2px solid #00000014;border-radius:16px;flex:1;padding:20px;font-size:1.2rem;font-weight:800}.phone-nav.next{background:var(--coral);color:#fff;border-color:var(--coral)}.phone-nav:active{transform:scale(.97)}.phone-song-controls{justify-content:center;gap:14px;margin-top:20px;display:flex}.phone-round{cursor:pointer;background:#fff;border:none;border-radius:50%;width:72px;height:72px;font-size:1.8rem;font-weight:800;box-shadow:0 6px 16px #0000001f}.phone-round.play{background:var(--coral);color:#fff;width:88px;height:88px;font-size:2.2rem}.phone-round:active{transform:scale(.94)}@media (width>=600px){.phone-head{padding:22px 28px 14px;font-size:1.1rem}.phone-body h3{font-size:1.8rem}.phone-hint{font-size:1.05rem}.phone-body{flex-flow:wrap;align-content:flex-start}.phone-body>.phone-link,.phone-body>h3,.phone-body>.phone-hint,.phone-body>.phone-word,.phone-body>.phone-word.silent,.phone-body>.phone-frame-num,.phone-body>.phone-nav-row,.phone-body>.phone-song-controls,.phone-body>.mem-mini-grid,.phone-body>.bg-music,.phone-body>.phone-input,.phone-body>.unit-grid,.phone-body>.phone-upload{flex:1 0 100%}.phone-body>.phone-big{flex:calc(50% - 12px);justify-content:center;min-height:150px}.phone-big span{font-size:1.3rem}}@media (width>=900px){.phone-body>.phone-big{flex-basis:calc(33.333% - 12px);min-height:170px;font-size:3rem}.phone-word{min-height:120px;font-size:2.4rem}.phone-nav{padding:26px;font-size:1.5rem}.phone-round{width:92px;height:92px;font-size:2.2rem}.phone-round.play{width:108px;height:108px;font-size:2.6rem}}.audio-unlock{color:#fff;text-align:center;z-index:5;cursor:pointer;background:#000000d1;border-radius:18px;padding:22px 34px;font-size:clamp(1.1rem,2.5vw,1.8rem);font-weight:800;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 10px 30px #00000080}.phone-word{flex-direction:column;gap:6px}.phone-word-label{text-transform:uppercase;letter-spacing:1px;opacity:.85;font-size:.85rem;font-weight:800}.phone-word-text{line-height:1.1}.phone-word.silent{color:var(--sea-deep);background:#0000000f;font-size:1.15rem;font-weight:800}.flashstage,.wheelstage,.memorystage,.combinestage,.listenstage{flex-direction:column;gap:2vh;overflow:hidden}.flashstage.spotlight{justify-content:space-between;padding-bottom:0}.flash-hero{flex-direction:column;flex:auto;justify-content:center;align-items:center;gap:clamp(8px,1.5vh,18px);width:100%;min-height:0;display:flex}.flash-hero img{border-radius:20px;width:auto;max-width:80vw;height:auto;max-height:62vh;animation:.35s heroPop;box-shadow:0 18px 50px #0000008c}.flash-hero-label{color:#fff;background:var(--coral);border-radius:999px;padding:clamp(6px,1vh,12px) clamp(24px,4vw,48px);font-size:clamp(1.8rem,5vw,3.6rem);font-weight:900;box-shadow:0 8px 24px #0006}@keyframes heroPop{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.flash-strip{background:#0000004d;flex-wrap:nowrap;flex-shrink:0;justify-content:center;align-items:center;gap:clamp(6px,1vw,14px);width:100%;padding:clamp(8px,1.5vh,16px) clamp(8px,2vw,20px);display:flex;overflow-x:auto}.flash-thumb{opacity:.45;border-radius:10px;flex:none;transition:opacity .2s,transform .2s,box-shadow .2s;overflow:hidden}.flash-thumb img{width:auto;height:clamp(54px,9vh,96px);display:block}.flash-thumb.active{opacity:1;box-shadow:0 0 0 3px var(--coral), 0 8px 20px #00000080;transform:translateY(-6px)scale(1.08)}.wheel-obj{width:748px;height:748px;transform:scale(var(--wheel-scale,1));transform-origin:50%;place-items:center;display:grid;position:relative}.wheel-ring{pointer-events:none;border-radius:50%;margin:auto;position:absolute;inset:0}.wheel-band{background:conic-gradient(#7831c7,#5e269c,#7831c7,#5e269c,#7831c7)}.wheel-bezel{background:conic-gradient(#ffce5c,#b8892a,#ffe9a8,#b8892a,#ffce5c);box-shadow:0 3px 10px #0004}.wheel-bulbs i{background:radial-gradient(circle at 38% 34%,#fffdf2,#ffe9a8 55%,#ffce5c 100%);border-radius:50%;animation:.5s step-end infinite wheelBulb;position:absolute;top:50%;left:50%;box-shadow:0 0 18px 7px #ffce5ccc}@keyframes wheelBulb{0%,49%{opacity:1}50%,to{opacity:.2}}.wheel{will-change:transform;z-index:6;border-radius:50%;margin:auto;display:block;position:absolute;inset:0}.wheel-hub{z-index:9;background:var(--cream);border-radius:50%;place-items:center;margin:auto;display:grid;position:absolute;inset:0;overflow:hidden;box-shadow:0 0 0 5px #ffce5c,0 4px 14px #22333f66}.wheel-hub img{display:block}.wheel-ptr{z-index:20;transform-origin:49.5% 35.9%;pointer-events:none;will-change:transform;position:absolute;top:0;left:50%;translate:-50% -22%}.wheel-ptr img{filter:drop-shadow(0 6px 10px #22333f66);width:100%;height:auto;display:block}.wheel-lamp{mix-blend-mode:screen;background:radial-gradient(circle at 38% 34%,#fffdf2,#ffe9a8 55%,#ffce5c 100%);border-radius:50%;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 10px 4px #ffce5ccc}@keyframes wheelBulbAll{0%,44%{opacity:1}52%,to{opacity:.12}}.celebrate .wheel-bulbs i,.celebrate .wheel-lamp{animation:.34s step-end infinite wheelBulbAll!important}.wheel-result{z-index:9999;background:var(--cream);border:3px solid var(--purple);border-radius:24px;flex-direction:column;align-items:center;gap:10px;padding:20px 30px;animation:.5s cubic-bezier(.18,1.5,.4,1) resultPop;display:flex;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 16px 44px #22333f6b}@keyframes resultPop{0%{opacity:0;transform:translate(-50%,-50%)scale(.3)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}.wheel-result img{border-radius:12px;width:clamp(180px,27vw,330px)}.wheel-word{color:var(--ink);font-size:clamp(1.8rem,4.5vw,3.2rem);font-weight:900}.memory-grid{gap:clamp(8px,1.4vw,16px);display:grid}.mem-card{aspect-ratio:3/4;cursor:default;border-radius:12px;width:clamp(80px,11vw,150px);transition:transform .3s;overflow:hidden;box-shadow:0 6px 16px #0006}.mem-card img{object-fit:cover;width:100%;height:100%}.mem-card.up{transform:rotateY(0)}.mem-card.matched{box-shadow:0 0 0 4px #34d058,0 6px 16px #0006}.combine-row{align-items:center;gap:clamp(14px,3vw,40px);display:flex}.combine-card{flex-direction:column;align-items:center;gap:8px;transition:opacity .3s,transform .3s;display:flex}.combine-card img{border-radius:14px;width:clamp(120px,18vw,240px);box-shadow:0 10px 30px #00000080}.combine-card span{color:#fff;font-size:clamp(1.2rem,3vw,2.2rem);font-weight:900}.combine-card.dim{opacity:.25}.combine-card.on{opacity:1}.combine-plus{color:#fff;font-size:clamp(2rem,5vw,4rem);font-weight:900}.combine-together{color:#fff;background:var(--coral);border-radius:999px;margin-top:2vh;padding:12px 32px;font-size:clamp(1.8rem,5vw,3.6rem);font-weight:900;box-shadow:0 8px 24px #0006}.splicestage{flex-direction:column}.splice-row{align-items:center;gap:clamp(14px,3vw,40px);display:flex}.splice-card{flex-direction:column;align-items:center;gap:8px;transition:opacity .35s,transform .35s;display:flex}.splice-card img{border-radius:14px;width:clamp(110px,16vw,220px);box-shadow:0 10px 30px #00000080}.splice-card span{color:#fff;text-align:center;max-width:clamp(150px,20vw,280px);font-size:clamp(1rem,2.4vw,1.9rem);font-weight:900}.splice-card.dim{opacity:.25;transform:scale(.95)}.splice-card.on{opacity:1;transform:scale(1)}.splice-plus{color:#fff;opacity:.3;font-size:clamp(2rem,5vw,4rem);font-weight:900;transition:opacity .35s,transform .35s}.splice-plus.on{opacity:1;transform:scale(1.15)}.splice-together{color:#fff;background:var(--coral);border-radius:999px;margin-top:3vh;padding:14px 36px;font-size:clamp(1.8rem,5.2vw,3.8rem);font-weight:900;animation:.5s cubic-bezier(.2,1.5,.4,1) both spliceIn;box-shadow:0 8px 24px #0006}@keyframes spliceIn{0%{opacity:0;transform:scale(.55)}to{opacity:1;transform:scale(1)}}.listen-prompt{color:#fff;font-size:clamp(1.6rem,4vw,3rem);font-weight:900}.listen-row{gap:clamp(20px,5vw,60px);display:flex}.listen-card{border-radius:16px;transition:transform .2s,box-shadow .2s;overflow:hidden;box-shadow:0 8px 24px #0006}.listen-card img{width:clamp(140px,22vw,300px);display:block}.listen-card.right{transform:scale(1.06);box-shadow:0 0 0 6px #34d058,0 8px 24px #00000080}.listen-result{margin-top:2vh;font-size:clamp(1.6rem,4vw,3rem);font-weight:900}.listen-result.good{color:#34d058}.listen-result.bad{color:#ffd166}.confetti{pointer-events:none;z-index:20;position:absolute;inset:0;overflow:hidden}.confetti-piece{will-change:transform;width:11px;height:16px;animation:2.4s cubic-bezier(.3,.2,.5,1) forwards fall;position:absolute;top:-24px}.cp-sq,.cp-rect{border-radius:2px}.cp-circ{border-radius:50%}.cp-tri{border-bottom-style:solid;border-bottom-width:12px;border-left:7px solid #0000;border-right:7px solid #0000;background:0 0!important;width:0!important;height:0!important}@keyframes fall{0%{opacity:1;transform:translateY(-24px)rotate(0)}to{transform:translate(var(--drift,0px), 110vh) rotate(900deg);opacity:.95}}.confetti-big{z-index:30}.confetti-big .confetti-piece{box-shadow:0 1px 3px #0000002e}.mem-mini-grid{gap:8px;display:grid}.mem-mini{cursor:pointer;aspect-ratio:3/4;background:0 0;border:none;border-radius:10px;padding:0;transition:transform .15s,box-shadow .15s;overflow:hidden;box-shadow:0 3px 10px #00000040}.mem-mini img{object-fit:cover;width:100%;height:100%;display:block}.mem-mini:active{transform:scale(.95)}.mem-mini.matched{box-shadow:0 0 0 3px #34d058,0 3px 10px #00000040}.mem-card{position:relative}.bg-music{border-top:1px solid #00000014;flex-direction:column;align-items:center;gap:6px;margin-top:14px;padding-top:14px;display:flex}.bg-music-row{align-items:center;gap:12px;width:100%;display:flex}.phone-round.small{flex-shrink:0;width:48px;height:48px;font-size:1.3rem}.bg-slider{accent-color:var(--coral);flex:1;height:6px}.bg-music-label{color:var(--sea-deep);opacity:.8;font-size:.8rem;font-weight:700}.birthdaystage{background:radial-gradient(circle at 50% 30%,#3a2a6a 0%,#1a1140 70%);flex-direction:column;overflow:hidden}.bday-card{z-index:4;flex-direction:column;align-items:center;gap:2vh;display:flex}.bday-photo{object-fit:cover;border:8px solid #fff;border-radius:50%;width:clamp(180px,28vw,380px);height:clamp(180px,28vw,380px);box-shadow:0 12px 40px #00000080}.bday-photo.placeholder{background:#ffffff1a;justify-content:center;align-items:center;font-size:clamp(5rem,12vw,10rem);display:flex}.bday-title{color:#ffd166;text-shadow:0 3px 12px #00000080;font-size:clamp(2rem,6vw,4.5rem);font-weight:900}.bday-name{color:#fff;background:var(--coral);border-radius:999px;padding:8px 36px;font-size:clamp(1.6rem,5vw,3.5rem);font-weight:900;box-shadow:0 8px 24px #0006}.balloons{pointer-events:none;z-index:1;position:absolute;inset:0}.balloon{border-radius:50%;width:56px;height:70px;animation:6s ease-in infinite floatUp;position:absolute;bottom:-120px}.balloon:after{content:"";background:#fff6;width:1px;height:60px;position:absolute;top:100%;left:50%}@keyframes floatUp{0%{opacity:0;transform:translateY(0)rotate(-4deg)}15%{opacity:1}to{opacity:.9;transform:translateY(-110vh)rotate(4deg)}}.classroom-btn{background:var(--yellow);border-color:#e9b544}.phone-body>.classroom-btn{flex-direction:row;flex:1 0 100%;justify-content:center;gap:10px;min-height:0;padding:14px;font-size:1.5rem}.phone-input{text-align:center;width:100%;color:var(--ink);border:2px solid #0000001a;border-radius:14px;padding:14px;font-size:1.1rem;font-weight:700}.phone-upload{text-align:center;color:var(--sea-deep);cursor:pointer;background:#fff;border:2px dashed #0003;border-radius:14px;padding:14px;font-size:.95rem;font-weight:800;display:block}.phone-upload:active{transform:scale(.98)}.float-age{text-shadow:0 3px 10px #00000080;font-size:clamp(2.5rem,6vw,5rem);font-weight:900;animation:6.5s ease-in infinite floatUp;position:absolute;bottom:-80px}.bday-age{color:#ffd166;text-shadow:0 2px 8px #00000080;font-size:clamp(1.2rem,3vw,2rem);font-weight:800}.unit-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));align-content:start;gap:clamp(10px,1.6vw,18px);display:grid}.unit-card{border:2px solid var(--warm-grey);cursor:pointer;text-align:left;background:#fff;border-radius:18px;flex-direction:column;padding:0;transition:transform .12s,box-shadow .12s,border-color .12s;display:flex;overflow:hidden;box-shadow:0 2px 8px #22333f14}.unit-card:hover{border-color:var(--purple);transform:translateY(-2px);box-shadow:0 8px 20px #7831c72e}.unit-card:active{transform:translateY(0)scale(.99)}.unit-card-art{aspect-ratio:16/9;background:var(--cream);width:100%;display:block;position:relative;overflow:hidden}.unit-card-art img{object-fit:cover;width:100%;height:100%;display:block}.unit-card-emoji{justify-content:center;align-items:center;font-size:2.6rem;display:flex;position:absolute;inset:0}.unit-card-no{background:var(--purple);color:#fff;text-align:center;border-radius:999px;min-width:26px;height:26px;padding:0 7px;font-family:"Baloo 2",Nunito,sans-serif;font-size:.85rem;font-weight:800;line-height:26px;position:absolute;top:8px;left:8px;box-shadow:0 2px 6px #00000040}.unit-card-label{flex-direction:column;gap:1px;padding:9px 11px 11px;display:flex}.unit-card-kicker{letter-spacing:.06em;text-transform:uppercase;color:var(--cyan-deep);font-size:.7rem;font-weight:700}.unit-card-title{color:var(--ink);font-family:"Baloo 2",Nunito,sans-serif;font-size:1rem;font-weight:700;line-height:1.2}@media (width<=720px){.unit-grid{grid-template-columns:repeat(auto-fill,minmax(132px,1fr))}.unit-card-title{font-size:.95rem}}.balloonstage{padding:0;overflow:hidden}.balloon-stage{background:linear-gradient(#cfeaf5 0%,#eaf7fb 62%,#fff9f0 100%);position:absolute;inset:0;overflow:hidden}.balloon-b{transform-origin:50%;pointer-events:none;will-change:transform;position:absolute;top:0;left:0}.balloon-b img.b{width:100%;height:auto;display:block;position:absolute;top:0;left:0}.balloon-b canvas{width:100%;height:100%;position:absolute;top:0;left:0}.balloon-shard{pointer-events:none;will-change:transform;position:absolute;top:0;left:0}.balloon-dart{transform-origin:50%;pointer-events:none;filter:drop-shadow(0 3px 6px #22333f33);width:54px;display:none;position:absolute;top:0;left:0}.balloon-cannon{transform-origin:50% 65.7%;pointer-events:none;filter:drop-shadow(0 6px 14px #22333f33);z-index:3;width:min(26vh,190px);position:absolute;bottom:-2vh;left:50%;transform:translate(-50%)rotate(0)}.balloon-bigcard{opacity:0;z-index:60;pointer-events:none;border-radius:18px;width:min(46vh,34vw);position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)scale(.3);box-shadow:0 18px 50px #0b3b4b66}.phone-nav-row.phone-nav-wrap{flex-wrap:wrap}.phone-hint-quiet{opacity:.72;font-size:.92em}.machinestage{flex-direction:column;gap:clamp(8px,2vh,22px)}.machine-wrap{width:min(96%,1400px);margin:0 auto;line-height:0;position:relative}.machine-back{z-index:1;width:100%;height:auto;display:block;position:relative}.machine-front{z-index:3;pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.machine-card{z-index:2;border-radius:4px;transition:opacity .45s,filter .45s}.machine-card.out{opacity:0}.machine-card.in{opacity:1}.machine-card.result.in{animation:.5s cubic-bezier(.2,1.5,.4,1) both machineDrop}@keyframes machineDrop{0%{opacity:0;transform:translate(-50%,-64%)perspective(1350px)scale(.82)}to{opacity:1}}.machine-words{color:var(--ink,#22333f);justify-content:center;align-items:center;gap:clamp(10px,2.4vw,30px);font-size:clamp(16px,2.6vw,34px);font-weight:900;display:flex}.machine-words span{opacity:.3;transition:opacity .35s}.machine-words span.on{opacity:1}.machine-words i{opacity:.2;color:#7831c7;font-style:normal;transition:opacity .35s}.machine-words i.on{opacity:1}.machine-together{color:#7831c7;text-align:center;font-size:clamp(22px,4.4vw,52px);font-weight:900;animation:.5s cubic-bezier(.2,1.5,.4,1) .1s both machineDrop}.listen-row{flex-wrap:wrap;justify-content:center}.listen-row.n4 .listen-card img,.listen-row.n6 .listen-card img{max-height:30vh}.listen-row.n6 .listen-card{flex:none}:root{--surface:#fff;--line:var(--warm-grey);--muted:#6c7a84;--ground:var(--cream);--radius-card:14px;--radius-btn:8px}.app,.controller-bg{background:var(--ground)!important}.phone-screen{background:var(--ground)!important;box-shadow:none!important;border-radius:0!important}.ctrl-shell{width:min(1140px,100%)!important}.phone-head{background:var(--purple-deep)!important;color:#fff!important;border-bottom:0!important}.phone-head,.phone-head *{color:#fff!important}.phone-head .dim,.phone-head .phone-meta{color:#ffffffc7!important}.app,.phone-body{font-size:17px;line-height:1.6}.phone-body h3{letter-spacing:-.02em;font-family:"Baloo 2",system-ui,sans-serif;font-weight:800}.phone-hint{font-weight:600;color:var(--muted)!important}.unit-card,.card,.quiet{background:var(--surface)!important;border:1px solid var(--line)!important;border-radius:var(--radius-card)!important;box-shadow:none!important}.unit-card:hover{border-color:var(--purple)!important;transform:none!important}.unit-card-kicker{letter-spacing:.14em;font-weight:700;color:var(--muted)!important}.unit-card-title{color:var(--text,var(--ink))!important}.unit-card-no{background:var(--purple)!important;border-radius:999px!important}.phone-big,.phone-nav,.btn,.fx-clear,.jump-btn{border-radius:var(--radius-btn)!important;box-shadow:none!important}.phone-big{font-weight:700;background:var(--purple)!important;color:#fff!important;border:0!important}.phone-big span{color:#fff!important}.phone-big:hover{background:var(--purple-deep)!important}.say-btn{background:var(--yellow)!important;color:#4a3200!important;border:0!important}.say-btn span{color:#4a3200!important}.say-btn:disabled{opacity:.45!important}.phone-nav{background:var(--surface)!important;border:1px solid var(--line)!important;color:var(--ink)!important}.phone-nav.next{background:var(--purple)!important;border-color:var(--purple)!important;color:#fff!important}.phone-body>.classroom-btn,.phone-big.classroom-btn{background:var(--yellow)!important;color:#4a3200!important;border-radius:var(--radius-btn)!important;border:0!important}.phone-body>.classroom-btn span,.phone-big.classroom-btn span{color:#4a3200!important}.phone-link{font-weight:700;color:var(--purple)!important}.school-btn,.teacher-btn,.class-btn,.mode-btn{background:var(--surface)!important;border:1px solid var(--line)!important;border-radius:var(--radius-card)!important;box-shadow:none!important}.school-btn:hover,.teacher-btn:hover,.class-btn:hover,.mode-btn:hover{border-color:var(--purple)!important}.pin-key{background:var(--surface)!important;border:1px solid var(--line)!important;border-radius:var(--radius-btn)!important;box-shadow:none!important}.wheel-result,.mem-card,.combine-card,.listen-opt{border-radius:var(--radius-card)!important;box-shadow:none!important}.wheel-result,.mem-card,.listen-opt{background:var(--surface)!important;border:1px solid var(--line)!important}.mem-card.matched{border-color:var(--cyan)!important}.combine-together{color:var(--purple)!important}.viewer{background:#0a2030!important}.controller-bg .back,.app>.back{z-index:50;background:var(--surface)!important;color:var(--purple)!important;border:1px solid var(--line)!important;border-radius:var(--radius-btn)!important;padding:8px 14px!important;font-size:.92rem!important;top:14px!important;left:18px!important}.controller-bg .back:hover,.app>.back:hover{border-color:var(--purple)!important}.hint.light{color:var(--muted)!important}.viewer-gone{background:var(--yellow,#ffce5c);border-radius:var(--radius-btn,8px);text-align:center;max-width:1140px;margin:10px auto 0;padding:10px 14px;font-weight:700;color:#4a3200!important}.rev-dial{background:var(--surface,#fff);border:1px solid var(--line,#d9d2c7);border-radius:var(--radius-card,14px);width:100%;margin:4px 0 10px;padding:12px}.phone-body>.rev-dial{flex:1 0 100%}.rev-dial-label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted,#6c7a84);margin-bottom:8px;font-size:.78rem;font-weight:700;display:block}.rev-dial-steps{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.rev-step{border:1px solid var(--line,#d9d2c7);border-radius:var(--radius-btn,8px);background:var(--surface,#fff);color:var(--ink,#22333f);font:inherit;cursor:pointer;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;font-size:.86rem;font-weight:700;display:flex}.rev-step small{color:var(--muted,#6c7a84);font-size:.7rem;font-weight:600}.rev-step.on{background:var(--purple,#7831c7);border-color:var(--purple,#7831c7);color:#fff}.rev-step.on small{color:#fffc}.rev-step:disabled{opacity:.5;cursor:default}.stale-notice{background:var(--yellow,#ffce5c);color:#4a3200;text-align:center;border-radius:var(--radius-btn,8px);max-width:1140px;margin:8px auto;padding:10px 16px;font-weight:700}.stale-notice button{border-radius:var(--radius-btn,8px);color:#fff;font:inherit;cursor:pointer;background:#4a3200;border:0;margin-left:12px;padding:4px 12px}
