/* ====== 3D-Полигон (экспериментальный режим, CSS 3D) ====== */
.g3d-stage{
  position:relative;height:440px;border-radius:14px;overflow:hidden;
  background:linear-gradient(180deg,#bfe0ff 0%,#eaf4ff 55%,#f2f6ff 100%);
  touch-action:none;cursor:grab;border:1px solid var(--border);
}
.g3d-stage:active{cursor:grabbing}
.g3d-hint{position:absolute;top:10px;left:50%;transform:translateX(-50%);background:rgba(255,255,255,.85);
  border-radius:99px;padding:3px 14px;font-size:12px;color:var(--muted);z-index:5;pointer-events:none}
.g3d-world{position:absolute;left:50%;top:55%;width:0;height:0;transform-style:preserve-3d}
.g3d-floor{position:absolute;background:#eef3fb;border:2px solid #d8e1f0;
  background-image:linear-gradient(#e2e9f6 1px,transparent 1px),linear-gradient(90deg,#e2e9f6 1px,transparent 1px);
  background-size:64px 64px;border-radius:6px}
.cface{position:absolute;transform-origin:0 0}
.g3d-robot{position:absolute;transform-style:preserve-3d;transition:transform .18s ease}
.g3d-ant{width:6px;height:6px;border-radius:50%;background:#00a2e8;box-shadow:0 0 10px #00a2e8}
.g3d-coin{position:absolute;font-size:22px;animation:coinBob 1.6s ease-in-out infinite}
@keyframes coinBob{0%,100%{margin-top:0}50%{margin-top:-6px}}
.g3d-flag{position:absolute;font-size:42px;transform-origin:bottom center;animation:flagWave 2.2s ease-in-out infinite}
@keyframes flagWave{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}
.g3d-paint{position:absolute;background:var(--primary);border-radius:6px;opacity:.85}

.g3d-controls{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;margin-top:12px}
.g3d-dpad{display:grid;grid-template-columns:repeat(3,52px);gap:6px;justify-items:center}
.g3d-dpad .btn{width:52px;justify-content:center;font-size:17px}
.g3d-cam{display:flex;gap:6px;flex-wrap:wrap}
.g3d-cam .btn{min-height:0;padding:6px 12px}
.g3d-locked{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.7);z-index:6;font-size:14px;color:var(--muted)}
