/* 3D 派对（js/3d-party.js）：转瓶子 / 炸弹传递 / 国王游戏 / 小姐牌 */
.p3-hid { display: none !important; }
.p3-box { position: relative; margin: 2px -14px 8px; }
.p3-box[hidden] { display: none; }
.p3-box .p3-stage { aspect-ratio: 1 / 1; max-height: 54svh; min-height: 250px; border-radius: 18px;
  background: radial-gradient(85% 70% at 50% 42%, #2c0a18, #0a0406 78%); box-shadow: inset 0 0 0 1px #d9b26f1f; }
.p3-bt .p3-stage { aspect-ratio: 1 / .98; max-height: 56svh; }
.p3-bm .p3-stage { aspect-ratio: 1 / .86; max-height: 44svh; }
.p3-kg .p3-stage { aspect-ratio: 1 / .92; max-height: 46svh; }
.p3-cp .p3-stage { aspect-ratio: 1 / .86; max-height: 46svh; }
.p3-loading .p3-stage::after { content: ''; position: absolute; left: 50%; top: 50%; width: 44px; height: 44px; margin: -22px; border-radius: 50%;
  border: 1.5px solid #d9b26f33; border-top-color: #d9b26f; animation: p3spin 1s linear infinite; }
@keyframes p3spin { to { transform: rotate(360deg); } }
.p3-vig { border-radius: 18px; }
.p3-tip { position: absolute; left: 0; right: 0; bottom: 10px; text-align: center; font: 500 12px var(--serif, serif); letter-spacing: .22em;
  color: var(--gold2, #f3dcaa); opacity: 0; transition: opacity .4s; pointer-events: none; text-shadow: 0 2px 8px #000; }
.p3-tip.on { opacity: .85; }
/* 揭牌动画演完前，下面的题目 / 按钮先藏着 */
.p3-box ~ * { transition: opacity .35s var(--ease, ease), transform .35s var(--ease, ease); }
main > .p3-wait { opacity: 0; transform: translateY(10px); pointer-events: none; }
/* 闪光 */
.p3-flash { position: absolute; inset: 0; border-radius: 18px; pointer-events: none; opacity: 0; }
.p3-flash.on.gold { background: radial-gradient(60% 50% at 50% 40%, #ffe2a0aa, #ffb84a33 45%, transparent 75%); animation: p3fl 1.1s ease-out; }
.p3-flash.on.red { background: radial-gradient(70% 60% at 50% 45%, #ff3d6e99, transparent 75%); animation: p3fl .9s ease-out; }
.p3-flash.on.soft { background: radial-gradient(50% 45% at 50% 45%, #fff3d088, transparent 70%); animation: p3fl .5s ease-out; }
.p3-flash.on.pop { background: radial-gradient(65% 55% at 50% 45%, #fffef8, #ffe7b0dd 35%, #ffb84a55 60%, transparent 82%); animation: p3pop .85s ease-out; }
.p3-flash.on.cam { background: #fff; animation: p3pop .45s ease-out; }
.p3-flash.on.boom { background: radial-gradient(75% 65% at 50% 50%, #fffaf0, #ffb070 25%, #e0284f 55%, #3a0008); animation: p3boom 1.7s ease-out forwards; }
@keyframes p3fl { 0% { opacity: 0; } 12% { opacity: 1; } 100% { opacity: 0; } }
@keyframes p3pop { 0% { opacity: 1; } 100% { opacity: 0; } }
@keyframes p3boom { 0% { opacity: 1; } 15% { opacity: 1; } 60% { opacity: .55; } 100% { opacity: .2; } }
