/* Shared feedback preserves each module's button colors, type and shape. */
:is(body,:where(#ros-web-surface)) .ros-action-button.ros-action-button{position:relative;overflow:visible;isolation:isolate}
:is(body,:where(#ros-web-surface)) .ros-action-button:focus-visible{outline:2px solid #75b5ff;outline-offset:5px}
:is(body,:where(#ros-web-surface)) .ros-action-button>.ros-action-orbit{display:none!important;position:absolute;inset:-5px;width:calc(100% + 10px)!important;height:calc(100% + 10px)!important;max-width:none;overflow:visible;pointer-events:none;fill:none}
:is(body,:where(#ros-web-surface)) .ros-action-button.ros-action-dirty>.ros-action-orbit{display:block!important}
:is(body,:where(#ros-web-surface)) .ros-action-button[data-ros-action-kind=create].ros-action-busy>.ros-action-orbit{display:block!important}
:is(body,:where(#ros-web-surface)) .ros-action-button>.ros-action-orbit rect{width:calc(100% - 4px);height:calc(100% - 4px);fill:none;stroke:#13b8a6;stroke-width:3;stroke-linecap:round;stroke-dasharray:18 82;animation:ros-action-orbit 3.2s linear infinite;animation-play-state:paused}
:is(body,:where(#ros-web-surface)) .ros-action-button[data-ros-action-kind=create]>.ros-action-orbit rect{stroke:#59baff}
:is(body,:where(#ros-web-surface)) .ros-action-button>.ros-action-orbit rect+rect{stroke:#e4ad45;animation-delay:-1.6s}
:is(body,:where(#ros-web-surface)) .ros-action-button.ros-action-visible>.ros-action-orbit rect{animation-play-state:running}
:is(body,:where(#ros-web-surface)) .ros-action-button.ros-action-busy::before{content:'';display:inline-block;box-sizing:border-box;width:13px;height:13px;flex:0 0 13px;margin-right:7px;vertical-align:-2px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:ros-action-spin .8s linear infinite;animation-play-state:paused}
:is(body,:where(#ros-web-surface)) .ros-action-button.ros-action-busy.ros-action-visible::before{animation-play-state:running}
@property --ros-action-angle{syntax:'<angle>';inherits:false;initial-value:0deg}
:is(body,:where(#ros-web-surface)) input.ros-action-button{--ros-action-trail:#13b8a6}
:is(body,:where(#ros-web-surface)) input.ros-action-button[data-ros-action-kind=create]{--ros-action-trail:#59baff}
:is(body,:where(#ros-web-surface)) input.ros-action-button.ros-action-dirty{border-image:conic-gradient(from var(--ros-action-angle),var(--ros-action-trail) 0 18%,transparent 18% 50%,#e4ad45 50% 68%,transparent 68%) 1 / 2px / 3px!important}
:is(body,:where(#ros-web-surface)) input.ros-action-button.ros-action-dirty.ros-action-visible{animation:ros-action-input-orbit 3.2s linear infinite!important}
:is(body,:where(#ros-web-surface)) input.ros-action-button.ros-action-busy{background-image:var(--ros-action-input-loader),var(--ros-action-input-image,none)!important;background-position:7px center,var(--ros-action-input-position,0% 0%)!important;background-repeat:no-repeat,var(--ros-action-input-repeat,repeat)!important;background-size:13px 13px,var(--ros-action-input-size,auto)!important;padding-left:27px!important}
:is(body,:where(#ros-web-surface)) input.ros-action-button.ros-action-busy:not(.ros-action-visible){background-image:linear-gradient(transparent,transparent),var(--ros-action-input-image,none)!important}
:is(body,:where(#ros-web-surface)) .ros-action-button>:is(.ros-phone-save-orbit,.ros-ew-orbit,.rwa-save-orbit,.ros-whitelist-orbit,.ros-ew-spinner,.ros-assistant-order-spinner){display:none!important}
:is(body,:where(#ros-web-surface)) .ros-action-button.ros-phone-loading::after,:is(body,:where(#ros-web-surface)) .ros-whitelist-editor .ros-action-button.is-saving::after{display:none!important}
:is(body,:where(#ros-web-surface)) .ros-whitelist-editor .ros-action-button[data-wl-save]{padding-right:8px}
:is(body,:where(#ros-web-surface)) .ros-action-button.ros-action-button{animation:none!important}
:is(body,:where(#ros-web-surface)) .ros-action-button.ros-action-busy{cursor:wait}
html:has(body) body .ros-action-button[hidden]{display:none!important}
:is(body,:where(#ros-web-surface)) [hidden] .ros-action-button>.ros-action-orbit rect,:is(body,:where(#ros-web-surface)) [hidden] .ros-action-button::before{animation-play-state:paused!important}
@keyframes ros-action-orbit{to{stroke-dashoffset:-100}}
@keyframes ros-action-spin{to{transform:rotate(360deg)}}
/* Persisted switches retain their pill, icon, color and native input. */
:is(body,:where(#ros-web-surface)) .ros-action-switch{position:relative!important;overflow:visible!important}
:is(body,:where(#ros-web-surface)) .ros-action-switch>.ros-action-orbit{display:none!important;position:absolute;inset:-5px;width:calc(100% + 10px)!important;height:calc(100% + 10px)!important;max-width:none;overflow:visible;pointer-events:none;fill:none}
:is(body,:where(#ros-web-surface)) .ros-action-switch.ros-action-busy>.ros-action-orbit{display:block!important}
:is(body,:where(#ros-web-surface)) .ros-action-switch>.ros-action-orbit rect{width:calc(100% - 4px);height:calc(100% - 4px);rx:14px;fill:none;stroke:#36b3a0;stroke-width:2;stroke-linecap:round;stroke-dasharray:18 82;animation:ros-action-orbit 2s linear infinite;animation-play-state:paused}
:is(body,:where(#ros-web-surface)) .ros-action-switch>.ros-action-orbit rect+rect{stroke:#8e9edb;animation-delay:-1s}
:is(body,:where(#ros-web-surface)) .ros-action-switch.ros-action-visible>.ros-action-orbit rect{animation-play-state:running}
:is(body,:where(#ros-web-surface)) .ros-action-switch.ros-action-busy{cursor:progress}
:is(body,:where(#ros-web-surface)) [hidden] .ros-action-switch>.ros-action-orbit rect{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){:is(body,:where(#ros-web-surface)) .ros-action-switch>.ros-action-orbit rect{animation:none!important;stroke-dasharray:none}:is(body,:where(#ros-web-surface)) .ros-action-switch>.ros-action-orbit rect+rect{display:none}}
@keyframes ros-action-input-orbit{to{--ros-action-angle:360deg}}
@media(prefers-reduced-motion:reduce){:is(body,:where(#ros-web-surface)) .ros-action-button>.ros-action-orbit rect,:is(body,:where(#ros-web-surface)) .ros-action-button.ros-action-busy::before{animation:none!important}:is(body,:where(#ros-web-surface)) .ros-action-button>.ros-action-orbit rect{stroke-dasharray:none}:is(body,:where(#ros-web-surface)) .ros-action-button>.ros-action-orbit rect+rect{display:none}:is(body,:where(#ros-web-surface)) .ros-action-button.ros-action-busy::before{border-style:dotted}}
@media(prefers-reduced-motion:reduce){:is(body,:where(#ros-web-surface)) input.ros-action-button.ros-action-dirty.ros-action-visible{animation:none!important}:is(body,:where(#ros-web-surface)) input.ros-action-button.ros-action-busy{background-image:var(--ros-action-input-static-loader),var(--ros-action-input-image,none)!important}}
