/* Fast taps, intentional press states and native text editing where it matters. */
html,body{touch-action:manipulation}
body{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
button,a,input,textarea,select{touch-action:manipulation}
button,button *,#party-canvas{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}
#hold-button,#party-canvas{touch-action:none}
input,textarea,select,[contenteditable]:not([contenteditable="false"]),a[href]{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}
button{transition:transform .08s ease-out,background-color .12s,box-shadow .08s,filter .08s}
button:not(:disabled):active,button[data-pressed=true]:not(:disabled){transform:translateY(2px);filter:brightness(.94)}
:is(.primary-button,.secondary-button,.small-button,.main-action,.icon-button,.random-name,.voice-button):not(:disabled):active,
:is(.primary-button,.secondary-button,.small-button,.main-action,.icon-button,.random-name,.voice-button)[data-pressed=true]:not(:disabled){box-shadow:0 1px 0 var(--ink,#352b42)}
#hold-button[data-held=true]:not(:disabled){transform:translateY(3px);filter:brightness(.94);box-shadow:0 1px 0 var(--ink,#352b42)}
button:disabled{filter:none}
button:focus-visible{outline:3px solid #7141d9;outline-offset:3px}
@media(hover:none){
  button:not(:active):not([data-pressed=true]):not([data-held=true]){transform:none}
}
@media(max-width:700px),(hover:none) and (pointer:coarse){
  input,textarea,select{font-size:16px!important}
  .hostess-bubble{display:none!important}
  /* Keep the catch announcement accessible, with visual feedback in the broom
     animation, score and hold button instead of over Lily's face/body. */
  .stage-feedback{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0;box-shadow:none;animation:none}
}
@media(prefers-reduced-motion:reduce){button{transition:none}}
