.icon{vertical-align:middle;flex-shrink:0;display:inline-block}.spinner{border:2px solid #ffffff40;border-top-color:#fff;border-radius:50%;animation:.7s linear infinite spin;display:inline-block}.spinner--dark{border-color:#8f224a40;border-top-color:var(--brand-secondary)}.modal-overlay{z-index:1000;animation:fadeIn var(--dur-fast) var(--ease-out) both;background:#000000b8;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal-panel{background:var(--bg-alt-3);border-radius:var(--radius-tile);width:100%;max-width:480px;max-height:min(88vh,880px);animation:fadeUp var(--dur-med) var(--ease-out) both;border:1px solid #333;flex-direction:column;display:flex;box-shadow:0 24px 64px #0000008c}.modal-panel--wide{max-width:720px}.modal-header{border-bottom:1px solid #2c2c2c;flex-shrink:0;justify-content:space-between;align-items:center;gap:16px;padding:20px 24px 16px;display:flex}.modal-title{letter-spacing:1px;margin:0;font-size:18px;font-weight:600}.modal-close{color:var(--text-faint);transition:color var(--dur-fast) var(--ease-out);background:0 0;border:none;padding:6px;display:flex}.modal-close:hover{color:#fff}.modal-body{overscroll-behavior:contain;flex:auto;min-height:0;padding:20px 24px;overflow-y:auto}.modal-footer{background:var(--bg-alt-3);border-top:1px solid #2c2c2c;flex-shrink:0;justify-content:flex-end;gap:12px;padding:16px 24px 20px;display:flex}.modal-actions{justify-content:flex-end;gap:12px;margin-top:24px;display:flex}@media (width<=768px){.modal-overlay{padding:16px}.modal-panel{max-height:90vh}.modal-header{padding:16px 18px 14px}.modal-body{padding:16px 18px}.modal-footer{padding:14px 18px 16px}}@media (width<=375px){.modal-overlay{align-items:flex-end;padding:10px}.modal-panel{border-radius:var(--radius-tile) var(--radius-tile) 0 0;max-width:100%;max-height:94vh}}.toast-stack{z-index:2000;flex-direction:column;gap:10px;max-width:340px;display:flex;position:fixed;top:20px;right:20px}.toast{border-radius:var(--radius-small);color:#fff;letter-spacing:.5px;animation:toastIn var(--dur-med) var(--ease-out) both;align-items:center;gap:10px;padding:12px 16px;font-size:13px;display:flex}.toast--success{background:var(--success)}.toast--error{background:var(--error)}.toast-message{flex:1}.toast-close{color:#fffc;background:0 0;border:none;padding:2px;display:flex}.toast-close:hover{color:#fff}.brand-logo{transition:opacity var(--dur-fast) var(--ease-out);align-items:center;line-height:0;display:inline-flex}.brand-logo:hover{opacity:.82}.brand-logo-img{object-fit:contain;display:block}.brand-logo--header .brand-logo-img{width:auto;height:52px}.brand-logo--auth .brand-logo-img{width:auto;height:64px}.brand-logo--footer .brand-logo-img{width:auto;height:44px}
