/* Only play surfaces suppress selection/callouts. Links, settings and post text remain normal. */
#game,.touch-controls,.touch-controls *,.hud,.stage-top,.stage-bottom,#countdown,#mechanic-hud,#judgement{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
#game,.touch-controls button{touch-action:none;-webkit-user-drag:none}
.touch-controls{left:max(10px,env(safe-area-inset-left));right:max(10px,env(safe-area-inset-right));bottom:24px;z-index:4;gap:8px}
.touch-controls button{position:relative;display:grid;place-items:center;flex:0 0 104px;width:104px;height:104px;min-width:104px;min-height:104px;padding:0;border:0;border-radius:28px;background:transparent;color:#d8e9e1;outline-offset:-7px}
.touch-controls button::before{content:"";position:absolute;inset:16px;border:2px solid #c5dfd474;border-radius:50%;background:#0c1a25ed;box-shadow:0 4px 20px #0005;transition:background .08s,border-color .08s,box-shadow .08s}
.touch-controls button .control-arrow{position:relative;display:block;opacity:1;font-size:32px;font-weight:600;line-height:1;letter-spacing:0;color:inherit;pointer-events:none}
.touch-controls button.is-held{color:#fff}.touch-controls button.is-held::before{border-color:var(--accent);background:rgba(var(--rgb),.34);box-shadow:0 0 0 5px rgba(var(--rgb),.1),0 0 26px rgba(var(--rgb),.28)}
.touch-controls button:focus-visible{outline:2px solid var(--accent)}
.touch-controls>#control-tip{position:relative;opacity:1;flex:1;max-width:220px;text-align:center;font-size:11px;font-weight:600;letter-spacing:.2px;line-height:1.65;color:#e3ece7;text-shadow:0 1px 6px #000}
.touch-controls>#control-tip[hidden]{display:none}
@media(max-width:720px){body.playing .touch-controls{bottom:calc(12px + env(safe-area-inset-bottom));left:max(10px,env(safe-area-inset-left));right:max(10px,env(safe-area-inset-right))}}
@media(prefers-reduced-motion:reduce){.touch-controls button::before{transition:none}}
