/* Short transitions acknowledge input without postponing clicks or focus. */
button{position:relative;transition:background-color 130ms ease,border-color 130ms ease,color 130ms ease,opacity 130ms ease,transform 100ms ease;touch-action:manipulation}
button:not(:disabled):active{transform:translateY(1px)}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--muted);outline-offset:3px}
button[aria-busy=true]{cursor:progress;opacity:.68}
button[aria-busy=true]::after{content:"";position:absolute;width:9px;height:9px;right:5px;top:5px;border:1.5px solid currentColor;border-right-color:transparent;border-radius:50%;animation:feedback-turn .7s linear infinite}
dialog[open]{animation:dialog-enter 160ms cubic-bezier(.2,.7,.3,1) both}
dialog.is-closing{animation:dialog-leave 130ms ease-in both;pointer-events:none}
dialog[open]::backdrop{animation:backdrop-enter 160ms ease-out both}
dialog.is-closing::backdrop{animation:backdrop-leave 130ms ease-in both}
.menu{animation:menu-enter 120ms ease-out both}
.tabs button{min-height:40px}.item-dialog .modal-foot{gap:10px;align-items:center}
.item-tools{display:flex;flex-wrap:wrap;gap:10px;flex-basis:100%;padding-bottom:12px;margin-bottom:2px;border-bottom:1px solid var(--line)}
.item-dialog .modal-foot>button.primary{margin-left:auto;min-width:130px}
.item-dialog .modal-body>.muted:first-child{margin-top:0;line-height:1.7}
@keyframes feedback-turn{to{transform:rotate(360deg)}}
/* Transforming a dialog changes the containing block of fixed fallback notices. */
@keyframes dialog-enter{from{opacity:0}to{opacity:1}}
@keyframes dialog-leave{from{opacity:1}to{opacity:0}}
@keyframes backdrop-enter{from{opacity:0}to{opacity:1}}
@keyframes backdrop-leave{from{opacity:1}to{opacity:0}}
@keyframes menu-enter{from{opacity:0}to{opacity:1}}
@media(max-width:759px){.item-dialog .modal-foot{gap:8px}.item-tools{gap:8px;padding-bottom:10px}.item-tools>button{flex:1 1 100px;min-width:0}.item-dialog .modal-foot>button.primary{flex:1 1 100%;margin-left:0;min-height:46px}}
.mobile .item-dialog .item-tools{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;min-width:0}
.mobile .item-dialog .item-tools>button{width:100%;min-width:0;min-height:44px;font-size:13px;line-height:1.4;padding:10px 8px}
.mobile .item-dialog .item-tools>button:last-child:nth-child(odd){grid-column:1/-1}
.mobile .item-dialog .modal-foot>button.primary{grid-column:auto;justify-self:stretch;width:100%;min-width:0;margin:0}
@media(prefers-reduced-motion:reduce){button,dialog[open],dialog.is-closing,dialog::backdrop,.menu{animation:none!important;transition:none!important;transform:none!important}button[aria-busy=true]::after{animation:none}}
.eda-link-dialog .eda-live-status{padding:12px 14px;border:1px solid var(--border,#777);border-radius:10px;line-height:1.6;font-weight:600}
.eda-link-dialog .eda-pair-code{font-size:clamp(26px,7vw,36px);font-family:ui-monospace,monospace;letter-spacing:.12em;text-align:center;padding:14px 8px;font-weight:700}
.eda-link-dialog .eda-pair-code.expired{opacity:.45}
.eda-link-dialog select{width:100%;min-height:44px}
