/* Shared action depth. Keep theme colors, control geometry and hit targets. */
:root{--control-edge:#0003;--control-ambient:#0002;--control-highlight:#ffffff30;--control-ease:cubic-bezier(.2,.7,.3,1)}
:root[data-theme="dark"]{--control-edge:#0007;--control-ambient:#0004;--control-highlight:#ffffff24}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]){--control-edge:#0007;--control-ambient:#0004;--control-highlight:#ffffff24}}
.btn,.back,.modal-step-btn,#refresh,#addrig,#newoc,#newsheet,.modal-f .btn.primary,.saved-sheet .saved-sheet-launch{
 box-shadow:inset 0 1px 0 var(--control-highlight),inset 0 -1px 0 #0002,0 3px 0 var(--control-edge),0 5px 10px var(--control-ambient);
 transition:transform 130ms var(--control-ease),box-shadow 130ms var(--control-ease),border-color 130ms ease,background-color 130ms ease;
}
@media(hover:hover) and (pointer:fine){
 .btn:where(:not(:disabled):not([aria-disabled="true"]):not([data-busy="1"])):hover,.back:where(:not([aria-disabled="true"])):hover,:is(#refresh,#addrig,#newoc,#newsheet):where(:not(:disabled):not([data-busy="1"])):hover,.modal-f .btn.primary:where(:not(:disabled)):hover{
  transform:translateY(-1px);box-shadow:inset 0 1px 0 var(--control-highlight),0 4px 0 var(--control-edge),0 7px 14px var(--control-ambient);
 }
}
.btn:where(:not(:disabled):not([aria-disabled="true"]):not([data-busy="1"])):active,.back:where(:not([aria-disabled="true"])):active,:is(#refresh,#addrig,#newoc,#newsheet):where(:not(:disabled):not([data-busy="1"])):active,.modal-f .btn.primary:where(:not(:disabled)):active{
 transform:translateY(2px);box-shadow:inset 0 2px 3px #0003,0 1px 0 var(--control-edge);
}
.btn:focus-visible,.back:focus-visible,.modal-step-btn:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
:root .btn.danger{color:var(--fg);border-color:var(--bad)}
.btn[aria-disabled="true"],.back[aria-disabled="true"]{opacity:.5}
.btn:disabled,.btn[aria-disabled="true"],.back[aria-disabled="true"],:is(#refresh,#addrig,#newoc,#newsheet):disabled,.modal-f .btn.primary:disabled{
 transform:none;box-shadow:inset 0 1px 0 #ffffff0c;cursor:not-allowed;
}
/* Navigation, chips and inline device affordances remain quiet and stable. */
.btn:is(.tab,.tag,.saved-sheet-favorite,.gpu-oc-name),.btn:is(.tab,.tag,.saved-sheet-favorite,.gpu-oc-name):hover,.btn:is(.tab,.tag,.saved-sheet-favorite,.gpu-oc-name):active,.saved-sheet-address .btn,.saved-sheet-menu-items .btn{
 transform:none;box-shadow:none;
}
.modal-step-btn{box-shadow:inset 0 1px 0 var(--control-highlight);transform:none}
/* The chassis must not rotate: only the independent loading indicator spins. */
.btn.icon[data-busy="1"],.btn.icon[data-busy="1"]:hover{
 position:relative;animation:none;transform:none;color:transparent;cursor:progress;
}
.btn.icon[data-busy="1"]::after{
 content:"";position:absolute;left:50%;top:50%;width:14px;height:14px;margin:-9px 0 0 -9px;
 border:2px solid var(--fg);border-top-color:transparent;border-radius:50%;pointer-events:none;
 animation:control-spin 800ms linear infinite;
}
#refresh[data-busy="1"]::after{border-color:#fff;border-top-color:transparent}
@keyframes control-spin{to{transform:rotate(360deg)}}
@keyframes control-enter{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
@keyframes control-fade{from{opacity:0}to{opacity:1}}
.modal-back{animation:control-fade 120ms ease-out}
.modal{animation:control-enter 160ms var(--control-ease)}
.toast{animation:control-enter 160ms var(--control-ease)}
/* No chart/telemetry/list entrance animation: refresh must not move the park. */
@media(prefers-reduced-motion:reduce){
 .btn,.back,.modal-step-btn{transition:none!important;transform:none!important}
 .modal-back,.modal,.toast,.btn.icon[data-busy="1"]::after{animation:none!important}
}
@media(forced-colors:active){
 .btn,.back,.modal-step-btn,#refresh,#addrig,#newoc,#newsheet,.modal-f .btn.primary{box-shadow:none}
 .btn.icon[data-busy="1"]::after,#refresh[data-busy="1"]::after{border-color:ButtonText;border-top-color:transparent}
}
