/* Optional personal skin overrides. Theme tokens live in theme.css. */
.login-spinner { display:inline-block; width:16px; height:16px; flex:none; border:2px solid currentColor; border-right-color:transparent; border-radius:50%; animation:login-spin .8s linear infinite; }
@keyframes login-spin { to { transform:rotate(360deg); } }
#unlock-error:not(:empty) { padding:10px; color:#963d58; background:#fff1f3; border:1px solid #e6afbe; border-radius:4px; }
.model-progress { position:absolute; right:12px; bottom:12px; z-index:3; max-width:calc(100% - 24px); padding:7px 10px; background:#fffdf5ed; color:#644b58; border:1px solid #d9c4cd; border-radius:6px; font:12px/1.5 system-ui,sans-serif; pointer-events:none; }
.book-loading { min-height:320px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:12px; padding:24px; text-align:center; color:var(--text-body); }
.book-loading .login-spinner { width:28px; height:28px; }
