/* =========================================================
   アイドルうさぎのうさこ
   白いうさぎ＋ピンクとラベンダーの王道アイドル配色
   ========================================================= */

/* 顔：長い耳、小さな鼻、まつげ、ほっぺ、センターリボン。 */
.pig.face-rabbit .acc-shop-usamimi,
.pig.face-rabbit .acc-cat-nose,
.pig.face-rabbit .acc-whiskers,
.pig.face-rabbit .acc-blush,
.pig.face-rabbit .acc-nagomi-lash,
.pig.face-rabbit .acc-bow {
  opacity: 1;
}

.pig.face-rabbit .ear,
.pig.face-rabbit .nose-group {
  opacity: 0;
}

.pig.face-rabbit .face {
  fill: #fff9fd;
  stroke: #e8c9df;
  stroke-width: 2.4;
  filter: drop-shadow(0 4px 5px rgba(116, 63, 104, .14));
}

.pig.face-rabbit .cheek { fill: #ffb4cf; }
.pig.face-rabbit .eye {
  transform-box: fill-box;
  transform-origin: center;
  transform: scale(1.26);   /* なごみと同じぱっちり大きめの目 */
}
.pig.face-rabbit .eye-white { fill: #fff; }
.pig.face-rabbit .eye-pupil { fill: #4c3155; }
.pig.face-rabbit .eye-shine { fill: #fff; }

.pig.face-rabbit .acc-shop-usamimi .ua-outer {
  fill: #fff9fd;
  stroke: #d8b6d2;
  stroke-width: 3;
}
.pig.face-rabbit .acc-shop-usamimi .ua-inner {
  fill: #ffb8d5;
  stroke: #f39aba;
  stroke-width: 1.5;
}
.pig.face-rabbit .acc-cat-nose {
  fill: #f15f9a;
  stroke: #bd3f79;
  stroke-width: 1.2;
}
.pig.face-rabbit .acc-whiskers {
  stroke: #c99bb8;
  stroke-width: 2;
  opacity: .72;
}
.pig.face-rabbit .acc-nagomi-lash { stroke: #56334d; }
.pig.face-rabbit .acc-blush { fill: #ff91b8; opacity: .7; }
.pig.face-rabbit .acc-bow path { fill: #ff4f9a; }
.pig.face-rabbit .acc-bow circle {
  fill: #ffd85d;
  stroke: #e4a92d;
  stroke-width: 1.5;
}
.pig.face-rabbit .mouth {
  transform-box: fill-box;
  transform-origin: center;
  transform: translateY(-18px) scale(.78);
  stroke: #b44f7e;
}

.pig.face-rabbit .acc-cat-nose.usako-nose-boop {
  animation: usakoNoseBoop .3s ease;
  transform-box: fill-box;
  transform-origin: center;
}
@keyframes usakoNoseBoop {
  0%, 100% { transform: scale(1); }
  38% { transform: scale(1.45, .68); }
  68% { transform: scale(.88, 1.2); }
}

/* ブヒ部屋：白い体と、綿菓子のような丸いしっぽ。 */
.roompig.face-rabbit .rp-body,
.roompig.face-rabbit .rp-leg {
  fill: #fff9fd;
  stroke: #e5c9dc;
  stroke-width: 1.5;
}
.roompig.face-rabbit .rp-usako-tail .ut-puff {
  fill: #fff9fd;
  stroke: #dcbfd4;
  stroke-width: 2;
}
.roompig.face-rabbit .rp-usako-tail .ut-shine { fill: rgba(255,255,255,.9); }
.roompig.face-rabbit .rp-usako-tail { animation: usakoTailWiggle 1.15s ease-in-out infinite; }
.room-pig.idol-live .rp-usako-tail { animation-duration: .34s; }
@keyframes usakoTailWiggle {
  0%, 100% { transform: rotate(-7deg); transform-origin: 250px 238px; }
  50% { transform: rotate(8deg); transform-origin: 250px 238px; }
}

/* 固定のアイドル衣装。 */
.rp-usako-idol { pointer-events: none; }
.rp-usako-idol .ui-skirt-back {
  fill: #d995ff;
  stroke: #9f5bc8;
  stroke-width: 2;
}
.rp-usako-idol .ui-skirt-mid {
  fill: #ff71b1;
  stroke: #d94a8d;
  stroke-width: 2;
}
.rp-usako-idol .ui-skirt-front {
  fill: #fff7fd;
  stroke: #efbddb;
  stroke-width: 2;
}
.rp-usako-idol .ui-bodice {
  fill: #ff5ca5;
  stroke: #c93c81;
  stroke-width: 2;
}
.rp-usako-idol .ui-collar { fill: #fff9fd; stroke: #e7bbd6; stroke-width: 1.5; }
.rp-usako-idol .ui-belt { fill: #ffd75c; stroke: #d6a930; stroke-width: 1.5; }
.rp-usako-idol .ui-chest-bow path { fill: #9d65db; }
.rp-usako-idol .ui-chest-bow circle { fill: #fff1a8; stroke: #d5a72c; stroke-width: 1.2; }
.rp-usako-idol .ui-mic rect { fill: #7c5b88; }
.rp-usako-idol .ui-mic circle { fill: #d8d1e2; stroke: #6e5678; stroke-width: 2; }
.rp-usako-idol .ui-mic path { fill: none; stroke: #8d7898; stroke-width: 1.6; }
.rp-usako-idol .ui-stars path { fill: #ffe35f; filter: drop-shadow(0 0 3px rgba(255,221,65,.8)); }
.rp-usako-idol .ui-notes {
  opacity: 0;
  fill: #ff4f9a;
  stroke: #ff4f9a;
  stroke-width: 4;
  stroke-linecap: round;
  stroke-linejoin: round;
}

/* ミニライブ／デュエット：飛び跳ね、音符と星が舞う。 */
.room-pig.idol-live,
.room-pig.usako-duet { animation: usakoStageHop .42s ease-in-out infinite; }
.room-pig.idol-live .rp-usako-idol .ui-notes,
.room-pig.usako-duet .rp-usako-idol .ui-notes {
  opacity: 1;
  animation: usakoNotes 1s ease-in-out infinite;
}
.room-pig.idol-live .rp-usako-idol .ui-stars,
.room-pig.usako-duet .rp-usako-idol .ui-stars {
  animation: usakoStars .55s ease-in-out infinite alternate;
  transform-origin: center;
}
.room-pig.idol-live .rp-usako-idol .ui-mic,
.room-pig.usako-duet .rp-usako-idol .ui-mic {
  animation: usakoMic .42s ease-in-out infinite alternate;
  transform-origin: 212px 190px;
}
/* ユニコ：いっしょに歌ってスウィング */
.room-pig.singing-along { animation: usakoSway .5s ease-in-out infinite; transform-origin: 50% 90%; }
@keyframes usakoSway { 0%, 100% { transform: rotate(-4deg); } 50% { transform: rotate(4deg); } }
/* 歌っている間にふわっと舞う音符 */
.usako-note {
  position: absolute; transform: translate(-50%, -50%); pointer-events: none; z-index: 6;
  font-size: 1.15rem; font-weight: 800; color: #ff5fa0; text-shadow: 0 1px 2px rgba(255,255,255,.8);
  animation: usakoNoteFloat 1.5s ease-out forwards;
}
@keyframes usakoNoteFloat {
  0% { opacity: 0; transform: translate(-50%, -50%) scale(.6); }
  20% { opacity: 1; }
  100% { opacity: 0; transform: translate(-50%, -160%) scale(1.1); }
}
/* 大ファンの目ハート（うさこの近くで） */
.acc-heart-eyes path { fill: #ff4f8b; }
.room-pig.fan-struck .acc-heart-eyes { opacity: 1; }
.room-pig.fan-struck .eye { opacity: 0; }
@keyframes usakoStageHop {
  0%, 100% { transform: translateY(0) rotate(-2deg); }
  50% { transform: translateY(-12px) rotate(2deg); }
}
@keyframes usakoNotes {
  0% { opacity: 0; transform: translateY(9px) scale(.8); }
  35% { opacity: 1; }
  100% { opacity: 0; transform: translateY(-17px) scale(1.08); }
}
@keyframes usakoStars {
  from { opacity: .45; transform: scale(.85) rotate(-5deg); }
  to { opacity: 1; transform: scale(1.12) rotate(5deg); }
}
@keyframes usakoMic {
  from { transform: rotate(-22deg); }
  to { transform: rotate(-8deg); }
}

@media (prefers-reduced-motion: reduce) {
  .room-pig.idol-live,
  .room-pig.usako-duet,
  .room-pig.singing-along,
  .room-pig.idol-live .rp-usako-idol .ui-notes,
  .room-pig.usako-duet .rp-usako-idol .ui-notes,
  .room-pig.idol-live .rp-usako-idol .ui-stars,
  .room-pig.usako-duet .rp-usako-idol .ui-stars,
  .room-pig.idol-live .rp-usako-idol .ui-mic,
  .room-pig.usako-duet .rp-usako-idol .ui-mic,
  .usako-note {
    animation: none;
  }
  .room-pig.idol-live .rp-usako-idol .ui-notes,
  .room-pig.usako-duet .rp-usako-idol .ui-notes { opacity: 1; }
}
