/* Layout-preserving feedback shared by controls in both invitation styles. */
body :is(button,.button,summary,input,textarea,select,a){transition:background-color 160ms ease,border-color 160ms ease,box-shadow 180ms ease,color 160ms ease,opacity 160ms ease}
body :is(button,.button,summary):not(:disabled):active{scale:.97}
body dialog :is(input,textarea,select):focus-visible{box-shadow:0 0 0 4px #c6b4df28;transition:box-shadow 180ms ease,border-color 180ms ease}
body dialog .choices label{transition:background-color 180ms ease,border-color 180ms ease,box-shadow 180ms ease,color 180ms ease}
body dialog .consent{transition:color 180ms ease}
body dialog .consent:has(input:checked){color:var(--glass-ink)}
body dialog input:is([type=checkbox],[type=radio]){cursor:pointer;transition:accent-color 160ms ease,box-shadow 160ms ease}
body dialog summary::marker{color:inherit}
body :is(button,.button):disabled{opacity:.5;cursor:default}
body dialog [data-dialog-start]:focus{outline:none}
@media(hover:hover){body dialog :is(button,.button,summary):not(:disabled):hover{filter:brightness(1.06)}}
@media(prefers-reduced-motion:reduce){body :is(button,.button,summary,input,textarea,select,a),body dialog .choices label,body dialog .consent{transition:none!important}body :is(button,.button,summary):active{scale:1}}

/* Character generation keeps its layout stable while the atlas is prepared. */
.avatar-choice{margin:18px 0}.avatar-choice .choices{display:flex;flex-wrap:wrap;gap:6px}.avatar-choice .choices label{flex:1 1 90px;font-size:12px!important;padding:9px!important}.character-prompt,.character-customize label{display:grid;gap:8px;margin:12px 0}.character-loading{padding:20px 12px;text-align:center;border:1px solid #ffffff24;border-radius:20px;background:#ffffff0b;margin-top:12px}.character-loading[hidden]{display:none}.character-spinner{display:inline-block;width:28px;height:28px;border:2px solid #ffffff30;border-top-color:#b9a6de;border-radius:50%;animation:character-spin 1s linear infinite}.character-customize{margin:14px 0}.character-customize summary{font-size:12px;cursor:pointer;line-height:1.6}.character-customize .consent{display:flex}.character-customize button{margin-top:8px}.avatar-choice textarea,.character-customize textarea{width:100%;box-sizing:border-box}#avatar-fields .avatar-preview{min-height:108px}#avatar-fields[aria-busy=true] .sprite{opacity:.5}@keyframes character-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.character-spinner{animation:none}}

.avatar-choice [hidden],.character-customize [hidden]{display:none!important}
