/* Kinetics timing with ATSUMARU's restrained motion and colours. */
[data-glide] { position:relative; isolation:isolate; }
[data-glide] > button { position:relative; z-index:1; }
.ui-glide-pill { position:absolute; left:0; top:0; pointer-events:none; border-radius:999px; background:var(--brand-primary,#746055); transition:transform .4s cubic-bezier(.65,0,.35,1),width .4s cubic-bezier(.65,0,.35,1); }
[data-glide-ready] > button.active,[data-glide-ready] > button[aria-pressed=true] { background:transparent !important; box-shadow:none !important; color:white; }
[data-ui-state] { position:relative; }
[data-ui-state=loading] { cursor:wait; }
[data-ui-state=loading]::after { content:' ···'; display:inline-block; animation:ui-submit .6s ease-in-out infinite; }
[data-ui-state=success]::after,[data-ui-state=copied]::after { content:' ✓'; display:inline-block; animation:ui-check .4s cubic-bezier(.34,1.56,.64,1); }
[data-ui-state=error],.ui-copy-error { color:var(--danger,#a33e37); }
.ui-copy-error { display:block; font-size:.85rem; }
.ui-copy-button { display:inline-flex; align-items:center; justify-content:center; min-height:44px; min-width:88px; padding:7px 12px; margin:4px 6px; border:1px solid var(--border,#d9cabe); border-radius:999px; background:var(--surface-alt,#fff); color:var(--text-main,#44372f); font:inherit; font-size:.85rem; cursor:pointer; }
.ui-copy-button[data-ui-state=copied] { color:var(--success,#4b6745); transition:color .2s; }
.status-chip { transition:background-color .35s,border-color .35s,color .35s; }
.ui-load-status { padding:12px 16px; border-radius:12px; background:var(--surface,#f5f0ea); color:var(--text-muted,#6c5b50); }
.ui-load-status[data-state=loading] { background:linear-gradient(90deg,#f5f0ea 25%,#e9dfd4 50%,#f5f0ea 75%); background-size:200% 100%; animation:ui-shimmer 1.4s ease-in-out infinite; }
.ui-load-status[data-state=error] { color:var(--danger,#a33e37); }
@keyframes ui-shimmer { from { background-position:200% 0; } to { background-position:-200% 0; } }
@keyframes ui-submit { 50% { transform:translateY(-2px); } }
@keyframes ui-check { from { opacity:0; transform:scale(.8); } to { opacity:1; transform:scale(1); } }
/* Number Counter / Badge Counter: a changed value springs once (--bump-scale per element). */
[data-bump] { transition:transform .4s cubic-bezier(.34,1.56,.64,1); }
[data-bump].ui-bump { transform:scale(var(--bump-scale,1.12)); }
/* Error Shake: the first invalid field (or the slot grid) shakes on a failed submit. */
.ui-shake { animation:ui-shake .45s cubic-bezier(.36,.07,.19,.97) both; }
@keyframes ui-shake { 10%,90% { transform:translateX(-1px); } 20%,80% { transform:translateX(2px); } 30%,50%,70% { transform:translateX(-4px); } 40%,60% { transform:translateX(4px); } }
@media (prefers-reduced-motion:reduce) { .ui-glide-pill,[data-ui-state]::after,.status-chip,.ui-load-status,[data-bump],.ui-shake { animation:none !important; transition:none !important; } }
