@keyframes dance{0%{transform:translateY(0)rotate(0)scale(1)}10%{transform:translateY(-20px)rotate(-8deg)scale(1.05)}20%{transform:translateY(-10px)rotate(8deg)scale(1.1)}30%{transform:translateY(-25px)rotate(-5deg)scale(1.05)}40%{transform:translateY(-5px)rotate(5deg)scale(1)}50%{transform:translateY(-30px)rotate(0)scale(1.15)}60%{transform:translateY(-5px)rotate(-8deg)scale(1.05)}70%{transform:translateY(-20px)rotate(8deg)scale(1)}80%{transform:translateY(-10px)rotate(-5deg)scale(1.1)}90%{transform:translateY(-20px)rotate(5deg)scale(1.05)}to{transform:translateY(0)rotate(0)scale(1)}}@keyframes spin{0%{transform:rotate(0)scale(1)}25%{transform:rotate(90deg)scale(1.1)}50%{transform:rotate(180deg)scale(1)}75%{transform:rotate(270deg)scale(1.1)}to{transform:rotate(360deg)scale(1)}}@keyframes bounce{0%,to{transform:translateY(0)scaleY(1)}40%{transform:translateY(-40px)scaleY(1.1)}60%{transform:translateY(-30px)scaleY(.95)}}@keyframes sway{0%{transform:rotate(-15deg)translate(0)}25%{transform:rotate(15deg)translate(10px)}50%{transform:rotate(-15deg)translate(0)}75%{transform:rotate(15deg)translate(-10px)}to{transform:rotate(-15deg)translate(0)}}@keyframes pulse-glow{0%,to{filter:drop-shadow(0 0 8px #ffc86499)}50%{filter:drop-shadow(0 0 24px #ffc864)}}@keyframes note-float{0%{opacity:0;transform:translateY(0)scale(.5)rotate(0)}20%{opacity:1}80%{opacity:1}to{opacity:0;transform:translateY(-80px)scale(1.2)rotate(20deg)}}@keyframes bg-pulse{0%,to{background-position:0%}50%{background-position:100%}}.dancing{will-change:transform, filter;animation:.8s ease-in-out infinite dance,.8s ease-in-out infinite pulse-glow}.spinning{will-change:transform, filter;animation:1s linear infinite spin,1s ease-in-out infinite pulse-glow}.bouncing{will-change:transform, filter;animation:.6s ease-in-out infinite bounce,.6s ease-in-out infinite pulse-glow}.swaying{will-change:transform, filter;animation:1s ease-in-out infinite sway,1s ease-in-out infinite pulse-glow}.idle{filter:drop-shadow(0 4px 12px #0000004d);transition:filter .3s}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);justify-content:center;align-items:center;min-height:100vh;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;display:flex}#root{justify-content:center;align-items:center;width:100%;min-height:100vh;display:flex}.layout{flex-direction:column;align-items:center;gap:2rem;width:100%;max-width:600px;margin:0 auto;padding:2rem;display:flex}.title{color:#fff;text-shadow:0 2px 12px #0000004d;text-align:center;font-size:2.5rem}.subtitle{color:#ffffffd9;text-align:center;margin-top:-1.2rem;font-size:1.1rem}.stage{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff26;border-radius:2rem;flex-direction:column;align-items:center;gap:2rem;width:100%;padding:2.5rem 2rem;display:flex;box-shadow:0 8px 32px #0003}.cat-wrapper{justify-content:center;align-items:flex-end;width:200px;height:260px;display:flex;position:relative}.cat-image{object-fit:contain;cursor:pointer;-webkit-user-select:none;user-select:none;width:200px;height:220px}.notes-container{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.music-note{color:#fff;text-shadow:0 1px 4px #0000004d;will-change:transform, opacity;animation:1.2s ease-in-out infinite note-float;position:absolute;top:0}.controls{flex-direction:column;align-items:center;gap:1rem;width:100%;display:flex}.btn-main{cursor:pointer;color:#764ba2;letter-spacing:.03em;background:#fff;border:none;border-radius:2rem;padding:.85rem 2.5rem;font-size:1.1rem;font-weight:700;transition:transform .15s,box-shadow .15s,background .2s;box-shadow:0 4px 15px #0003}.btn-main:hover{transform:translateY(-2px);box-shadow:0 6px 20px #00000040}.btn-main:active{transform:translateY(0)}.btn-main.playing{color:#fff;background:#ff6b9d}.mode-buttons{flex-wrap:wrap;justify-content:center;gap:.6rem;display:flex}.btn-mode{cursor:pointer;color:#fff;background:0 0;border:2px solid #fff9;border-radius:1.5rem;padding:.5rem 1rem;font-size:.9rem;font-weight:500;transition:all .15s}.btn-mode:hover{background:#fff3;border-color:#fff}.btn-mode.active{color:#764ba2;background:#fff;border-color:#fff;font-weight:700}@media (width<=480px){.title{font-size:1.8rem}.cat-image{width:160px;height:176px}.cat-wrapper{width:160px;height:210px}.stage{padding:1.5rem 1rem}.btn-main{padding:.75rem 2rem;font-size:1rem}.btn-mode{padding:.4rem .8rem;font-size:.8rem}}@media (width>=768px){.title{font-size:3rem}.cat-image{width:240px;height:264px}.cat-wrapper{width:240px;height:300px}}
