/* unsaved changes bar */
.savebar{position:fixed;left:50%;bottom:18px;z-index:90;display:flex;align-items:center;gap:18px;justify-content:space-between;
  width:min(640px,calc(100vw - 32px));padding:10px 10px 10px 18px;border-radius:12px;background:#0b0c0e;border:1px solid var(--border3);
  box-shadow:0 20px 50px -10px #000,0 0 0 1px #00000080;transform:translate(-50%,140%);opacity:0;transition:transform .28s cubic-bezier(.2,.9,.3,1.15),opacity .2s;pointer-events:none}
.savebar.show{transform:translate(-50%,0);opacity:1;pointer-events:auto}
.savebar span{color:var(--text2);font-size:13.5px}.savebar b{color:var(--text);font-weight:600}
.savebar>div{display:flex;gap:6px}
.savebar.shake{animation:shake .45s;border-color:#f87171a0;background:#1a0d0e}
@keyframes shake{0%,100%{transform:translate(-50%,0)}20%{transform:translate(calc(-50% - 8px),0)}40%{transform:translate(calc(-50% + 8px),0)}60%{transform:translate(calc(-50% - 5px),0)}80%{transform:translate(calc(-50% + 5px),0)}}
.toast{bottom:84px}

/* loading buttons */
.btn.loading{position:relative;color:transparent!important;pointer-events:none}
.btn.loading svg{opacity:0}
.btn.loading::after{content:'';position:absolute;width:14px;height:14px;border-radius:50%;border:2px solid currentColor;border-color:var(--text) var(--text) transparent transparent;animation:spin .6s linear infinite}
.btn.primary.loading::after{border-color:var(--accent-ink) var(--accent-ink) transparent transparent}
@keyframes spin{to{transform:rotate(360deg)}}

/* page content fades in */
.content{animation:pagein .22s ease-out}
@keyframes pagein{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.content,.savebar,.savebar.shake{animation:none;transition:none}}

/* inline tags inside row descriptions */
.row .k span span,.row .k span a{display:inline;margin:0}
