body.g3d{background:#E9E4FF}
.g3d .panel{background:rgba(233,228,255,.35);backdrop-filter:none;-webkit-backdrop-filter:none}
.g3d #lobby{align-items:flex-end;padding-bottom:calc(env(safe-area-inset-bottom) + 14px)}
.g3d #lobby .card{padding-top:16px}
.badge3d{font-size:13px;vertical-align:top;background:var(--k);color:#fff;border-radius:8px;padding:2px 6px;margin-left:2px;letter-spacing:0}
.proto a{color:var(--o);font-weight:700}
#joyZone{position:absolute;left:0;bottom:0;width:52%;height:62vh;pointer-events:auto;touch-action:none}
#joy{position:absolute;left:28px;bottom:calc(env(safe-area-inset-bottom) + 28px);width:124px;height:124px;border-radius:50%;border:3px solid rgba(13,13,13,.55);background:rgba(255,255,255,.35);pointer-events:none;transition:opacity .15s}
#joy.idle{opacity:.55}
#knob{position:absolute;left:50%;top:50%;width:56px;height:56px;margin:-28px 0 0 -28px;border-radius:50%;background:var(--o);border:3px solid var(--k);box-shadow:2px 2px 0 var(--k)}
.g3d .jump{right:18px;bottom:calc(env(safe-area-inset-bottom) + 22px);width:96px;height:96px}
.g3d .dive{right:124px;bottom:calc(env(safe-area-inset-bottom) + 30px);width:70px;height:70px;font-size:14px;background:rgba(255,197,51,.95)}
.g3d .dive.on{background:var(--k);color:#fff}
.g3d #touch{height:auto;top:0}
.g3d #lobby .card{padding:16px 18px 14px}
.g3d h1{font-size:30px}
.g3d .howto{font-size:12px;padding:8px 10px}

.g3d #c{cursor:grab}
body.camdrag #c{cursor:grabbing}

/* 3-round match */
.fmt{display:flex;gap:6px;justify-content:center;flex-wrap:wrap;margin:4px 0 8px}
.fmt span{font-size:11.5px;font-weight:800;background:var(--bg);border:1.5px solid var(--k);border-radius:999px;padding:3px 9px}
.rnd{color:var(--o);font-family:U,P,sans-serif}
.rtitle{position:absolute;top:calc(env(safe-area-inset-top) + 112px);left:50%;transform:translateX(-50%);background:#fff;border:2px solid var(--k);border-radius:20px;padding:10px 22px 11px;text-align:center;box-shadow:5px 5px 0 var(--o);min-width:220px;animation:rtin .35s ease-out}
.rtitle.fin{box-shadow:5px 5px 0 var(--gold);background:#FFF8E1}
.rtitle .rr{font-family:U,P,sans-serif;font-weight:900;font-size:13px;letter-spacing:.08em;color:var(--o)}
.rtitle.fin .rr{color:#C98A00}
.rtitle .rn{font-weight:900;font-size:26px;line-height:1.25}
.rtitle .ru{font-weight:800;font-size:13px;color:var(--g)}
@keyframes rtin{from{opacity:0;transform:translate(-50%,-12px) scale(.94)}to{opacity:1;transform:translate(-50%,0)}}
.resCourse{font-size:13px;font-weight:700;color:var(--g);margin:-4px 0 8px}
.resMe{border:2px solid var(--k);border-radius:12px;padding:7px 10px;font-weight:900;font-size:15px;margin-bottom:10px}
.resMe.ok{background:#C9F5DF}.resMe.out{background:#FFD6DE}.resMe.spec{background:var(--bg)}
.res .tm.q{color:#0E9F62;font-weight:900;font-family:inherit}
.res .tm.x{color:#E0435E;font-weight:900;font-family:inherit}
.res li.out{opacity:.62}
.resBtns{display:flex;gap:10px}
.resBtns .cta{font-size:16px;padding:12px}
.cta.ghost{background:#fff;color:var(--k)}
.vic .crown{font-size:58px;line-height:1;margin-top:4px;animation:crown 1.4s ease-in-out infinite}
@keyframes crown{0%,100%{transform:translateY(0) rotate(-6deg)}50%{transform:translateY(-6px) rotate(6deg)}}
.vic .vsw{width:30px;height:30px;border-radius:50%;border:3px solid var(--k);margin:6px auto 0}
.vic h2{font-size:28px;margin:6px 0 2px}
.vic .vsub{margin:2px 0 8px;color:var(--g);font-size:14px}
.vic .vme{font-weight:800;font-size:14px;background:var(--bg);border-radius:12px;padding:7px 10px}
@media (max-height:480px){.rtitle{top:calc(env(safe-area-inset-top) + 84px);padding:6px 16px}.rtitle .rn{font-size:20px}.vic .crown{font-size:40px}}
