/* 友達と遊ぶ（PRIVATE ROOM）UI。街画面をマルチプレイUIだらけにしない: 右上👥 / 小さなエモートボタン / 必要なときだけバナー */
#partyChip{position:absolute;right:8px;top:6px;z-index:13;border:0;border-radius:16px;padding:4px 11px;min-height:34px;min-width:44px;background:rgba(255,255,255,.92);color:var(--ink,#2b2858);font-size:14px;font-weight:900;box-shadow:0 3px 0 rgba(35,38,82,.2)}
#partyChip.on{background:#6d5ce8;color:#fff}
#partyChip.warn{background:#ff8c42;color:#fff;animation:pulse 1s infinite}
#partyBar{position:absolute;right:8px;bottom:12px;z-index:21;display:flex;flex-direction:column;align-items:flex-end;gap:6px}
#partyBar .row{display:none;gap:5px;background:rgba(255,255,255,.95);border-radius:24px;padding:5px;box-shadow:0 4px 0 rgba(35,38,82,.2)}
#partyBar.open .row{display:flex}
#partyBar button{min-width:42px;min-height:42px;border:0;border-radius:21px;background:#fff;font-size:21px;box-shadow:0 3px 0 rgba(35,38,82,.18)}
#partyBar .row button{box-shadow:none;background:transparent;min-width:38px}
#partyBar .main{background:#6d5ce8;color:#fff;font-size:20px}
#partyBn{position:absolute;left:8px;right:8px;top:46px;z-index:22;display:flex;flex-direction:column;gap:6px;pointer-events:none}
#partyBn .bn{pointer-events:auto;display:flex;align-items:center;gap:8px;background:#fff;border-radius:16px;padding:7px 10px;font-weight:800;font-size:13px;box-shadow:0 3px 0 rgba(35,38,82,.22);animation:tk2 .3s both}
#partyBn .bn span{flex:1}
#partyBn .bn button{min-height:36px;border:0;border-radius:18px;padding:0 14px;background:#6d5ce8;color:#fff;font-weight:900;font-size:14px}
#partyBn .bn button.no{background:#e8e8f2;color:#555;padding:0 10px}
@keyframes tk2{from{opacity:0;translate:0 -8px}}
#reconn{position:absolute;left:50%;top:48px;translate:-50% 0;z-index:30;background:#ff8c42;color:#fff;font-weight:900;padding:6px 16px;border-radius:16px;box-shadow:0 3px 0 rgba(0,0,0,.25);animation:pulse 1s infinite}
.actor.peer,.actor.mine{transition:none}
.actor.peer .tag{left:-34px;width:68px;background:rgba(109,92,232,.92);font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.actor.mine .tag{left:-34px;width:68px;background:#ff8c42}
.actor.peer.far .tag{font-size:8px;opacity:.85}
.actor.peer .bub,.actor.mine .bub{top:-88px}
.actor.peer .p-dance{animation-duration:calc(.441s * var(--dv,1))!important}
.actor.peer .p-dance .arm,.actor.mine .p-dance .arm{animation-duration:calc(.441s * var(--dv,1))!important}
.actor.peer .host{position:absolute;left:50%;top:-14px;translate:-50% 0;font-size:11px}
.say2{position:absolute;left:50%;top:-110px;translate:-50% 0;background:#fff;color:#2b2858;font-size:11px;font-weight:900;padding:3px 8px;border-radius:10px;white-space:nowrap;box-shadow:0 2px 0 rgba(0,0,0,.2);animation:emUp 3.2s ease-out forwards;z-index:9}
.em2{position:absolute;left:50%;top:-100px;translate:-50% 0;font-size:24px;pointer-events:none;animation:emUp 1.6s ease-out forwards;z-index:9}
.prow{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid #eee}
.prow .fig{width:44px;height:62px;flex:none;position:relative}
.prow .fig .rig{scale:.8;transform-origin:0 0}
.prow b{display:block;font-size:16px}.prow small{opacity:.7}
.codebox{display:flex;gap:8px;align-items:center;justify-content:center;background:#f1efff;border-radius:16px;padding:10px;margin:8px 0}
.codebox b{font-size:30px;letter-spacing:.12em;color:#4b3fa8}
.pgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:8px 0}
.pgrid button{min-height:56px;border:0;border-radius:16px;background:#f1efff;font-weight:900;font-size:15px;color:#2b2858}
.pgrid button small{display:block;font-weight:700;font-size:11px;opacity:.7}
.presetcat{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0}
.presetcat button{min-height:36px;border:0;border-radius:18px;padding:0 12px;background:#e8e8f2;font-weight:800}
.presetcat button.on{background:#6d5ce8;color:#fff}
.plines{display:flex;flex-direction:column;gap:6px}
.plines button{min-height:46px;border:0;border-radius:14px;background:#fff;box-shadow:0 2px 0 rgba(0,0,0,.15);font-weight:800;font-size:16px;text-align:left;padding:0 14px}
.gcard{position:relative;border-radius:18px;overflow:hidden;background:linear-gradient(#ffe9c7,#ffb27d);min-height:230px;padding:10px;box-shadow:0 4px 0 rgba(0,0,0,.2)}
.gcard[data-theme=night]{background:linear-gradient(#0b0c33,#2a2f8a);color:#fff}
.gcard[data-theme=sunset]{background:linear-gradient(#ff8a4d,#7a4fa0);color:#fff}
.gcard h4{margin:0 0 4px;font-size:14px;text-align:center}
.gcard .row{display:flex;justify-content:center;align-items:flex-end;gap:2px;min-height:78px}
.gcard .row .cell{position:relative;width:44px;height:62px}
.gcard .row .cell .rig{scale:1;transform-origin:0 0}
.gcard .row.stg{margin-bottom:6px}
.gcard small{display:block;text-align:center;opacity:.85;margin-top:4px;font-weight:800}
/* BEAT TAP PARTY */
.bp{position:absolute;inset:0;z-index:40;background:linear-gradient(#1b1d4d,#3a2a7a);color:#fff;display:flex;flex-direction:column}
.bp .hd{padding:8px 12px;font-weight:900;display:flex;justify-content:space-between;align-items:center}
.bp .scores{display:flex;gap:6px;flex-wrap:wrap;padding:0 10px;font-size:11px;font-weight:800}
.bp .scores span{background:rgba(255,255,255,.15);border-radius:10px;padding:2px 8px}
.bp .scores span.me{background:#ff8c42}
.bp .lanes{position:relative;flex:1;display:grid;grid-template-columns:repeat(4,1fr);gap:4px;padding:6px 10px 0}
.bp .lane{position:relative;background:rgba(255,255,255,.08);border-radius:10px;overflow:hidden}
.bp .note{position:absolute;left:10%;width:80%;height:26px;border-radius:13px;background:#ffd93d;box-shadow:0 0 12px rgba(255,217,61,.8)}
.bp .line{position:absolute;left:10px;right:10px;bottom:76px;height:3px;background:#fff;border-radius:2px;box-shadow:0 0 10px #fff}
.bp .pads{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:6px 10px calc(10px + env(safe-area-inset-bottom,0px))}
.bp .pads button{min-height:72px;border:0;border-radius:18px;background:#6d5ce8;color:#fff;font-size:26px;font-weight:900;box-shadow:0 5px 0 #3b2fa8}
.bp .pads button:active{translate:0 3px;box-shadow:0 2px 0 #3b2fa8}
.bp .fb{position:absolute;left:50%;top:38%;translate:-50% 0;font-size:34px;font-weight:900;text-shadow:0 3px 8px rgba(0,0,0,.6);pointer-events:none;animation:emUp .8s forwards}
.bp .cd{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:90px;font-weight:900;pointer-events:none}
