/* v7 mobile-game controls */
.c7-host,.r3d-stage,.xp-stage{touch-action:none;overscroll-behavior:contain;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.c7{-webkit-tap-highlight-color:transparent;touch-action:none}
/* right-hand control column */
.c7-btns{position:absolute;right:12px;top:96px;z-index:4;display:flex;flex-direction:column;gap:10px}
.xp .c7-btns{right:calc(env(safe-area-inset-right) + 12px);top:calc(env(safe-area-inset-top) + 108px)}
.c7-b{width:52px;height:52px;border:0;border-radius:16px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;background:rgba(255,255,255,.92);color:var(--ink,#2a1450);box-shadow:0 4px 0 rgba(90,30,140,.35),0 8px 16px rgba(60,0,90,.25);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.c7-b i{font:900 20px/1 Archivo,system-ui;font-style:normal}.c7-b span{font:800 9.5px Inter,system-ui;letter-spacing:.06em;text-transform:uppercase;opacity:.75}
.c7-b:active{transform:translateY(3px);box-shadow:0 1px 0 rgba(90,30,140,.35)}
/* back */
.c7-back{position:absolute;left:12px;top:12px;z-index:6;min-height:52px;padding:0 20px 0 14px;border:3px solid #fff;border-radius:99px;background:linear-gradient(180deg,#ff7ac6,#ff3d9e);color:#fff;font:900 17px Archivo,system-ui;display:flex;align-items:center;gap:6px;box-shadow:0 5px 0 #b0166a,0 10px 20px rgba(60,0,90,.35)}
.c7-back span{font-size:26px;line-height:0;margin-top:-3px}.c7-back[hidden]{display:none}
.c7-back:active{transform:translateY(3px);box-shadow:0 2px 0 #b0166a}
.xp .c7-back{left:calc(env(safe-area-inset-left) + 12px);top:calc(env(safe-area-inset-top) + 108px)}
.c7-zoomed .r3d-badge,.c7-zoomed .r3d-tip{opacity:0}
/* joystick */
.c7-joy{position:absolute;left:calc(env(safe-area-inset-left) + 14px);bottom:calc(env(safe-area-inset-bottom) + 140px);z-index:4;width:150px;height:150px;display:grid;place-items:center;transition:opacity .2s}
.c7-base{position:absolute;inset:14px;border-radius:50%;background:radial-gradient(circle at 50% 40%,rgba(255,255,255,.38),rgba(255,255,255,.14) 62%,rgba(255,255,255,.26));border:3px solid rgba(255,255,255,.85);box-shadow:inset 0 0 0 10px rgba(255,79,163,.18),0 8px 20px rgba(60,0,90,.3);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
.c7-base::before,.c7-base::after{content:'';position:absolute;left:50%;top:50%;width:8px;height:8px;border-top:3px solid rgba(255,255,255,.9);border-left:3px solid rgba(255,255,255,.9);transform:translate(-50%,-50%) translateY(-46px) rotate(45deg)}
.c7-base::after{transform:translate(-50%,-50%) translateY(46px) rotate(225deg)}
.c7-knob{position:relative;width:62px;height:62px;border-radius:50%;background:radial-gradient(circle at 40% 32%,#fff,#ffd1ea 45%,#ff5fb0);border:3px solid #fff;box-shadow:0 6px 0 #c01d78,0 10px 18px rgba(60,0,90,.4);transition:transform .22s cubic-bezier(.2,.9,.3,1.4)}
.c7-joy.on .c7-knob{transition:none;box-shadow:0 3px 0 #c01d78,0 6px 12px rgba(60,0,90,.4)}
.c7-joy.on .c7-base{background:radial-gradient(circle at 50% 40%,rgba(255,255,255,.5),rgba(255,120,200,.22) 62%,rgba(255,255,255,.3))}
.c7-joy small{position:absolute;bottom:-4px;left:0;right:0;text-align:center;color:#fff;font:900 10px Inter,system-ui;letter-spacing:.14em;text-shadow:0 1px 3px rgba(60,0,90,.7);pointer-events:none}
.c7-card .c7-joy,.xp-vr .c7,.c7-card .c7-btns{opacity:0;pointer-events:none}
.c7-used .xp-hint{opacity:0;transition:opacity .6s 2s}
/* settings */
.c7-set{position:absolute;right:calc(env(safe-area-inset-right) + 74px);top:calc(env(safe-area-inset-top) + 108px);z-index:7;width:min(260px,calc(100% - 100px));display:flex;flex-direction:column;gap:10px;padding:14px;border-radius:20px;background:#fff;color:var(--ink,#2a1450);box-shadow:0 0 0 3px var(--pink,#ff4fa3),0 14px 30px rgba(60,0,90,.4)}
.c7-set[hidden]{display:none}.c7-set>b{font:900 16px Archivo,system-ui}
.c7-row{display:flex;align-items:center;gap:10px;min-height:44px;font:700 13.5px Inter,system-ui}.c7-row span{flex:1}
.c7-row input[type=range]{flex:1.4;accent-color:#ff3d9e;height:32px}.c7-row em{font:800 12px Inter,system-ui;font-style:normal;width:34px;text-align:right}
.c7-tg input{position:absolute;opacity:0;pointer-events:none}.c7-tg i{width:50px;height:30px;border-radius:99px;background:#d8d2e6;position:relative;transition:background .2s}
.c7-tg i::after{content:'';position:absolute;left:3px;top:3px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 2px 4px rgba(0,0,0,.25);transition:transform .2s}
.c7-tg input:checked+i{background:#ff3d9e}.c7-tg input:checked+i::after{transform:translateX(20px)}
.c7-b2{min-height:48px;border:0;border-radius:14px;background:#f1ecfb;color:var(--ink,#2a1450);font:800 14px Archivo,system-ui}
.c7-b2:last-child{background:linear-gradient(180deg,#ff7ac6,#ff3d9e);color:#fff}
/* first-visit gestures overlay */
.c7-help{position:absolute;inset:0;z-index:9;display:grid;place-items:center;padding:calc(env(safe-area-inset-top) + 16px) 14px calc(env(safe-area-inset-bottom) + 16px);background:rgba(30,10,60,.62);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);overflow:auto;overscroll-behavior:contain}
.c7-help-in{width:min(360px,100%);display:flex;flex-direction:column;gap:12px;padding:18px 16px 16px;border-radius:26px;background:#fff;color:var(--ink,#2a1450);box-shadow:0 0 0 4px #ff4fa3,0 0 0 8px #fff,0 18px 40px rgba(0,0,0,.4)}
.c7-help-h{font:900 22px Archivo,system-ui;text-align:center}
.c7-help-g{display:flex;flex-direction:column;gap:9px}
.c7-hr{display:flex;align-items:center;gap:12px}.c7-hr span{display:flex;flex-direction:column}.c7-hr b{font:900 15px Archivo,system-ui}.c7-hr small{font:600 12.5px/1.3 Inter,system-ui;color:#5b4a7a}
.c7g{flex:none;position:relative;width:52px;height:52px;border-radius:16px;background:linear-gradient(180deg,#f3ecff,#e2d6ff);box-shadow:inset 0 -3px 0 rgba(90,30,140,.15);overflow:hidden}
.c7g em{position:absolute;left:50%;top:50%;width:18px;height:18px;margin:-9px;border-radius:50%;background:#ff3d9e;box-shadow:0 0 0 5px rgba(255,61,158,.25)}
.c7g-joy::before{content:'';position:absolute;inset:9px;border-radius:50%;border:3px solid #b9a8ff}.c7g-joy em{animation:c7joy 2.2s ease-in-out infinite}
.c7g-drag em{animation:c7drag 1.8s ease-in-out infinite}.c7g-drag::before{content:'↔';position:absolute;left:0;right:0;bottom:2px;text-align:center;font:900 13px Inter;color:#7b3cff}
.c7g-tap::before{content:'';position:absolute;left:50%;top:62%;width:30px;height:10px;margin-left:-15px;border-radius:50%;border:3px solid #ff3d9e;animation:c7ring 1.4s ease-out infinite}.c7g-tap em{top:36%;animation:c7tap 1.4s ease-in-out infinite}
.c7g-obj::before{content:'✦';position:absolute;inset:0;display:grid;place-items:center;font:900 26px Archivo;color:#ffb21e}.c7g-obj em{width:14px;height:14px;margin:-7px;left:66%;top:66%;animation:c7tap 1.4s ease-in-out infinite}
.c7g-chip::before{content:'';position:absolute;left:6px;right:6px;top:18px;height:16px;border-radius:99px;background:linear-gradient(180deg,#ff7ac6,#ff3d9e)}.c7g-chip em{display:none}
.c7g-reset::before{content:'⟲';position:absolute;inset:0;display:grid;place-items:center;font:900 28px Archivo;color:#7b3cff}.c7g-reset em{display:none}
.c7g-pinch em{animation:c7pa 1.6s ease-in-out infinite}.c7g-pinch::after{content:'';position:absolute;left:50%;top:50%;width:14px;height:14px;margin:-7px;border-radius:50%;background:#7b3cff;animation:c7pb 1.6s ease-in-out infinite}
@keyframes c7joy{0%,100%{transform:none}25%{transform:translate(0,-11px)}50%{transform:translate(11px,0)}75%{transform:translate(-8px,6px)}}
@keyframes c7drag{0%,100%{transform:translateX(-12px)}50%{transform:translateX(12px)}}
@keyframes c7tap{0%,60%,100%{transform:scale(1)}30%{transform:scale(.7)}}
@keyframes c7ring{0%{transform:scale(.4);opacity:1}100%{transform:scale(1.4);opacity:0}}
@keyframes c7pa{0%,100%{transform:translate(-5px,-5px)}50%{transform:translate(-13px,-13px)}}
@keyframes c7pb{0%,100%{transform:translate(5px,5px)}50%{transform:translate(13px,13px)}}
.c7-ok{min-height:54px;border:3px solid #fff;border-radius:18px;background:linear-gradient(180deg,#ffe066,#ffb21e);color:#4a2400;font:900 18px Archivo,system-ui;box-shadow:0 0 0 3px #ffb21e,0 6px 0 #c26a00}
.c7-ok:active{transform:translateY(3px);box-shadow:0 0 0 3px #ffb21e,0 3px 0 #c26a00}
.c7-help-f{text-align:center;font:600 12px Inter,system-ui;color:#7a6a96}
.r3d-stage .c7-help{border-radius:inherit;padding:12px}.r3d-stage .c7-help-in{gap:9px;padding:14px 14px 12px}.r3d-stage .c7-help-h{font-size:19px}.r3d-stage .c7g{width:44px;height:44px}
@media (prefers-reduced-motion:reduce){.c7g em,.c7g::before,.c7g::after{animation:none!important}}
